Реализовать интерфейс геометрическая фигура - C#
Формулировка задачи:
Всем привет. Есть такая задача
Создать классы квадратов и окружностей, реализующие общий интерфейс «Геометрические фигуры»:
Интерфейс должен определять следующие элементы: свойство, возвращающее площадь фигуры, метод вывода информации, и наследовать интерфейс IComparable для сравнения фигур по типу.
Класс квадратов должен содержать следующие элементы: поле-сторону квадрата, конструктор, реализованные элементы интерфейса, метод вычисления периметра. Класс кругов должен содержать следующие элементы: поля - радиус, цвет фигуры, конструктор, реализованные элементы интерфейса.
Создать класс-контейнер для фигур, содержащий поле-массив фигур (ссылок интерфейсного типа), конструктор, методы для сортировки по площади и по типу фигуры, а также реализующий интерфейс IEnumerable.
Дополнительно создать класс , реализующий интерфейс IComparer. Использовать объект класса для сортировки фигур по площади.
В классе Program создать объект класса-контейнера с информацией о двух кругах и двух квадратах. Вывести информацию о фигурах, используя для просмотра содержимого контейнера оператор foreach. Сортировать информацию по типу. Сортировать информацию по площадям фигур.
Написал почти весь код, только осталась проблема с сортировкой по типу. Не понимаю как реализовать метод интерфейса IComparable.
Фал с кодом прикреплён. помогите если не сложно. Буду благодарен
Решение задачи: «Реализовать интерфейс геометрическая фигура»
textual
Листинг программы
- interface IGeometricFigure : IComparable
- {
- double Area{get;}
- void Show();
- }
- class ArrayOfFigures: IEnumerable
- {
- IGeometricFigure[] geometricFigure;
- public ArrayOfFigures(params IGeometricFigure[] gf)
- {
- geometricFigure = gf;
- }
- IEnumerator IEnumerable.GetEnumerator()
- {
- return geometricFigure.GetEnumerator();
- }
- public void SortArea()
- {
- Array.Sort(geometricFigure, new AreaComparer());
- }
- public void SortType()
- {
- Array.Sort(geometricFigure, new TypeComparer());
- }
- }
- class Circle:IGeometricFigure
- {
- double radius;
- Color colour;
- static TypeComparer TypeComparer = new TypeComparer();
- public Circle(double r, Color c)
- {
- radius = r;
- colour = c;
- }
- public double Area
- {
- get { return Math.PI*radius*radius; }
- }
- public override string ToString()
- {
- return "Круг с радиусом " + radius + "\r\nПлощадь круга равна " + Area + "\r\nЦвет круга - " + colour;
- }
- public void Show()
- {
- Console.WriteLine(ToString());
- }
- public int CompareTo(object obj)
- {
- return TypeComparer.Compare(this, obj);
- }
- }
- class Square:IGeometricFigure
- {
- double side;
- static TypeComparer TypeComparer = new TypeComparer();
- public Square(int side)
- {
- this.side = side;
- }
- public double Perimeter()
- {
- return 4 * side;
- }
- public double Area
- {
- get { return side * side; }
- }
- public override string ToString()
- {
- return "Квадрат со стороной " + side + "\r\nПлощадь квадрата равна " + Area + "\r\nПериметр квадрата равен " + Perimeter();
- }
- public void Show()
- {
- Console.WriteLine(ToString());
- }
- public int CompareTo(object obj)
- {
- return TypeComparer.Compare(this, obj);
- }
- }
- class AreaComparer : IComparer
- {
- public int Compare(object x, object y)
- {
- IGeometricFigure a1 = x as IGeometricFigure;
- IGeometricFigure a2 = y as IGeometricFigure;
- return a1.Area.CompareTo(a2.Area);
- }
- }
- class TypeComparer : IComparer
- {
- public int Compare(object x, object y)
- {
- return x.GetType().Name.CompareTo(y.GetType().Name);
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д