ДВГУПС, современные технологии прикладного программирования (лабораторные работы №3-6)
| 07.07.2026, 14:11 | |
Лабораторная работа №3 Вариант №1 Задание 1 Создайте класс "Point" с координатами x и y. Реализуйте: 1) Перегрузку оператора равенства для сравнения двух точек. 2) Перегрузку оператора сложения (чтобы складывались 2 точки, а не координаты одной). 3) Перегрузку оператора сравнения двух переменных (>; < и ==). Задание 2 Разработайте класс «Автомобиль» с инкапсуляцией переменных для модели, года выпуска и цвета. Реализуйте: 1) Создание и перегрузку конструктора для машины без данных. 2) Создание и перегрузку конструктора для машины со всей информацией об этой машине. Используйте ключевое слово this для доступа к членам класса. Вариант №2 Задание 1 Разработайте класс "Книга". Реализуйте: 1) Перегрузку конструкторов для установки различных параметров. 2) Параметры для года выпуска, названия и автора. 3) Деструктор для очистки данных после завершения работы. Используйте ключевое слово this для доступа к членам класса. Задание 2 Создайте класс "String". Реализуйте: 1) Перегрузку оператора равенства и неравенства для сравнения двух строк (при выполнении нужно вывести какой именно оператор используется и что он выводит). 2) Возможность совмещения 2 строк в одну при помощи перегрузки оператора сложения. Вариант №3 Задание 1 Напишите класс «Студент" с инкапсуляцией переменных для Имени, Фамилии и номера группы. Реализуйте: 1) Деструктор для освобождения памяти после использования. 2) Перегрузку конструктора для студентов без информации. Задание 2 Создайте класс "Complex" для работы с комплексными числами. Реализуйте: 1) Перегрузку операторов сложения и вычитания для работы с комплексными числами. Вариант №4 Задание 1 Реализовать класс "Точка". Реализуйте: 1) Предусмотрите перегрузку конструктора для точки с координатами и без нее. 2) Конструктор копирования. Используйте ключевое слово this для доступа к членам класса. Задание 2 Напишите класс "Matrix" для работы с матрицами. Реализуйте: 1) Перегрузку оператора сложения для сложения двух матриц. 2) Функцию для вычитания единичной матрицы. Вариант №5 Задание 1 Создание класса "Круг". Реализуйте: 1) Конструктор копирования для создания точной копии объекта. 2) Возможность нахождения площади круга. 3) Создание нулевого круга (точки) при помощи конструктора. Задание 2 Реализуйте класс "Vector". Реализуйте: 1) Перегрузку оператора сложения для сложения двух векторов. 2) Перегрузку префиксных и постфиксных инкрементов и декрементов. Вариант №6 Задание 1 Создайте класс "Counter" для подсчета какихлибо переменных. Реализуйте: 1) Перегрузку для оператора индексирования. 2) Перегрузку операторов инкремента и декремента для этого класса. Задание 2 Разработайте класс "Заказ" с методами для управления заказом и инкапсуляцией данных. Реализуйте: 1) Создание пары перегрузок конструктора. 2) Конструктор копирования с выводом сообщения «данные перенеслись» и выводом переменной, в которую скопировала информация. Используйте ключевое слово this для доступа к членам класса. Вариант №7 Задание 1 Создайте класс "Пользователь" с перегруженными конструкторами для различных типов пользователей (минимум 4). Реализуйте деструктор, который будет отчищать информацию о пользователе и выводить «Вызвался деструктор». Задание 2 Напишите класс "Time" для работы с временем. Реализуйте: 1) Перегрузку оператора деления для вычисления целых часов. 2) Перегрузку операторов инкремента и декремента для увеличения и уменьшения времени. 3) Функцию, которая будет прибавлять случайное время. Вариант №8 Задание 1 Создайте класс "Задача на доске" с использованием инкапсуляции для скрытия деталей реализации. Реализуйте: 1) Несколько перегрузок с типами задач и выставленной оценкой. 2) Создание деструктора. Используйте ключевое слово this для доступа к членам класса. Задание 2 Реализуйте класс "Index" для работы с массивом. Выполните: 1) Перегрузку оператора индекса для изменения и вывода значения массива. 2) Добавьте оператора равенства двух массивов и оператора сложения этих массивов. (Если массивы разного размера, то сложение и сравнение не будет производиться). Вариант №9 Задание 1 Создайте класс "Подписчик" с методами для подписки и отписки от рассылки. Выполните: 1) Добавьте еще пары переменных с информацией о подписчике. 2) Перегрузку конструктора для автоматического выявления подписки и отписки. 3) Создание деструктора. Используйте ключевое слово this для доступа к членам класса. Задание 2 Реализуйте класс «Числа», использующий перегруженные функции определения максимального из двух чисел. Функции должны возвращать максимальное значение. Для одной функции тип аргументов: целый, для второй — вещественный. Выполните перегрузку постинкремента и префиксного декремента. Вариант №10 Задание 1 Разработайте класс "Комплексное число" с перегруженными конструкторами (минимум 4). Реализуйте: 1) Конструктор копирования сразу для 3 чисел (a = b = c). Используйте ключевое слово this для доступа к членам класса. Задание 2 Создайте класс "Fraction" для работы с дробями. Перегрузите операторы сложения, вычитания, умножения и деления для дробей. Вариант №11 Задание 1 Создайте класс "Матрица" Реализуйте: 1) Конструктор для автозаполнения переменных. 2) Деструктор для освобождения памяти после использования. Задание 2 Создайте класс "Date" для работы с датами. Выполните: 1) Перегрузку операторов сравнения, инкремента и декремента для дат. Сделай 3 переменные для числа, месяца и года. (К примеру, Date = 01.31.25, Date++ = 02.01.25) Вариант №12 Задание 1 Создайте класс "Стек". Выполните: 1) Создание конструктора копирования. 2) Перегрузок конструктора класса. Используйте ключевое слово this для доступа к текущему элементу стека. Задание 2 Реализуйте класс "Polynomial" для работы с многочленами. Выполните: 1) Перегрузку операторов сложения, вычитания и равенства для многочленов. 2) Перегрузку инкремента или декремента. (Создайте минимум 3 одночлена) Вариант №13 Задание 1 Создайте класс "Динамический массив" с конструктором копирования для создания копии массива и вызова деструктора, для отчистки динамической памяти. Задание 2 Реализуйте класс "Таймер". Выполните: 1) Перегрузку операторов инкремента для увеличения времени на таймере и декремента для уменьшения времени. 2) Перегрузку деления для нахождения времени в часах. 3) Добавьте функцию, которая будет прибавлять случайное количество минут. Вариант №14 Задание 1 Разработайте класс "Банковский счет" с методами для внесения депозита и снятия средств. Выполните: 1) Несколько перегрузок для нулевого счета. 2) Несколько перезагрузок для обычного счета. Задание 2 Реализуйте класс "Очередь" с перегрузкой оператора индексирования для доступа к элементам. Добавьте: 1) Оператор равенства для изменения переменных в очереди. 2) Деструктор для отчистки данных. Вариант №15 Задание 1 Напишите класс "Компьютер" с инкапсуляцией для скрытия деталей аппаратной части. Реализуйте: 1) Перегрузку конструктора класса, для разных видов компьютера (минимум 3). 2) Конструктор копирования для 1 переменной. Используйте ключевое слово this для доступа к членам класса. Задание 2 Создайте класс "Товар". Реализуйте: 1) Перегрузку оператора равенства и сложения для класса. 2) Перегрузку оператора деления, для нахождения среднего значения для всех товаров. 3) Функцию, которая будет выводить всю информацию о товаре. 4) Функцию, которая будет выводить товар по максимальной и минимальной цене из нескольких вариантов. Вариант №16 Задание 1 Реализуйте класс "Файл" с перегруженными конструкторами для работы с различными типами файлов (минимум 3). Создайте конструктор копирования для 2 файлов. Используйте ключевое слово this для доступа к членам класса. Задание 2 Напишите класс "Температура" с перегрузкой операторов инкремента и декремента. Выполните: 1) Перегрузку операторов умножения, вычитания и деления для нахождения градусов по Цельсию в Фаренгейты и наоборот. 2) Добавьте оператор сравнения для 2 и более переменных. Вариант №17 Задание 1 Создайте класс "Квадратное уравнение" с методами для вычисления корней через дискриминант. Выполните: 1) Добавьте конструктор копирования для 3 и более переменных (x = y =z). 2) Перегрузку конструктора для квадратных и кубических переменных (т.е. при создании переменной она сама может возводиться в квадрат или в куб). Используйте ключевое слово this. Задание 2 Разработайте класс "Карта"(основа – игра «21»). Реализуйте: 1) Перегрузку операторов равенства и сложения для класса. 2) Массив из колоды и перегрузите оператор индексирования. 3) Функцию, которая будет добавлять 1 случайную карту. Если эта карта превысит число 21, то выводится поражение, иначе победа (валет 2 очка, дама 3 очка и т.д.). Вариант №18 Задание 1 Разработайте класс "Библиотека". Реализуйте: 1) Деструктор для освобождения ресурсов после использования. 2) Перегрузку конструктора для использования различных переменных (минимум 3). Используйте ключевое слово this. Задание 2 Создайте класс "Квадрат", который будет показывать его сторону. Реализуйте: 1) Перегрузку операторов инкремента и декремента. 2) Перегрузку умножения и деления для нахождения площади(S) и периметра(P) этого квадрата. 3) Оператор сложения для нахождения сумм двух площадей(S) или периметров(Р). Вариант №19 Задание 1 Создайте класс "Команда" с методами управления членами команды и их ролями. Реализуйте: 1) Конструктор, который будет делать массив с номерами игроков. 2) Конструктор копирования этого массива. Задание 2 Разработайте класс "Круг", который будет показывать его радиус(R). Реализуйте: 1) Перегрузку операторов инкремента и декремента. 2) Перегрузку умножения и деления для нахождения P и S круга. 3) Переменную "Точка" с двумя координатами и создайте функцию, которая будет выводить попадает ли точка в окружность или нет. Вариант №20 Задание 1 Разработайте класс "Игрок" с использованием инкапсуляции для скрытия данных об игровом процессе (масти карт и тд.) Реализуйте: 1) Конструктор копирования для переноса данных об игре. 2) Перегрузку конструктора для различных выводов переменных. Используйте ключевое слово this. Задание 2 Создайте класс "Кактус", который будет показывать рост кактуса. Реализуйте: 1) Перегрузку инкремента и умножение. 2) Вторую переменную «Дерево» в класс и перегрузите оператор равенства. 3) Перегрузку операторов сравнения (>, <) для возможности сравнивать величины и выводить в порядке убывание. 4) Возможность пользователю самому сравнивать эти переменные. Лабораторная работа №4 Вариант №1 Задание 1 Создать класс БИТОВАЯ СТРОКА. Строки данного класса могут содержать только символы «0» и «1». Если в составе инициализирующей строки будут встречены любые символы, отличные от допустимых, БИТОВАЯ_СТРОКА принимает нулевое значение. Добавить возможность инвертирования значения строки. Задание 2 Класс "Точка": Создайте класс "Точка" с приватными переменными для координат x и y. Найдите расстояние от центра координат используя дружественный класс. Вариант №2 Задание 1 Создать класс ШЕСТНАДЦАТЕРИЧНАЯ_СТРОКА. Строки данного класса могут содержать только символы «0», «1», «2», «3», «4», «5», «6», «7», «8», «9», «А», «В», «C», «D», «E», «F». Если в составе инициализирующей строки будут встречены любые символы, отличные от допустимых, ШЕСТНАДЦАТЕРИЧНАЯ_ СТРОКА принимает нулевое значение. Добавить возможность произведения операции побитовой ИЛИ для двух строк. Задание 2 Класс "Кошка": Создайте класс "Кошка" с приватными переменными для имени, возраста и веса. Создайте дружественный класс «Food» для вычисления средней суточной нормы сухого корма. Вариант №3 Задание 1 Создать класс ВОСЬМИРИЧНАЯ_СТРОКА. Строки данного класса могут содержать только символы «0», «1», «2», «3», «4», «5», «6», «7». Если в составе инициализирующей строки будут встречены любые символы, отличные от допустимых, ВОСЬМИРИЧНАЯ_ СТРОКА принимает нулевое значение. Добавить возможность объединения двух строк. Задание 2 Класс "Пользователь": Напишите класс "Пользователь" с приватными переменными для имени, email и пароля. Реализуйте дружественный класс «Safety», который будет показывать проверять надежность пароля (более 9 символов + наличие букв). Вариант №4 Задание 1 Создать класс ТРОИЧНАЯ_СТРОКА. Строки данного класса могут содержать только символы «0», «1», «2». Если в составе инициализирующей строки будут встречены любые символы, отличные от допустимых, ТРОИЧНАЯ_ СТРОКА принимает нулевое значение. Добавить возможность представления значения строки в двоичной системе. Задание 2 Класс "Компьютер": Напишите класс "Компьютер" с приватными переменными для процессора, оперативной памяти и жесткого диска и дружественный класс «Info», который будет выводить сразу все переменные на экран. Вариант №5 Задание 1 Создать класс ДВЕНАДЦАТИРИЧНАЯ_СТРОКА. Строки данного класса могут содержать только символы «0», «1», «2», «3», «4», «5», «6», «7», «8», «9», «А», «В». Если в составе инициализирующей строки будут встречены любые символы, отличные от допустимых, ДВЕНАДЦАТИРИЧНАЯ_СТРОКА принимает нулевое значение. Добавить возможность представления значения строки в десятичной системе. Задание 2 Класс "Банковский счет" Создайте класс "Банковский счет" с приватными переменными для номера счета, баланса и владельца. Пополните баланс через дружественный класс. Вариант №6 Задание 1 Создать класс БИТОВАЯ СТРОКА. Строки данного класса могут содержать только символы «0» и «1». Если в составе инициализирующей строки будут встречены любые символы, отличные от допустимых, БИТОВАЯ_СТРОКА принимает нулевое значение. Добавить возможность инвертирования значения строки. Задание 2 Класс "Фильм": Создайте класс "Фильм" с приватными переменными для названия, режиссера и года выпуска. Вычислите возраст картины через дружественный класс. Вариант №7 Задание 1 Создать класс ШЕСТНАДЦАТЕРИЧНАЯ_СТРОКА. Строки данного класса могут содержать только символы «0», «1», «2», «3», «4», «5», «6», «7», «8», «9», «А», «В», «C», «D», «E», «F». Если в составе инициализирующей строки будут встречены любые символы, отличные от допустимых, ШЕСТНАДЦАТЕРИЧНАЯ_ СТРОКА принимает нулевое значение. Добавить возможность произведения операции побитовой ИЛИ для двух строк. Задание 2 Класс "Авиабилет": Создайте класс "Авиабилет" с приватными переменными для пункта отправления, пункта назначения и даты вылета и даты прилета. Реализуйте дружественный класс «Flight», чтобы вычислить время полета. Вариант №8 Задание 1 Создать класс ВОСЬМИРИЧНАЯ_СТРОКА. Строки данного класса могут содержать только символы «0», «1», «2», «3», «4», «5», «6», «7». Если в составе инициализирующей строки будут встречены любые символы, отличные от допустимых, ВОСЬМИРИЧНАЯ_ СТРОКА принимает нулевое значение. Добавить возможность объединения двух строк. Задание 2 Класс "Шар": Создайте класс "Шар" с приватной переменной для радиуса и дружественный класс "Info", который будет выводить площадь поверхности и объём шара. Вариант №9 Задание 1 Создать класс ТРОИЧНАЯ_СТРОКА. Строки данного класса могут содержать только символы «0», «1», «2». Если в составе инициализирующей строки будут встречены любые символы, отличные от допустимых, ТРОИЧНАЯ_ СТРОКА принимает нулевое значение. Добавить возможность представления значения строки в двоичной системе. Задание 2 Класс "Прямоугольник": Создайте класс "Прямоугольник", у которого есть приватные переменные для длины и ширины. Измените переменные через дружественный класс. Вариант №10 Задание 1 Создать класс ДВЕНАДЦАТИРИЧНАЯ_СТРОКА. Строки данного класса могут содержать только символы «0», «1», «2», «3», «4», «5», «6», «7», «8», «9», «А», «В». Если в составе инициализирующей строки будут встречены любые символы, отличные от допустимых, ДВЕНАДЦАТИРИЧНАЯ _СТРОКА принимает нулевое значение. Добавить возможность представления значения строки в десятичной системе. Задание 2 Класс "Книжная полка": Напишите класс "Книжная полка" с переменными количество книг, ширина книг, ширина полки. Создайте дружественный класс, который найдет количество полок необходимых для данного количества книг. Вариант №11 Задание 1 Создать класс БИТОВАЯ СТРОКА. Строки данного класса могут содержать только символы «0» и «1». Если в составе инициализирующей строки будут встречены любые символы, отличные от допустимых, БИТОВАЯ_СТРОКА принимает нулевое значение. Добавить возможность инвертирования значения строки. Задание 2 Класс "Банковский счет": Напишите класс "Банковский счет" с приватными переменными для номера счета, баланса (в рублях) и типа счета. Реализуйте дружественный класс, который будет выводить баланс, но в долларах. Вариант №12 Задание 1 Создать класс ШЕСТНАДЦАТЕРИЧНАЯ_СТРОКА. Строки данного класса могут содержать только символы «0», «1», «2», «3», «4», «5», «6», «7», «8», «9», «А», «В», «C», «D», «E», «F». Если в составе инициализирующей строки будут встречены любые символы, отличные от допустимых, ШЕСТНАДЦАТЕРИЧНАЯ_ СТРОКА принимает нулевое значение. Добавить возможность произведения операции побитовой ИЛИ для двух строк. Задание 2 Класс "Треугольник": Напишите класс "Треугольник" с приватными переменными для трех сторон. Вычислите возможен ли данный треугольник, используя дружественный класс. Вариант №13 Задание 1 Создать класс ВОСЬМИРИЧНАЯ_СТРОКА. Строки данного класса могут содержать только символы «0», «1», «2», «3», «4», «5», «6», «7». Если в составе инициализирующей строки будут встречены любые символы, отличные от допустимых, ВОСЬМИРИЧНАЯ_ СТРОКА принимает нулевое значение. Добавить возможность объединения двух строк. Задание 2 Класс "Задача": Напишите класс "Задача" с приватными переменными для описания, срочности и статуса (выполнена/не выполнена), и дружественный класс, который выведет все срочные и невыполненные задания. Вариант №14 Задание 1 Создать класс ТРОИЧНАЯ_СТРОКА. Строки данного класса могут содержать только символы «0», «1», «2». Если в составе инициализирующей строки будут встречены любые символы, отличные от допустимых, ТРОИЧНАЯ_ СТРОКА принимает нулевое значение. Добавить возможность представления значения строки в двоичной системе. Задание 2 Класс "Книга": Создайте класс "Книга" с приватными переменными для названия книги, автора и года издания. Реализуйте дружественный класс для подсчета количества книг одного года. Вариант №15 Задание 1 Создать класс ТРОИЧНАЯ_СТРОКА. Строки данного класса могут содержать только символы «0», «1», «2». Если в составе инициализирующей строки будут встречены любые символы, отличные от допустимых, ТРОИЧНАЯ_СТРОКА принимает нулевое значение. Добавить возможность представления значения строки в двоичной системе. Задание 2 Класс "Студент": Напишите класс "Студент" с приватными переменными для имени, возраста и группы, и дружественный класс «Group”, который выведет переменные студентов одной группы. Вариант №16 Задание 1 Создать класс ДВЕНАДЦАТИРИЧНАЯ_СТРОКА. Строки данного класса могут содержать только символы «0», «1», «2», «3», «4», «5», «6», «7», «8», «9», «А», «В». Если в составе инициализирующей строки будут встречены любые символы, отличные от допустимых, ДВЕНАДЦАТИРИЧНАЯ _СТРОКА принимает нулевое значение. Добавить возможность представления значения строки в десятичной системе. Задание 2 Класс "Товар": Создайте класс "Товар" с приватными переменными для названия, цены и количества на складе. Реализуйте дружественный метод, который будет возвращать общую стоимость товара на основе цены и количества. Вариант №17 Задание 1 Создать класс БИТОВАЯ СТРОКА. Строки данного класса могут содержать только символы «0» и «1». Если в составе инициализирующей строки будут встречены любые символы, отличные от допустимых, БИТОВАЯ_СТРОКА принимает нулевое значение. Добавить возможность инвертирования значения строки. Задание 2 Класс "Автомобиль": Создайте класс "Автомобиль" с приватными переменными для марки, модели и года выпуска. Вычислите срок эксплуатации машины, используя дружественный класс. Вариант №18 Задание 1 Создать класс ШЕСТНАДЦАТЕРИЧНАЯ_СТРОКА. Строки данного класса могут содержать только символы «0», «1», «2», «3», «4», «5», «6», «7», «8», «9», «А», «В», «C», «D», «E», «F». Если в составе инициализирующей строки будут встречены любые символы, отличные от допустимых, ШЕСТНАДЦАТЕРИЧНАЯ_ СТРОКА принимает нулевое значение. Добавить возможность произведения операции побитовой ИЛИ для двух строк. Задание 2 Класс "Адрес": Создайте класс "Адрес" с приватными переменными для улицы, города и почтового индекса. Реализуйте дружественный метод, который будет выводить адреса и индексы одного города. Вариант №19 Задание 1 Создать класс ВОСЬМИРИЧНАЯ_СТРОКА. Строки данного класса могут содержать только символы «0», «1», «2», «3», «4», «5», «6», «7». Если в составе инициализирующей строки будут встречены любые символы, отличные от допустимых, ВОСЬМИРИЧНАЯ_ СТРОКА принимает нулевое значение. Добавить возможность объединения двух строк. Задание 2 Класс "Календарь": Напишите класс "Календарь" с приватными переменными для месяца и дня. Добавьте дружественный метод, который будет выводить день и месяц цифрами (к примеру, 12.02). Вариант №20 Задание 1 Создать класс ВОСЬМИРИЧНАЯ_СТРОКА. Строки данного класса могут содержать только символы «0», «1», «2», «3», «4», «5», «6», «7». Если в составе инициализирующей строки будут встречены любые символы, отличные от допустимых, ВОСЬМИРИЧНАЯ_ СТРОКА принимает нулевое значение. Добавить возможность объединения двух строк. Задание 2 Класс "Заказ": Создайте класс "Заказ" с приватными переменными для номера заказа, суммы(руб.) и статуса и дружественный класс, который выведет сумму выполненных заказов. Лабораторная работа №5 Вариант №1 Создайте базовый класс Автомобиль, содержащий в себе информацию: марка автомобиля, модель, год выпуска. При помощи наследования реализуйте еще 2 производных класса: Легковые автомобили, Грузовые автомобили. Реализуйте следующие функции: 1) конструктор класса автомобиль должен принимать аргументы для инициализации марки, модели и года выпуска автомобилей; 2) класс Легковые автомобили должен иметь функцию, которая возвращает количество пассажирских мест в автомобиле; 3) класс Грузовые автомобили должен иметь функцию, которая возвращает тип двигателя. Все классы должны иметь функцию getInfo(), выводящую аргументы. Вариант №2 Создайте базовый класс Студент, содержащий в себе информацию: ФИО, группа, специальность. При помощи наследования реализуйте еще 2 производных класса: Бакалавриат, Специалитет. Реализуйте следующие функции: 1) конструктор класса Студент должен принимать аргументы для инициализации ФИО, группу и специальность студентов; 2) с помощью метода сортировки отсортируйте аргументы класса Студент по алфавиту; 3) класс Бакалавриат должен иметь функцию, которая возвращает количество студентов, учащихся на этой основе; 4) класс Специалитет должен иметь: дополнительные данные (пол студента) и функцию, которая возвращает количество мальчиков, учащихся на этой основе. Все классы должны иметь функцию getInfo(), выводящую аргументы. Вариант №3 Создайте базовый класс Аквариум, содержащий в себе информацию: количество рыб, объем аквариума в литрах, температура воды. При помощи наследования реализуйте еще 2 производных класса: Морской аквариум, Пресноводный аквариум. Реализуйте следующие функции: 1) конструктор класса Аквариум должен принимать аргументы для инициализации количества рыб, объема аквариума в литрах, температуры воды; 2) класс Морской аквариум должен включать в себя дополнительные данные, такие как: Количество моллюсков, а также функцию установления солености воды; 3) класс Пресноводный аквариум должен включать в себя дополнительные данные, такие как: Количество растений. Все классы должны иметь функцию getInfo(), выводящую аргументы. Вариант №4 Создайте базовый класс Магазин, содержащий в себе информацию: наименование товара, дата изготовления. При помощи наследования реализуйте еще 2 производных класса: Овощной отдел, Молочный отдел. Реализуйте следующие функции: 1) конструктор класса Магазин должен принимать аргументы для инициализации наименования товаров, дату их изготовления; 2) класс Овощной отдел должен иметь дополнительную информацию: название, странапроизводитель, а также метод подсчета товаров из Китая; 3) класс Молочный отдел должен иметь дополнительную информацию: название товара, функцию, которая возвращает уровень (%) жирности продукта. Все классы должны иметь функцию getInfo(), выводящую аргументы. Вариант №5 Создайте базовый класс Книга, содержащий в себе информацию: название, автор, год издания. При помощи наследования реализуйте еще 2 производных класса: Издательства, Жанр. Реализуйте следующие функции: 1) конструктор класса Книга должен принимать аргументы для инициализации названия, автора, года издания книг; 2) класс Издательства должен содержать дополнительную информацию: название издательства, название книги, количество страниц, а также метод, который подсчитывает среднее количество страниц у книг, изданных определенным издательством (на выбор); 3) класс Жанр должен иметь дополнительную информацию: название жанра, название книги, а также метод подсчета количества книг с жанром ужасы. Все классы должны иметь функцию getInfo(), выводящую аргументы. Вариант №6 Создайте базовый класс Фигуры, содержащий в себе информацию: название, размеры сторон. При помощи наследования реализуйте еще 2 производных класса: Квадрат, Треугольник. Реализуйте следующие функции: 1) конструктор класса Фигуры должен принимать аргументы для инициализации названия, размер сторон фигур; 2) класс Квадрат должен иметь метод вычисления периметра и площади; 3) класс Треугольник должен содержать дополнительную информацию: тип треугольника (тупоугольный и т.п.). Все классы должны иметь функцию getInfo(), выводящую аргументы. Вариант №7 Создайте базовый класс Животные, содержащий в себе информацию: название, тип обитания, тип питания (хищник, травоядный и т.п.). При помощи наследования реализуйте еще 2 производных класса: Млекопитающие, Птицы. Реализуйте следующие функции: 1) конструктор класса Животные должен принимать аргументы для инициализации названия, типа обитания, типа питания животных; 2) класс Животные должен содержать функцию, которая возвращает количество животных с типом питания травоядные; 3) класс Млекопитающее должен иметь дополнительную информацию: количество рождаемых детёнышей, а также функцию, которая возвращает среднее значение рождаемых детёнышей у всех млекопитающих; 4) класс Птицы должен иметь дополнительные данные: время бодрствования (ночное и т.п.). Все классы должны иметь функцию getInfo(), выводящую аргументы. Вариант №8 Создайте базовый класс Видеоигры, содержащий в себе информацию: название, жанр, разработчик, год выпуска. При помощи наследования реализуйте еще 2 производных класса: Одиночные игры, Кооперативные игры. Реализуйте следующие функции: 1) конструктор класса Видеоигры должен принимать аргументы для инициализации названия, жанра, разработчика, года выпуска видеоигры; 2) класс Видеоигры должен иметь функцию вывода количества игр, выпущенных в 2005 году; 3) класс Одиночная игра должен иметь дополнительную информацию: длительность игры (время прохождения), а также метода подсчета среднего времени прохождения; 4) класс Кооперативная игра должен иметь дополнительную информацию: количество боссов, сложность игры. Все классы должны иметь функцию getInfo(), выводящую аргументы. Вариант №9 Создайте базовый класс Компания, содержащий в себе информацию о сотрудниках: ФИО, должность, зарплата. При помощи наследования реализуйте еще 2 производных класса: Продажи, Товары. Реализуйте следующие функции: 1) конструктор класса Компания должен принимать аргументы для инициализации ФИО, должности и з/п сотрудников, а также добавить метод подсчета количества всех сотрудников; 2) класс Продажи должен иметь дополнительную информацию: объем продаж, сотрудник, а также добавить метод для вычисления сотрудника, с наибольшим количеством продаж; 3) класс Товары должен содержать дополнительную информацию: наименование товара, цена, а также метод для подсчета средней цены товаров. Все классы должны иметь функцию getInfo(), выводящую аргументы. Вариант №10 Создайте базовый класс Страны, содержащий в себе информацию: название, столица, площадь. При помощи наследования реализуйте еще 2 производных класса: Население, Тип правления. Реализуйте следующие функции: 1) конструктор класса Страны должен принимать аргументы для инициализации названия, столицы, площади стран; 2) с помощью метода сортировки отсортируйте аргументы класса Страны по алфавиту; 3) класс Население должен иметь дополнительную информацию: население(количество), и функцию, которая возвращает количество студентов, учащихся на этой основе; 4) класс Тип правления должен иметь дополнительную информацию: тип правления, а также метод подсчета стран с типом правления монархия. Все классы должны иметь функцию getInfo(), выводящую аргументы. Вариант №11 Создайте базовый класс Планеты, содержащий в себе информацию: название, среднее расстояние от солнца, диаметр. При помощи наследования реализуйте еще 2 производных класса: Наземность, Гиганты. Реализуйте следующие функции: 1) конструктор класса Студент должен принимать аргументы для инициализации ФИО, группу и специальность студентов; 2) класс Планеты должен содержать метод вывода планет, со средним расстоянием больше 500 млн.км; 3) класс Наземность должен иметь дополнительную информацию: наличие атмосферы, наличие воды; 4) класс Гиганты должен иметь дополнительную информацию: название планеты, количество спутников, а также метод вывода планеты с наименьшим количеством спутников. Все классы должны иметь функцию getInfo(), выводящую аргументы. Вариант №12 Создайте базовый класс Фрукты, содержащий в себе информацию: наименование, цвет, цена. При помощи наследования реализуйте еще 2 производных класса: Яблоки, Ягоды. Реализуйте следующие функции: 1) конструктор класса Фрукты должен принимать аргументы для инициализации наименования, цвета, цены фруктов; 2) класс Яблоки должен иметь дополнительную информацию: вкус (кисло/сладко и т.п.), количество товара; 3) класс Ягоды должен иметь дополнительную информацию: название ягоды, цена за 100грамм, а также метод вычисления цены ягод на кг. Все классы должны иметь функцию getInfo(), выводящую аргументы. Вариант №13 Создайте базовый класс Лес, содержащий в себе информацию: название, площадь, тип леса. При помощи наследования реализуйте еще 2 производных класса: Деревья, Грибы. Реализуйте следующие функции: 1) конструктор класса Лес должен принимать аргументы для инициализации названия, площади, типа леса; 2) класс Деревья должен иметь дополнительную информацию: название, высота, порода (хвойные и т.п.), возраст, а также метод подсчета среднего возраста деревьев; 3) класс Грибы должен иметь дополнительную информацию: название, пищепрегодность (съедобные/несъедобные), а также метод подсчета количества съедобных грибов. Все классы должны иметь функцию getInfo(), выводящую аргументы. Вариант №14 Создайте базовый класс Напитки, содержащий в себе информацию: название, объем, цена. При помощи наследования реализуйте еще 2 производных класса: Сок, Газировка. Реализуйте следующие функции: 1) конструктор класса Напитки должен принимать аргументы для инициализации названия, объема, цены напитков; 2) класс Сок должен содержать дополнительную информацию: тип сока (яблочный и т.п.), наличие мякоти; 3) класс Газировка должен одержать дополнительную информацию: тип газировки (сильногазированная и т.п.), наличие сахара, а также функцию, которая возвращает массовую долю углекислого газа. Все классы должны иметь функцию getInfo(), выводящую аргументы. Вариант №15 Создайте базовый класс Духи, содержащий в себе информацию: название, объем (мл), цена. При помощи наследования реализуйте еще 2 производных класса: Женские ароматы, Мужские ароматы. Реализуйте следующие функции: 1) конструктор класса Женские ароматы должен принимать аргументы для инициализации названия, объема(мл), цены духов; 2) класс Женские ароматы должен содержать дополнительную информацию: тип аромата (цветочный и т.п.), страна производитель, а также функцию, которая возвращает количество; 3) класс Мужские ароматы должен содержать дополнительную информацию: тип духов (твердые, жидкие), а также функцию, которая возвращает концентрацию эфирных масел. Все классы должны иметь функцию getInfo(), выводящую аргументы. Вариант №16 Создайте базовый класс Цветы, содержащий в себе информацию: название, цвет, стоимость за 1 цветок. При помощи наследования реализуйте еще 2 производных класса: Букетные цветы, Комнатные растения. Реализуйте следующие функции: 1) конструктор класса Цветы должен принимать аргументы для инициализации названия, цвета, стоимости за 1 цветок; 2) класс Букетные цветы должен содержать дополнительную информацию: название, высоту(длину), а также метод подсчета цены цветка за 5 штук; 3) класс Комнатные растения должен иметь дополнительную информацию: название, частота полива в неделю, а также функцию, которая возвращает среднее значение частоты полива растений. Все классы должны иметь функцию getInfo(), выводящую аргументы. Вариант №17 Создайте базовый класс Выпечка, содержащий в себе информацию: название, количество, дата изготовления. При помощи наследования реализуйте еще 2 производных класса: Сладкая выпечка, Сытная выпечка. Реализуйте следующие функции: 1) конструктор класса Студент должен принимать аргументы для инициализации названия, количества, даты изготовления; 2) класс Сладкая выпечка должна содержать дополнительную информацию: тип теста (слоеное и т.п.), начинка (яблоко и т.п.), а также функцию, которая возвращает значение температуры при выпечке; 3) класс Сытная выпечка должен иметь дополнительную информацию: мука (ржаная и т.п.), начинка, количество, а также функцию, которая возвращает количество выпечки с «начинкой ветчина и сыр». Все классы должны иметь функцию getInfo(), выводящую аргументы. Вариант №18 Создайте базовый класс Одежда, содержащий в себе информацию: название, размер, пол, цена. При помощи наследования реализуйте еще 2 производных класса: Верхняя одежда, Повседневная одежда. Реализуйте функции: 1) конструктор класса Одежда должен принимать аргументы для инициализации названия, размера, пола, цены одежды; 2) класс Верхняя одежда должен содержать дополнительную информацию: тип верхней одежды (куртка и т.п.), материал; 3) класс Повседневная одежда должен иметь дополнительную информацию: тип одежды (брюки и т.п.), материал, размер, а также функцию, которая возвращает количество вещей с содержанием шерсти. Все классы должны иметь функцию getInfo(), выводящую аргументы. Вариант №19 Создайте базовый класс Шоколадная фабрика, содержащий в себе информацию: название продукта, количество продукта, добавки (орехи и т.п.). При помощи наследования реализуйте еще 2 производных класса: Шоколад, Продажи. Реализуйте следующие функции: 1) конструктор класса Шоколадная фабрика должен принимать аргументы для инициализации названия продукта, количества продукта, добавок; 2) класс Шоколад должен иметь функцию вывода количества (%) какао в продуктах; 3) класс Продажи должен иметь дополнительную информацию: название продукта, количество проданного, цена реализации, а также метод, который подсчитывает количество проданного товара. Все классы должны иметь функцию getInfo(), выводящую аргументы. Вариант №20 Создайте базовый класс Школа, содержащий в себе информацию: название учебного заведения, адрес, количество учащихся. При помощи наследования реализуйте еще 2 производных класса: Ученики, Преподаватели. Реализуйте следующие функции: 1) конструктор класса Школа должен принимать аргументы для инициализации названия учебного заведения, адреса, количества учащихся; 2) класс Ученики должен содержать дополнительную информацию: ФИО учащегося, класс, средний балл, а также функцию, которая выводит значение количества учеников 11а класса со средним баллом больше 4,5; 3) класс Преподаватели должен содержать дополнительную информацию: ФИО, возраст, какой предмет ведет, а также функцию, которая выводит преподавателей, имеющих классное руководство. Все классы должны иметь функцию getInfo(), выводящую аргументы. Лабораторная работа №6 Вариант №1 Создайте базовый класс Shape, который имеет виртуальную функцию calculateArea() для вычисления площади фигуры. От него унаследуйте классы Circle, Rectangle и Triangle, каждый из которых реализует метод calculateArea() для своего типа фигуры. Вариант №2 Создайте абстрактный класс Animal, у которого есть виртуальный метод makeSound(). Наследуйте от него классы Lion, Elephant и Monkey, каждый из которых переопределяет метод makeSound() для издания своего уникального звука. Вариант №3 Создайте базовый класс Account с методами deposit() и withdraw(). От него унаследуйте классы SavingsAccount и CheckingAccount, в которых переопределите методы в зависимости от типа счета. Вариант №4 Создайте базовый интерфейс Formatter, который имеет виртуальный метод format(). От него унаследуйте классы BoldFormatter, ItalicFormatter и UnderlineFormatter, которые представляют различные способы форматирования текста. Вариант №5 Создайте базовый класс Task с методом displayDetails(). От него унаследуйте классы WorkTask, HomeTask и StudyTask, каждый из которых реализует метод displayDetails(), чтобы отображать информацию о задаче в различном формате. Вариант №6 Создайте абстрактный класс Game с чисто виртуальным деструктором и виртуальной функцией play(). Реализуйте классынаследники Chess и Poker, которые переопределяют метод play() для игры в соответствующую игру. Вариант №7 Создайте абстрактный класс Vehicle, у которого есть поля для количества колес и максимальной скорости. Добавьте абстрактные методы для вывода информации о транспортном средстве. Затем создайте классы Car и Bicycle, которые наследуются от класса Vehicle. Реализуйте конструкторы для каждого из этих классов, которые будут вызывать конструктор базового класса Vehicle и передавать необходимые параметры для инициализации. Вариант №8 Создайте базовый класс Fruit с методом getTaste(). Создайте классы Apple, Banana и Orange, которые наследуются от класса Fruit и переопределяют метод getTaste() для каждого фрукта. Вариант №9 Создайте базовый класс Person с методом work(). Создайте классы Teacher, Student и Engineer, которые наследуются от класса Person и реализуют метод work() для каждой профессии. Вариант №10 Создайте абстрактный класс Furniture, содержащий чисто виртуальную функцию displayInfo(). Реализуйте классынаследники Chair и Table, которые переопределяют функцию displayInfo() для отображения информации о соответствующей мебели. Вариант №11 Создайте класс Sportsman с виртуальной функцией тренировки. Создайте классы Boxer и Runner, которые наследуются от класса Sportsman и реализуют метод тренировки. Вариант №12 Создайте класс Colour с виртуальной функцией смешивания. Создайте классы Red, Blue и Yellow, которые наследуются от класса Colour и реализуют метод смешивания. Вариант №13 Создайте абстрактный класс Drink с виртуальной функцией приготовления. Создайте классы Tea, Coffee и Cocktail, которые наследуются от класса Drink и реализуют метод приготовления. Вариант №14 Создайте абстрактный класс Book с виртуальной функцией read(). Создайте подклассы Novel, Detective и Fantastic, переопределите функцию read(). Вариант №15 Создайте базовый класс Transport с виртуальной функцией Movement (передвижение). Создайте производные классы Car, Bicycle и Plane с их собственными реализациями функции передвижения. В main() создайте массив указателей на объекты разных классов и вызовите функцию передвижения для каждого объекта. Вариант №16 Создайте базовый класс Animal с методом eat(). Создайте классы Dog, Cat и Bird, которые наследуются от класса Animal и переопределяют метод eat() для каждого животного, чтобы они ели соответствующую пищу. Вариант №17 Создайте класс Moll с виртуальным методом CalculatePrice(). Напишите классынаследники Product и Service, переопределяющие метод CalculatePrice(). Вариант №18 Определите абстрактный класс Plant с виртуальным методом grow(). Реализуйте классынаследники Flower и Tree, переопределяющие метод grow(). Вариант №19 Создайте абстрактный класс Technique с виртуальной функцией use(). Реализуйте подклассы Computer, Smartphone и Tablet, переопределите функцию use(). Вариант №20 Создать базовый класс Fruit с виртуальным методом Weight. От этого класса унаследовать классы Apple, Pea и Orange. В основной программе создать массив указателей на объекты базового класса и вызвать для каждого элемента метод Weight. | |