Реализовать интерфейс геометрическая фигура - 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); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д