Как перегрузить операции отношения для реализации значимой семантики сравнения объектов - C#
Формулировка задачи:
Добрый вечер. Есть поставленная задача с наследованием:
Она в некотором роде не дописана (последние два задания), но суть не в этом.
К этому заданию есть дополнение. Меня интересует такой вопрос:
Что есть "параметризованные коллекции", интерфейс IComparable и как перегрузить операции отношения для реализации значимой семантики сравнения объектов по какому-либо полю, в рамках данной задачи.
Создать класс Point (точка). На его основе создать классы ColoredPoint и Line
(линия). На основе класса Line создать классы ColoredLine и PolyLine (многоугольник).
В классах описать следующие элементы:
• конструкторы с параметрами и конструкторы по умолчанию;
• свойства для установки и получения значений всех координат, а также для
изменения цвета и получения текущего цвета;
• для линий — методы изменения угла поворота линий относительно первой
точки;
• для многоугольника — метод масштабирования.
Выполните задание,используя для хранения экземпляров
разработанных классов стандартные параметризованные коллекции. Во всех классах реализовать интерфейс IComparable и перегрузить операции отношения для реализации значимой семантики сравнения объектов по какому-либо полю на ваше усмотрение.
class Point { public Point() //конструктор по умолчанию { } public Point(int x, int y) //конструктор { this.X = x; this.Y = y; } private int _X; public int X { get //способ пролучения свойства { return this._X; } set //способ задания свойства { _X = value; } } private int _Y; public int Y { get { return this._Y; } set { _Y = value; } } } class ColoredPoint : Point { public ColoredPoint() { } public ColoredPoint(int x, int y, int color) : base(x, y) { this.Color = color; } private int _Color; public int Color { get { return this._Color; } set { _Color = value; } } } class Line { public Line() { } public Line(Point start, Point end) { this.Start = start; this.End = end; } public Line (int x1, int y1, int x2, int y2) : this(new Point(x1, y1), new Point(x2,y2)) { } private Point _Start; public Point Start { get { return _Start; } set { _Start = value; } } private Point _End; public Point End { get { return _End; } set { _End = value; } } } class ColoredLine : Line { public ColoredLine(Point start, Point end, int color) : base(start, end) { this.Color = color; } public ColoredLine(int x1, int y1, int x2, int y2, int color) : this(new Point(x1, y1), new Point(x2,y2), color) { } private int _Color; public int Color { get { return this._Color; } set { _Color = value; } } } class Polygon { public Polygon() {} public Polygon(List<Line> frieng) { this.Frieng = frieng; } private List<Line> _Frieng; public List<Line> Frieng { get { return _Frieng; } set { _Frieng = value; } } }
Решение задачи: «Как перегрузить операции отношения для реализации значимой семантики сравнения объектов»
textual
Листинг программы
int CompareTo(T other)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д