Реализовать интерфейс геометрическая фигура - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет. Есть такая задача Создать классы квадратов и окружностей, реализующие общий интерфейс «Геометрические фигуры»: Интерфейс должен определять следующие элементы: свойство, возвращающее площадь фигуры, метод вывода информации, и наследовать интерфейс IComparable для сравнения фигур по типу. Класс квадратов должен содержать следующие элементы: поле-сторону квадрата, конструктор, реализованные элементы интерфейса, метод вычисления периметра. Класс кругов должен содержать следующие элементы: поля - радиус, цвет фигуры, конструктор, реализованные элементы интерфейса. Создать класс-контейнер для фигур, содержащий поле-массив фигур (ссылок интерфейсного типа), конструктор, методы для сортировки по площади и по типу фигуры, а также реализующий интерфейс IEnumerable. Дополнительно создать класс , реализующий интерфейс IComparer. Использовать объект класса для сортировки фигур по площади. В классе Program создать объект класса-контейнера с информацией о двух кругах и двух квадратах. Вывести информацию о фигурах, используя для просмотра содержимого контейнера оператор foreach. Сортировать информацию по типу. Сортировать информацию по площадям фигур. Написал почти весь код, только осталась проблема с сортировкой по типу. Не понимаю как реализовать метод интерфейса IComparable. Фал с кодом прикреплён. помогите если не сложно. Буду благодарен

Решение задачи: «Реализовать интерфейс геометрическая фигура»

textual
Листинг программы
  1.     interface IGeometricFigure : IComparable
  2.     {
  3.         double Area{get;}
  4.         void Show();
  5.     }
  6.  
  7.     class ArrayOfFigures: IEnumerable
  8.     {
  9.         IGeometricFigure[] geometricFigure;
  10.  
  11.         public ArrayOfFigures(params IGeometricFigure[] gf)
  12.         {
  13.             geometricFigure = gf;
  14.         }
  15.        
  16.         IEnumerator IEnumerable.GetEnumerator()
  17.         {
  18.             return geometricFigure.GetEnumerator();
  19.         }
  20.  
  21.         public void SortArea()
  22.         {
  23.             Array.Sort(geometricFigure, new AreaComparer());
  24.         }
  25.  
  26.         public void SortType()
  27.         {
  28.             Array.Sort(geometricFigure, new TypeComparer());
  29.         }        
  30.     }
  31.  
  32.     class Circle:IGeometricFigure
  33.     {
  34.         double radius;
  35.         Color colour;
  36.         static TypeComparer TypeComparer = new TypeComparer();
  37.  
  38.         public Circle(double r, Color c)
  39.         {
  40.             radius = r;
  41.             colour = c;
  42.         }
  43.  
  44.         public double Area
  45.         {
  46.             get { return Math.PI*radius*radius; }
  47.         }
  48.  
  49.         public override string ToString()
  50.         {
  51.             return "Круг с радиусом " + radius + "\r\nПлощадь круга равна " + Area + "\r\nЦвет круга - " + colour;
  52.         }
  53.  
  54.         public void Show()
  55.         {
  56.             Console.WriteLine(ToString());
  57.         }
  58.  
  59.         public int CompareTo(object obj)
  60.         {
  61.             return TypeComparer.Compare(this, obj);
  62.         }
  63.     }
  64.  
  65.     class Square:IGeometricFigure
  66.     {
  67.         double side;
  68.         static TypeComparer TypeComparer = new TypeComparer();
  69.  
  70.         public Square(int side)
  71.         {
  72.             this.side = side;
  73.         }
  74.  
  75.         public double Perimeter()
  76.         {
  77.             return 4 * side;
  78.         }
  79.  
  80.         public double Area
  81.         {
  82.             get { return side * side; }
  83.         }
  84.  
  85.         public override string ToString()
  86.         {
  87.             return "Квадрат со стороной " + side + "\r\nПлощадь квадрата равна " + Area + "\r\nПериметр квадрата равен " + Perimeter();
  88.         }
  89.  
  90.         public void Show()
  91.         {
  92.             Console.WriteLine(ToString());
  93.         }
  94.  
  95.         public int CompareTo(object obj)
  96.         {
  97.             return TypeComparer.Compare(this, obj);
  98.         }        
  99.     }
  100.  
  101.     class AreaComparer : IComparer
  102.     {
  103.         public int Compare(object x, object y)
  104.         {
  105.             IGeometricFigure a1 = x as IGeometricFigure;
  106.             IGeometricFigure a2 = y as IGeometricFigure;
  107.             return a1.Area.CompareTo(a2.Area);
  108.         }
  109.     }
  110.  
  111.     class TypeComparer : IComparer
  112.     {
  113.         public int Compare(object x, object y)
  114.         {
  115.             return x.GetType().Name.CompareTo(y.GetType().Name);
  116.         }
  117.     }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы