Во всех классах реализовать интерфейс IComparable и перегрузить метод CompareTo для сравнения объектов - C#
Формулировка задачи:
В программах требуется описать базовый класс (возможно, абстрактный), в котором задается интерфейс для производных классов. Во всех классах реализовать интерфейс IComparable и перегрузить метод CompareTo для сравнения объектов по каким-либо полям на усмотрение разработчика программы.
Функция Main должна содержать массив из элементов базового класса, заполненный ссылками на производные классы. В этой функции должно демонстрироваться использование всех разработанных элементов классов, а также сортировка массива объектов.
Вот программа написанная с помощью наследования, нужно переделать на делегаты и интерфейсы.
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace Наследование
- {
- //Создать класс Paiг (пара целых чисел).
- //Определить метод умножения на число и операцию сложения пар (a,b) + (c,d) = (а + b, с + d).
- //Определить класс- наследник Money с полями: рубли и копейки.
- //Переопределить операцию сложения и определить методы вычитания денежных сумм.
- class Program
- {
- class Pair
- {
- public int a, b;
- public Pair(int a, int b)
- {
- this.a = a; this.b = b;
- }
- public static Pair operator *(int b, Pair a)
- {
- return new Pair(a.a * b, a.b * b);
- }
- public static Pair operator +(Pair a, Pair b)
- {
- return new Pair(a.a + a.b, b.a + b.b);
- }
- public virtual string show()
- {
- return Convert.ToString(a) + "," + Convert.ToString(b);
- }
- }
- class Money : Pair
- {
- public Money(int a, int b)
- : base(a, b) { }
- public static Money operator +(Money a, Money b)
- {
- int r, k;
- r = a.a + b.a;
- if ((a.b + b.b) >= 100)
- { r++; k = a.b + b.b - 100; }
- else
- k = a.b + b.b;
- return new Money(r, k);
- }
- public static Money operator *(int b, Money a)
- {
- int r, k;
- r = b * a.a;
- if ((a.b * b) >= 100)
- { r = r + a.b / 100; k = a.b % 100; }
- else
- k = a.b * b;
- return new Money(r, k);
- }
- public static Money operator -(Money a, Money b)
- {
- int r, k;
- r = a.a - b.a;
- if ((a.b - b.b) < 0)
- { r--; k = a.b - b.b + 100; }
- else
- k = a.b - b.b;
- return new Money(r, k);
- }
- public override string show()
- {
- return Convert.ToString(a) + " руб " + Convert.ToString(b) + " коп";
- }
- }
- static void Main(string[] args)
- {
- Pair p1 = new Pair(6, 4);
- Pair p2 = new Pair(8, 9);
- Money c1 = new Money(10, 5);
- Money c2 = new Money(7, 97);
- Console.WriteLine("Класс Pair");
- Console.WriteLine("(" + p1.show() + ")" + " + " + "(" + p2.show() + ")" + " = " + "(" + (p1 + p2).show() + ")");
- Console.WriteLine(p1.show() + " * " + "4" + " = " + (4 * p1).show());
- Console.WriteLine("Класс Money");
- Console.WriteLine(c1.show() + " + " + c2.show() + " = " + (c1 + c2).show());
- Console.WriteLine(c1.show() + " * " + "8" + " = " + (8 * c1).show());
- Console.WriteLine(c1.show() + " - " + c2.show() + " = " + (c1 - c2).show());
- Console.ReadLine();
- }
- }
- }
Решение задачи: «Во всех классах реализовать интерфейс IComparable и перегрузить метод CompareTo для сравнения объектов»
textual
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace ConsoleApplication11
- {
- class Program
- {
- static void Main(string[] args)
- {
- //Создаем массив
- IFigure[] myFigures = new IFigure[5]
- {
- new Rectangle(82,23,"Rect1",Color.Red),
- new Triangle(28,40,"Tr1",Color.Green),
- new Circle(20.5,"Crcl1",Color.Black),
- new Rectangle(78,30,Color.White),
- new Circle(10.2,Color.Red)
- };
- //Используем общий метод интерфейса
- foreach (IFigure itfIf in myFigures)
- {
- itfIf.Draw();
- }
- Console.WriteLine();
- //Выводим площадь каждой фигуры
- foreach (IFigure itfIf in myFigures)
- {
- Console.WriteLine("Square is {0}", itfIf.Square);
- }
- //Сортируем нашим сортировщиком по площади
- Array.Sort(myFigures, new MyCompare());
- Console.WriteLine();
- //Выводим снова площадь каждой фигуры
- foreach (IFigure itfIf in myFigures)
- {
- Console.WriteLine("Square is {0}", itfIf.Square);
- }
- Console.ReadLine();
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д