Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab8.doc
Скачиваний:
14
Добавлен:
21.09.2019
Размер:
418.82 Кб
Скачать

Индивидуальные задания

В программах требуется описать базовый класс (возможно, абстрактный), в котором с помощью виртуальных или абстрактных методов и свойств задается интерфейс для производных классов. Целью лабораторной работы является максимальное использование наследования, даже если для конкретной задачи оно не дает выигрыша в объеме программы.

Функция Main должна содержать массив из элементов базового класса, заполненный ссылками на производные классы. В этой функции должно демонстрироваться использование всех разработанных элементов классов.

Для хранения разработанных классов использовать стандартные параметризованные коллекции. Во всех классах реализовать интерфейс IComparable и перегрузить операции отношения для реализации значимой семантики сравнения объектов по какому-либо полю на усмотрение студента.

Вариант 0

Создать абстрактный класс Vehicle (транспортное средство). На его основе реализовать классы Plane (самолет), Car (автомобиль) и Ship (корабль). Классы должны иметь возможность задавать и получать параметры средств передвижения (цена, скорость, и т. п.) с помощью свойств. Для самолета должна быть определена высота, для самолета и корабля — количество пассажиров, для корабля — порт приписки.

Вариант 1

Создать класс Point (точка). На его основе создать классы ColoredPoint и Line (линия). На основе класса Line создать классы ColoredLine и PolyLine (многоугольник). В классах описать следующие элементы:

  • конструкторы с параметрами и конструкторы по умолчанию;

  • свойства для установки и получения значений всех координат, а также для изменения цвета и получения текущего цвета;

  • для линий — методы изменения угла поворота линий относительно первой точки;

  • для многоугольника — метод масштабирования.

Вариант 2

Описать базовый класс Строка.

Обязательные поля класса:

  • поле для хранения символов строки;

  • значение типа word для хранения длины строки в байтах.

Реализовать обязательные методы следующего назначения:

  • конструктор без параметров;

  • конструктор, принимающий в качестве параметра строковый литерал;

  • конструктор, принимающий в качестве параметра символ;

  • метод получения длины строки;

  • метод очистки строки (сделать строку пустой).

Описать производный от Строка класс Комплексное_число.

Строки данного класса состоят из двух полей, разделенных символом i.

Первое поле задает значение действительной части числа, второе — значение мнимой. Каждое из полей может содержать только символы десятичных цифр и символы – и +, задающие знак числа. Символы – или + могут находиться только в первой позиции числа, причем символ + может отсутствовать, в этом случае число считается положительным. Если в составе инициализирующей строки будут встречены любые символы, отличные от допустимых, класс Комплексное_число принимает нулевое значение. Примеры строк:

33i12

–7i100

+5i – 21

Для класса Комплексное_число определить следующие методы:

  • проверка на равенство;

  • сложение чисел;

  • умножение чисел.

Вариант 3

Описать базовый класс Строка в соответствии с вариантом 2.

Описать производный от Строка класс Десятичная_строка.

Строки данного класса могут содержать только символы десятичных цифр и символы – и +, задающие знак числа. Символы – или + могут находиться только в первой позиции числа, причем символ + может отсутствовать, в этом случае число считается положительным. Если в составе инициализирующей строки будут встречены любые символы, отличные от допустимых, класс Десятичная_строка принимает нулевое значение. Содержимое данных строк рассматривается как десятичное число.

Для класса определить следующие методы:

  • конструктор, принимающий в качестве параметра число;

  • арифметическая разность строк;

  • проверка на больше (по значению);

  • проверка на меньше (по значению).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]