Варианты индивидуальных заданий на полиморфизм

Задание

Разработать три класса – один базовый (может быть абстрактным классом или интерфейсом) и два производных от него – согласно своему варианту задания. Используя свой класс Vector из л.р.№3, адаптированный для хранения объектов этих классов, реализовать «программу-каталог» со следующими возможностями:

1. Просмотр всего содержимого каталога.
2. Добавление нового элемента в заданную позицию (со сдвигом остальных) – в том числе в конец.
3. Удаление элемента в заданной позиции (со сдвигом остальных).
4. Редактирование элемента в заданной позиции.
5. Один-три варианта разумного – на Ваш взгляд – поиска по каталогу (результат поиска – не всегда единственный элемент!).

Требования

1. Не делайте "куцые" классы только с теми полями, которые указаны в задании. Проявите фантазию: какие еще поля (методы) будут уместны?!
2. Каталог должен быть смешанным: одновременно в нем могут храниться объекты обоих производных классов (совет: для этого обычно хранят в векторе ссылки на базовый класс (или интерфейс)).
3. Полиморфное поведение реализуется посредством переопределения (override) методов.
4. Ввод с клавиатуры, вывод на экран, редактирование объекта – безусловно, являются операциями над объектами класса (т.е., скорее всего, станут его методами).
6. Поместите отдельные классы в отдельные файлы - это общепринятая практика.
7. Использование enum'ов не требуется. Перечислимые по сути поля можно реализовывать как строки.

Оценивание

Максимальный балл за задание равен десяти. Оценивание – по стандартной "школьной" системе (за отличную работу можно получить 12).

Варианты

1. Автомобиль.
Общие поля: фирма-производитель, год выпуска, цвет.
Вариативные поля: для грузовых – грузоподъемность в тоннах (вещественное), для легковых – тип кузова (например, седан, кабриолет, универсал, минивэн, купе).

2. Клиент парикмахерской.
Общие поля: Ф.И.О., возраст.
Вариативные поля: для мужчин – длина стрижки, для женщин – тип прически (например, свадебная, вечерняя, повседневная).

3. Диск.
Общие поля: название, год.
Вариативные поля: для аудио – количество треков, для видео – разрешение.

4. Печатное издание.
Общие поля: название, год, количество страниц.
Вариативные поля: для книг - автора, для журналов - № (номер).

5. Комнатное растение.
Общие поля: высота, тип стебля (например, плетущееся, куст), условия содержания (например, теплолюбивое, теневыносливое, засухоустойчивое).
Вариативные поля: для цветущих – цвет цветка, для декоративнолиственных – длина листа.

6. Компьютер.
Общие поля: модель, производитель, год выпуска.
Вариативные поля: для дэсктопа – модель материнской платы, для ноутбука – время автономной работы.

7. Государство.
Общие поля: расположение (континент), название, площадь.
Вариативные поля: для республики – количество депутатов в парламенте, для монархии – фамилия правителя.

8. Общественный транспорт.
Общие поля: название, год выпуска, длина маршрута.
Вариативные поля: для автобуса – количество потребляемого бензина, для трамвая – количество вагонов.

9. Самолет.
Общие поля: название, год выпуска.
Вариативные поля: для пассажирских – вместимость, для грузовых – грузоподъемность.

0. Медикаменты.
Общие поля: название, срок годности, производитель.
Вариативные поля: для таблеток – количество таблеток в упаковке, для ампул – объем.

Ваш вариант

Alex Churkin 3
Cтеценко Артём 8
Агеева Марина 1
Агеев Павел 2
Ажажа Никита 7
Алєксєєв Владислав 3
Алиев Эльшан 0
Альяров Орхан 4
Анищенко Эмилия 4
Белозерцев Иван 8
Бережной Александр 7
Бондаренко Артём 3
Виктория Долгина 3
Власенко Оксана 3
Ганжа Дима 5
Гармаш Дима 9
Герман Юлия 9
Глебов 7
Голубцов Алексей 9
Гончаров Олег 4
Горбунов Вадим 1
Грабовская Юлия 5
Григоренко Ксения 5
Губская Карина 5
Гужеля Александр 9
Гуров Максим 0
Даничев Максим 1
Дзюба Эдуард 1
Довгуша Станислав 8
Едуард Огієнко 1
Зинченко Дмитрий 4
Зуй Оксана 0
Каленич Владислав 9
Калиниченко Екатерина 0
Кирилюк Николай 6
Китайгора Александр 9
Ковалев Александр 0
Ковалева Марина 5
Колесник Александр 2
Коломиец Жанна 1
Коломоец Раиса 6
Куц Богдан 3
Лисняк Евгений 5
Лисовенко Александр 1
Лофіцький Едуард 9
Луговой Виталий 6
Луценко Мария 7
Лысяк Влад 7
Малыщенко Мария 2
Маляренко Марина 0
Мамедов Рустам 2
Манько Александр 9
Марина Ковалева 6
Матвеева Диана 9
Мацынин Николай 0
Милашенко Руслана 3
Муравская Анна 4
Назарец Ольга 1
Нгуен 2
Несветаев Виталий 7
Николай Кирилюк 4
Нурмал Арсалан 4
Онацкий Владислав 0
Онацкий Славик 2
Павленко Максим 4
Пархоменко Михаил 1
Плаксина Вика 8
Подзолков Александр 6
Пойманов Павел 6
Потапов Антон 8
Пуляева Анжелика 2
Резникова Анна 9
Рогожкин Рома 0
Савченко Александр 6
Сарибеков Артур 2
Саркисян Тигран 2
Сахацкий Сергей 0
Сидоренко Владислав 1
Синюк Богдан 0
Синюк Тарас 7
Смиренская Анастасия 9
Суховеев Максим 5
Сыч Денис 4
Третьяков Артем 8
Туболева Светлана 1
Уразов Сергей 3
Фарзалиев Назим 3
Филатова Наташа 8
Чернопятко Евгений 3
Чеснок Вячеслав 8
Чурай Максим 2
Чуркин Александр 6
Шарко Михаил 2
Шахова Евгения 5
Шведов Вадим 2
Шевченко Константин 9
Шинкарук Влад 6
Широков Максим 5
Ясковець Роман 7
Comments