Общая постановка. Создать программу с абстрактным базовым классом и множественным наследованием, реализовать в нем:
· конструктор,
· деструктор,
· виртуальную функцию просмотра текущего состояния объекта print(),
· friend,
· функцию Run ().
Производные классы должны содержать переопределенную функцию просмотра состояния объектов (print()). Используя стандартные файловые потоки, информацию об объектах вывести в файл. При вводе - выводе данных обработка ошибочных ситуаций (например, невозможность открыть файл или нехватка места на диске) должно обрабатываться с использованием механизма исключений.
Варианты заданий
1. Книги (Название, Автор, жанр, год, страниц, тираж, отпечатано листов - функция Run ())
2. Транспорт (Наименование, тип, год выпуска, макс. скорость, объем двигателя, Расход, объем бензобака, расстояние без подзаправок - функция Run ()),
3. Продовольственные товары (Наименование, отдел магазина, дата выпуска, срок хранения, последний срок - функция Run (), вес)
4. Студенты (ФИО, год поступления, курс, дисциплины, оценки, средний балл - функция Run ())
5. Объекты недвижимости (Адрес, тип, этажность, квартир на этаж, подъездов, всего квартир - функция Run ())
6. Спортсмены (ФИО, вид спорта, разряд, дата рождения, медалей (каждого типа), возрастная категория - функция Run ())
7. Периодические издания (Название, тип, страниц, частота выпуска, тираж, выпусков в год - функция Run ())
8. Отдел кадров (ФИО, отдел, должность, дата приема на работу, внутренний стаж - функция Run (), ставка)
9. Научно-исследовательские разработки (Наименование, дата начала, дата завершения, срок работы - функция Run (), область исследования, количество сотрудников, ФИО сотрудников)
10. Программное обеспечение (Наименование, тип, количество дисков, объем после установки (полной, минимальной, типичной версий), процент сжатия - функция Run ())
11. Комплектующие ЭВМ (Наименование, тип, модель, частота, объем памяти, стоимость, количество, итоговая стоимость - функция Run ())
12. Перевозки (Пункт назначения, расстояние, количество транспорта, государственные номера машин[], наименование товара [], дата/время выезда, дата/время прибытия, время в дороге - функция Run (), средняя скорость )
13. Аудио-студия (Группа/исполнитель, количество человек, стиль, количество альбомов, стоимость записи диска [], стоимость диска [], тираж[], общая прибыль группы - функция Run (), доход исполнителя - функция Run1 ())
14. Мобильные телефоны (Наименование, фирма, стандарт связи, заряд аккумулятора, потребление при ожидании, потребление при разговоре, время ожидания - функция Run (), время разговора - функция Run1 ())
15. Сетевое оборудование (Наименование, скорость передачи данных, тип, стоимость, количество, общая стоимость - функция Run (), максимальная скорость передачи (байт/сек))
Контрольные вопросы
1. Что такое множественное наследование?
2. Как объявляются виртуальные функции в абстрактном базовом классе?
3. Поясните механизм виртуальных функций при множественном наследовании.
4. Какие вы знаете функции обработки исключительных ситуаций (пояснить особенности каждой)?