Задание. Создать соответствующие классы. Определите в каждом классе три перегруженных конструктора: с полным набором параметров, с частью параметров и конструктор по умолчанию. Предусмотреть переопределение методов базового класса в производных классах. Создайте дополнительный класс WriterInfo, для вывода информации о классах.
Вариант 1. Создайте класс «Служащий», содержащий следующую информацию: ФИО, пол, дата рождения, стаж работы, зарплата. Предусмотреть get методы и метод класса «выплачиваемые налоги». Этот метод должны переопределять производные классы.
Создайте класс «Рабочий» производный от «Служащий» содержит дополнительную информацию: номер цеха, разряд.
Создайте класс «Начальник цеха» производный от «Служащий» содержит дополнительную информацию: название цеха, количество подчиненных.
Создайте класс «Директор завода» производный от «Служащий» содержит дополнительную информацию: срок избрания.
Вариант 2. Создайте класс «Аудитория», содержащий следующую информацию: номер, этаж, площадь. Предусмотреть get методы и метод класса «расчет вместимости». Этот метод должны переопределять производные классы.
Создайте класс «Лекционная аудитория» производный от «Аудитория» содержит дополнительную информацию: количество рядов, количество посадочных мест в ряду, наличие проектора.
Создайте класс «Учебный класс» производный от «Аудитория» содержит дополнительную информацию: количество парт, наличие компьютера.
Создайте класс «Лаборатория» производный от «Аудитория» содержит дополнительную информацию: количество компьютеров.
Вариант 3. Создайте класс «Книга», который содержит следующую информацию: издательство, автор и количество страниц. Предусмотреть get методы. Метод класса «Название», который потом будут переопределять производные классы.
Создайте класс «Художественная книга» производный от «Книга» содержит дополнительную информацию: жанр.
Создайте класс «Научная книга» производный от «Книга» содержит дополнительную информацию: тематика, сложность.
Вариант 3. Создайте класс «Одежда», который содержит следующую информацию: производитель, цена и стиль. Предусмотреть get методы. Метод класса «Бренд», который потом будут переопределять производные классы.
Создайте класс «Куртка» производный от «Одежда» содержит дополнительную информацию: сезонность, наличие капюшона.
Создайте класс «Кофта» производный от «Одежда» содержит дополнительную информацию: длина рукава, процент содержания шерсти.
Создайте класс «Брюки» производный от «Одежда» содержит дополнительную информацию: расклешенность.
Вариант 5. Создайте класс «Посуда», который содержит следующую информацию: производитель, цена и стиль. Предусмотреть get методы. Метод класса «Наименование», который потом будут переопределять производные классы.
Создайте класс «Кастрюля» производный от «Посуда» содержит дополнительную информацию: объем и наличие крышки.
Создайте класс «Сковорода» производный от «Посуда» содержит дополнительную информацию: длина ручки, покрытие.
Создайте класс «Тарелка» производный от «Посуда» содержит дополнительную информацию: диаметр.
Вариант 6. Создайте класс «Человек», содержащую следующую информацию: ФИО, пол, возраст. Предусмотреть get методы. Метод класса «Имя», который потом будут переопределять производные классы.
Создайте класс «Ребенок» производный от «Человек» содержит дополнительную информацию: номер детского сада.
Создайте класс «Подросток» производный от «Человек» содержит дополнительную информацию: номер школы, успеваемость в школе.
Создайте класс «Родитель» производный от «Человек» содержит дополнительную информацию: количество детей, место работы.
Вариант 7. Автомобильный транспорт описывается классом «Автомобиль», который содержит следующую информацию: марка автомобиля, тип двигателя (карбюраторный или дизельный), мощность двигателя, масса автомобиля, пробег в км. Предусмотреть get методы. Метод класса «Марка», который потом будут переопределять производные классы.
Создайте класс «Легковой автомобиль» производный от «Автомобиля» содержит дополнительную информацию: расход топлива на 100 км, время разгона до 100 км/ч в секундах.
Создайте класс «Грузовой автомобиль» производный от «Автомобиля» содержит дополнительную информацию: грузоподъемность в тоннах, тип кузова (открытый или закрытый).
Создайте класс «Автобус» производный от «Легкового автомобиля» содержит дополнительную информацию: количество мест.
Вариант 8. Создайте класс «Обувь», содержащую следующую информацию: размер, производитель, цвет. Предусмотреть get методы. Метод класса «Бренд», который потом будут переопределять производные классы.
Создайте класс «Сапоги» производный от «Обувь», который содержит дополнительную информацию: размер каблука, тип (демисезонные или зимние).
Создайте класс «Босоножки» производный от «Обувь» содержит дополнительную информацию: открытость (сильно или нет).
Создайте класс «Кроссовки» производный от «Обувь» содержит дополнительную информацию: тип_подошвы, фирма_производитель.
Вариант 9. Создайте класс «Учащийся», содержащий следующую информацию: ФИО, пол, возраст. Предусмотреть get методы. Метод класса «Учебное_заведение» который потом будут переопределять производные классы.
Создайте класс «Школьник» производный от «Учащийся» содержит дополнительную информацию: номер класса и букву.
Создайте класс «Студент», производный от «Учащийся», который содержит дополнительную информацию: факультет, специальность, номер группы.
Создайте класс «Аспирант» производный от «Учащийся» содержит дополнительную информацию: название научной работы, научный руководитель.
Вариант 10. Класс описывает мебель и содержит следующие данные-члены: производитель, цена и материал. Предусмотреть get методы. Метод класса «Производитель», который потом будут переопределять производные классы.
Создайте класс «Шкаф» производный от «Мебель» содержит дополнительную информацию: ширину, глубину и высоту.
Создайте класс «Стол» производный от «Мебель» содержит дополнительную информацию: количество ящиков, площадь рабочей поверхности.
Создайте класс «Стул» производный от «Мебель» содержит дополнительную информацию: возможность регулировать положение спинки.
Вариант 11. Создайте класс «Персонаж», содержащий следующую информацию: имя, здоровье, сила и ловкость. Предусмотреть get методы. Метод класса «Атаковать», который потом будут переопределять производные классы.
Создайте класс «Воин» производный от «Персонаж» содержит дополнительную информацию: вид оружия и форма щита.
Создайте класс «Монстр» производный от «Персонаж», который содержит дополнительную информацию: длина зубов и когтей, количество_лап.
Создайте класс «Маг» производный от «Персонаж» содержит дополнительную информацию: вид_магии.
Вариант 12. Создайте класс «Фильм», содержащий следующую информацию: режиссер, продолжительность и аудитория. Предусмотреть get методы. Метод класса «Название», который потом будут переопределять производные классы.
Создайте класс «Мультфильм» производный от «Фильм» содержит дополнительную информацию: художник и стиль_графики.
Создайте класс «Мюзикл» производный от «Фильм», который содержит дополнительную информацию: музыкальный_инструмент, количество_песен.
Создайте класс «Исторический» производный от «Фильм» содержит дополнительную информацию: исторический_период, степень_соответствия_событиям.
Вариант 13. Создайте класс «Молочный_продукт», содержащий следующую информацию: срок_годности, количество_белка и жирность. Предусмотреть get методы. Метод класса «Производитель», который потом будут переопределять производные классы.
Создайте класс «Йогурт» производный от «Молочный_продукт» содержит дополнительную информацию: вкусовая_добавка, объем_тары, термизированность.
Создайте класс «Творог» производный от «Молочный_продукт», который содержит дополнительную информацию: масса, зернистость.
Создайте класс «Кефир» производный от «Молочный_продукт» содержит дополнительную информацию: объем_тары и количество_бифидобактерий.
Вариант 13. Создайте класс «Игра», содержащий следующую информацию: год_выпуска, рейтинг и ОС. Предусмотреть get методы. Метод класса «Название», который потом будут переопределять производные классы.
Создайте класс «Стратегия» производный от «Игра», который содержит дополнительную информацию: максимальное_количество_юнитов, колчество_карт и возможность_создать_карту.
Создайте класс «Шутер» производный от «Игра», который содержит дополнительную информацию: количество_уровней и вид_оружия.
Создайте класс «Квест» производный от «Игра» содержит дополнительную информацию: возраст.
Вариант 15. Создайте класс «Сайт», содержащий следующую информацию: название, наличие рекламы. Предусмотреть get методы. Метод класса «Популярность», который потом будут переопределять производные классы.
Создайте класс «Социальная_сеть» производный от «Сайт», который содержит дополнительную информацию: количество_пользователей, наличие_приложений.
Создайте класс «Информационный» производный от «Сайт», который содержит дополнительную информацию: количество_новостей, частота_обновлений.
Создайте класс «Образовательный» производный от «Сайт» содержит дополнительную информацию: тематика.
Контрольные вопросы
1. Что собой представляет механизм наследования?
2. Дайте определение терминам «суперкласс» и «подкласс».
3. С помощью какого ключевого слова предопределяется ссылка на объект текущего класса?
4. В каких случаях используется super(), а в каких super.?
5. В чем разница между перегруженными и переопределенными методами?
6. Каким образом реализуется полиморфизм?