Ejemplo n.º 1
0
        public override bool Equals(object obj)
        {
            if ((object)this == obj)
            {
                return(true);
            }

            if (obj == null || this.GetType() != obj.GetType())
            {
                return(false);
            }

            ColoredPoint tmpObj = (ColoredPoint)obj;

            return(X == tmpObj.X && Y == tmpObj.Y && Color == tmpObj.Color);
        }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            // Задача 1. В программах требуется описать базовый класс (возможно, абстрактный), в котором с помощью виртуальных или абстрактных методов и свойств
            // задается интерфейс для производных классов. Целью лабораторной работы является максимальное использование наследования, даже если для конкретной
            // задачи оно не дает выигрыша в объеме программы. Во всех классах следует переопределить метод Equals, чтобы обеспечить сравнение значений, а не ссылок.
            // Функция Main должна содержать массив из элементов базового класса, заполненный ссылками на производные классы. В этой функции должно демонстрироваться
            // использование всех разработанных элементов классов.
            //
            // Создать класс Point (точка). На его основе создать классы ColoredPoint и Line (линия). На основе класса Line создать классы ColoredLine и PolyLine
            // (многоугольник). В классах описать следующие элементы: конструкторы с параметрами и конструкторы по умолчанию; свойства для установки и получения
            // значений всех координат, а также для изменения цвета и получения текущего цвета; для линий — методы изменения угла поворота линий относительно первой
            // *точки; для многоугольника — метод масштабирования.

            Point myPoint1 = new Point();

            Console.WriteLine(string.Join(", ", myPoint1.Coord));
            Console.WriteLine("Координаты точки 1: {0}", string.Join(", ", myPoint1.Coord));
            Console.WriteLine($"Координаты точки 1: {myPoint1.X}, {myPoint1.Y}");
            Point myPoint2 = new Point();

            myPoint2.X = 5;
            myPoint2.Y = 6.1f;
            Console.WriteLine("Координаты точки 2: {0}", string.Join(", ", myPoint2.Coord));

            Point myPoint3 = new Point(2.0f, 5.1f);

            Console.WriteLine("Координаты точки 3: {0}", string.Join(", ", myPoint3.Coord));
            myPoint3.Coord = new float[] { 5f, 6.1f };
            Console.WriteLine("Координаты точки 3: {0}, {1}", myPoint3.X, myPoint3.Y);
            Console.WriteLine(myPoint2 == myPoint3);
            Console.WriteLine("Результат сравнения точек 2 с 3 " + myPoint2.Equals(myPoint3));
            Console.WriteLine("Результат сравнения точек 3 с 2 " + myPoint3.Equals(myPoint2));
            Console.WriteLine(myPoint3.Info());

            ColoredPoint myPoint4 = new ColoredPoint();

            myPoint4.Coord = new float[] { 5, 6.1f };
            Console.WriteLine(myPoint4.Info());
            myPoint4.Color = "красный";
            Console.WriteLine("Результат сравнения точек 4 с 3 " + myPoint4.Equals(myPoint3));
            Console.WriteLine("Результат сравнения точек 3 с 4 " + myPoint3.Equals(myPoint4));

            Line myLine1 = new Line();

            Console.WriteLine(myLine1.Info());
            myLine1.Coord = new float[] { 4, -3, 5, -11 };
            Console.WriteLine("Концы отрезка: {0}, {1}, {2}, {3}",
                              myLine1.X, myLine1.Y, myLine1.X2, myLine1.Y2);
            myLine1.Rotate(90);
            Console.WriteLine(myLine1.Info());

            ColoredLine myLine2 = new ColoredLine(4, -3, 5, -11, "зеленый");

            Console.WriteLine("Длина отрезка по умолчанию равна " + Math.Sqrt(Math.Pow(myLine2.Y2, 2) + Math.Pow(myLine2.Y2, 2)));
            myLine2.Rotate(-45);
            myLine2.Color = "голубой";
            Console.WriteLine(myLine2.Info());
            Console.WriteLine("Точки: {0}, {1}, {2}, {3}", myLine2.Coord[0], myLine2.Coord[1], myLine2.Coord[2], myLine2.Coord[3]);

            PolyLine myLine3 = new PolyLine {
            };

            Console.WriteLine(string.Join(", ", myLine3.Coord));
            Console.WriteLine(myLine3.Info());
            myLine3.Coord = new float[] { 4, -3, 5, -11 };
            Console.WriteLine(myLine3.Info());

            PolyLine myLine4 = new PolyLine(1, 1, 6, 6);

            Console.WriteLine(myLine4.Info());
            myLine4.Coord = new float[] { 6, 1, 8, 1 };
            Console.WriteLine(myLine4.Info());
            myLine4.Rotate(-120);
            myLine4.Scale(1, 1.5f);
            Console.WriteLine(myLine4.Info());

            Point[] massiv = new Point[] { myPoint1, myPoint2, myLine1, myLine2, myLine3, myLine4 };
            foreach (Point i in massiv)
            {
                Console.WriteLine(i.Info());
            }


            //  Вариант 3. Описать базовый класс Строка. Обязательные поля класса: поле для
            // хранения символов строки; значение типа word для хранения длины строки в байтах.
            // Реализовать обязательные методы следующего назначения: конструктор без
            // параметров; конструктор, принимающий в качестве параметра строковый литерал;
            // конструктор, принимающий в качестве параметра символ; метод получения длины
            // строки; метод очистки строки (сделать строку пустой). Описать производный от
            // Строка класс Комплексное_число. Строки данного класса состоят из двух полей,
            // разделенных символом i. Первое поле задает значение действительной части числа,
            // второе — значение мнимой. Каждое из полей может содержать только символы
            // десятичных цифр и символы - и +, задающие знак числа. Символы - или + могут
            // находиться только в первой позиции числа, причем символ + может отсутствовать,
            // в этом случае число считается положительным. Если в составе инициализирующей
            // строки будут встречены любые символы, отличные от допустимых, класс
            // Комплексное_число принимает нулевое значение. Примеры строк: 33i12, -7i100, +5i - 21.
            //  Для класса Комплексное_число определить следующие методы: проверка на равенство;
            // сложение чисел; умножение чисел.


            // Класс не тестировался.
        }