- •Оглавление
- •Лабораторная работа №8 Синтаксис интерфейса
- •Реализация интерфейса
- •Работа с объектами через интерфейсы. Операции is и as
- •Интерфейсы и наследование
- •Стандартные интерфейсы .Net
- •Сравнение объектов
- •Сортировка по разным критериям (интерфейс iComparer)
- •Перебор объектов (интерфейс iEnumerable) и итераторы
- •Пространство имен System.Collections
- •Класс ArrayList
- •Индивидуальные задания
- •Вариант 0
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5-20
- •Пример выполнения варианта №0
Индивидуальные задания
В программах требуется описать базовый класс (возможно, абстрактный), в котором с помощью виртуальных или абстрактных методов и свойств задается интерфейс для производных классов. Целью лабораторной работы является максимальное использование наследования, даже если для конкретной задачи оно не дает выигрыша в объеме программы.
Функция Main должна содержать массив из элементов базового класса, заполненный ссылками на производные классы. В этой функции должно демонстрироваться использование всех разработанных элементов классов.
Для хранения разработанных классов использовать стандартные параметризованные коллекции. Во всех классах реализовать интерфейс IComparable и перегрузить операции отношения для реализации значимой семантики сравнения объектов по какому-либо полю на усмотрение студента.
Вариант 0
Создать абстрактный класс Vehicle (транспортное средство). На его основе реализовать классы Plane (самолет), Car (автомобиль) и Ship (корабль). Классы должны иметь возможность задавать и получать параметры средств передвижения (цена, скорость, и т. п.) с помощью свойств. Для самолета должна быть определена высота, для самолета и корабля — количество пассажиров, для корабля — порт приписки.
Вариант 1
Создать класс Point (точка). На его основе создать классы ColoredPoint и Line (линия). На основе класса Line создать классы ColoredLine и PolyLine (многоугольник). В классах описать следующие элементы:
конструкторы с параметрами и конструкторы по умолчанию;
свойства для установки и получения значений всех координат, а также для изменения цвета и получения текущего цвета;
для линий — методы изменения угла поворота линий относительно первой точки;
для многоугольника — метод масштабирования.
Вариант 2
Описать базовый класс Строка.
Обязательные поля класса:
поле для хранения символов строки;
значение типа word для хранения длины строки в байтах.
Реализовать обязательные методы следующего назначения:
конструктор без параметров;
конструктор, принимающий в качестве параметра строковый литерал;
конструктор, принимающий в качестве параметра символ;
метод получения длины строки;
метод очистки строки (сделать строку пустой).
Описать производный от Строка класс Комплексное_число.
Строки данного класса состоят из двух полей, разделенных символом i.
Первое поле задает значение действительной части числа, второе — значение мнимой. Каждое из полей может содержать только символы десятичных цифр и символы – и +, задающие знак числа. Символы – или + могут находиться только в первой позиции числа, причем символ + может отсутствовать, в этом случае число считается положительным. Если в составе инициализирующей строки будут встречены любые символы, отличные от допустимых, класс Комплексное_число принимает нулевое значение. Примеры строк:
33i12
–7i100
+5i – 21
Для класса Комплексное_число определить следующие методы:
проверка на равенство;
сложение чисел;
умножение чисел.
Вариант 3
Описать базовый класс Строка в соответствии с вариантом 2.
Описать производный от Строка класс Десятичная_строка.
Строки данного класса могут содержать только символы десятичных цифр и символы – и +, задающие знак числа. Символы – или + могут находиться только в первой позиции числа, причем символ + может отсутствовать, в этом случае число считается положительным. Если в составе инициализирующей строки будут встречены любые символы, отличные от допустимых, класс Десятичная_строка принимает нулевое значение. Содержимое данных строк рассматривается как десятичное число.
Для класса определить следующие методы:
конструктор, принимающий в качестве параметра число;
арифметическая разность строк;
проверка на больше (по значению);
проверка на меньше (по значению).