Реализовать интерфейс геометрическая фигура - 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);
        }
    }

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


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

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

14   голосов , оценка 4 из 5
Похожие ответы