Главная страница

варианты. Варианты заданий к ЛР2. Варианты заданий к лр2 тпо


Скачать 35.82 Kb.
НазваниеВарианты заданий к лр2 тпо
Анкорварианты
Дата25.12.2022
Размер35.82 Kb.
Формат файлаdocx
Имя файлаВарианты заданий к ЛР2.docx
ТипДокументы
#862621



Варианты заданий к ЛР2 ТПО


Задания могут быть изменены и адаптированы к работе. При этом не изменять предметную область и не исключать полностью наследование классов (допускается изменить структуру).

Допускается также сформулировать собственное задание (или взять собственный готовый проект).

Пример задания (минимум):

Разработать три класса, которые следует связать между собой, используя наследование:

  1. класс Product, который имеет три элемент-данных — имя, цена и вес товара (базовый класс для всех классов);

  2. класс  Buy, содержащий данные о количестве покупаемого товара в штуках, о цене за весь купленный товар и  о весе товара (производный класс для класса Product и базовый класс для класса Check);

  3. класс Check, не содержащий никаких элемент-данных. Данный класс должен выводить на экран информацию о товаре и о покупке ( производный класс для класса Buy);

Варианты можно выбрать из двух приведенных ниже списков.

Варианты: группа 1



Вариант 1


Создать абстрактный класс Point (точка). На его основе создать классы ColoredPoint и Line. На основе класса Line создать класс ColoredLine и класс PolyLine (многоугольник). Все классы должны иметь виртуальные методы установки и получения значений всех координат, а также изменения цвета и получения текущего цвета.

Создать класс Picture, содержащий массив/параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода характеристик объектов списка. Написать демонстрационную программу, в которой будут использоваться все методы классов.

Дополнительное задание: дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла.

Вариант 2


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

Создать класс Garage, содержащий массив/параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода характеристик объектов списка. Написать демонстрационную программу, в которой будут использоваться все методы классов.

Дополнительное задание: дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла.

Вариант 3


Создать абстрактный класс Figure. На его основе реализовать классы Rectangle (прямоугольник), Circle (круг) и Trapezium (трапеция) с возможностью вычисления площади, центра тяжести и периметра.

Создать класс Picture, содержащий массив/параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода характеристик объектов списка. Написать демонстрационную программу, в которой будут использоваться все методы классов.

Дополнительное задание: дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла.

Вариант 4


Создать абстрактный класс Number c виртуальными методами, реализующими арифметические операции. На его основе реализовать классы Integer и Real.

Создать класс Series (набор), содержащий массив/параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода характеристик объектов списка. Написать демонстрационную программу, в которой будут использоваться все методы классов.

Дополнительное задание: дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла.

Вариант 5


Создать абстрактный класс Body. На его основе реализовать классы Parallelepiped (прямоугольный параллелепипед), Cone (конус) и Ball (шар) с возможностью вычисления площади поверхности и объема.

Создать класс Series (набор), содержащий массив/параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода характеристик объектов списка. Написать демонстрационную программу, в которой будут использоваться все методы классов.

Дополнительное задание: дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла.

Вариант 6


Создать абстрактный класс Currency для работы с денежными суммами. Определить в нем методы перевода в рубли и вывода на экран. На его основе реализовать классы Dollar, Euro и Pound (фунт стерлингов) с возможностью пересчета в центы и пенсы соответственно.

Создать класс Purse (кошелек), содержащий массив/параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода общей суммы, переведенной в рубли, и суммы по каждой из валют. Написать демонстрационную программу, в которой будут использоваться все методы классов.

Дополнительное задание: дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла.

Вариант 7


Создать абстрактный класс Triangle (треугольник), задав в нем длину двух сторон, угол между ними, методы вычисления площади и периметра. На его основе создать классы, описывающие равносторонний, равнобедренный и прямоугольный треугольники со своими методами вычисления площади и периметра.

Создать класс Picture, содержащий массив/параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода характеристик объектов списка и получения суммарной площади. Написать демонстрационную программу, в которой будут использоваться все методы классов.

Дополнительное задание: дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла.

Вариант 8


Создать абстрактный класс Solution (решение) с виртуальными методами вычисления корней уравнения и вывода на экран. На его основе реализовать классы Linear (линейное уравнение) и Square (квадратное уравнение).

Создать класс Series (набор), содержащий массив/параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода характеристик объектов списка. Написать демонстрационную программу, в которой будут использоваться все методы классов.

Дополнительное задание: дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла.

Вариант 9


Создать абстрактный класс Function (функция) с виртуальными методами вычисления значения функции y = f(x) в заданной точке х и вывода результата на экран. На его основе реализовать классы Ellipse, Hiperbola и Parabola.

Создать класс Series (набор), содержащий массив/параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода характеристик объектов списка. Написать демонстрационную программу, в которой будут использоваться все методы классов.

Дополнительное задание: дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла.

Вариант 10


Создать абстрактный класс Triad (тройка) с виртуальными методами увеличения на 1. На его основе реализовать классы Date (дата) и Time (время).

Создать класс Memories, содержащий массив/параметризованную коллекцию пар (дата-время) объектов этих классов в динамической памяти. Предусмотреть возможность вывода характеристик объектов списка и выборки самого раннего и самого позднего событий. Написать демонстрационную программу, в которой будут использоваться все методы классов.

Дополнительное задание: дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла.

Вариант 11


Описать абстрактный класс Element (элемент логической схемы), задав в нем числовой идентификатор, количество входов, идентификаторы присоединенных к нему элементов (до 10) и двоичные значения на входах и выходе. На его основе реализовать классы AND и OR — двоичные вентили, которые могут иметь различное количество входов и один выход и реализуют логическое умножение и сложение соответственно.

Создать класс Sсheme (схема), содержащий массив/параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможности вывода характеристик объектов списка и вычисление значений, формируемых на выходах схемы по заданным значениям входов. Написать демонстрационную программу, в которой будут использоваться все методы классов.

Дополнительное задание: дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла.

Вариант 12


Описать абстрактный класс Element (элемент логической схемы) задав в нем символьный идентификатор, количество входов, идентификаторы присоединенных к нему элементов (до 10) и двоичные значения на входах и выходе. На его основе реализовать классы AND_NOT и OR_NOT — двоичные вентили, которые могут иметь различное количество входов и один выход и реализуют логическое умножение c отрицанием и сложение c отрицанием соответственно.

Создать класс Sсheme (схема), содержащий массив/параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможности вывода характеристик объектов списка и вычисление значений, формируемых на выходах схемы по заданным значениям входов. Написать демонстрационную программу, в которой будут использоваться все методы классов.

Дополнительное задание: дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла.

Вариант 13


Описать абстрактный класс Trigger (триггер), задав в нем идентификатор и двоичные значения на входах и выходах. На его основе реализовать классы RS и JK, представляющие собой триггеры соответствующего типа.

Создать класс Register (регистр), содержащий массив/параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможности вывода характеристик объектов списка, общего сброса и установки значений каждого триггера по заданным значениям входов. Написать демонстрационную программу, в которой будут использоваться все методы классов.

Дополнительное задание: дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла.

Вариант 14


Создать абстрактный класс Progression (прогрессия) с виртуальными методами вычисления заданного элемента и суммы прогрессии. На его основе реализовать классы Linear (арифметическая) и Exponential (геометрическая).

Создать класс Series (набор), содержащий массив/параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода характеристик объектов списка и вывода общей суммы всех прогрессий. Написать демонстрационную программу, в которой будут использоваться все методы классов.

Дополнительное задание: дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла.

Вариант 15


Создать абстрактный класс Pair (пара значений) с виртуальными методами, реализующими арифметические операции. На его основе реализовать классы Fractional (дробное) и LongLong (длинное целое).

В классе Fractional вещественное число представляется в виде двух целых, в которых хранятся целая и дробная часть числа соответственно. В классе LongLong длинное целое число хранится в двух целых полях в виде старшей и младшей части.

Создать класс Series (набор), содержащий массив/параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода характеристик объектов списка и вывода общей суммы всех значений. Написать демонстрационную программу, в которой будут использоваться все методы классов.

Дополнительное задание: дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла.

Вариант 16


Создать абстрактный класс Integer (целое) с символьным идентификатором, виртуальными методами, реализующими арифметические операции, и методом вывода на экран. На его основе реализовать классы Decimal (десятичное) и Binary (двоичное). Число представить в виде массива цифр.

Создать класс Series (набор), содержащий массив/параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода значений и идентификаторов всех объектов списка и вывода общей суммы всех десятичных значений. Написать демонстрационную программу, в которой будут использоваться все методы классов.

Дополнительное задание: дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла.

Вариант 17


Создать абстрактный класс Sorting (сортировка) с идентификатором последовательности, виртуальными методами сортировки, получения суммы и вывода на экран. На его основе реализовать классы Choice (метод выбора) и Quick (быстрая сортировка).

Создать класс Series (набор), содержащий массив/параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода идентификаторов и сумм элементов каждого объекта списка, а также вывода общей суммы всех значений. Написать демонстрационную программу, в которой будут использоваться все методы классов.

Дополнительное задание: дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла.

Вариант 18


Создать абстрактный класс Pair (пара значений) с виртуальными методами, реализующими арифметические операции, и методом вывода на экран. На его основе реализовать классы Money (деньги) и Complex (комплексное число).

В классе Money денежная сумма представляется в виде двух целых, в которых хранятся рубли и копейки соответственно. При выводе части числа снабжаются словами «руб.» и «коп.». В классе Complex предусмотреть при выводе символ мнимой части (i).

Создать класс Series (набор), содержащий массив/параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода объектов списка. Написать демонстрационную программу, в которой будут использоваться все методы классов.

Дополнительное задание: дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла.

Вариант 19


Создать абстрактный класс Worker с полями, задающими фамилию работника, фамилии руководителя и подчиненных и виртуальными методами вывода списка обязанностей и списка подчиненных на экран. На его основе реализовать классы Manager (руководитель проекта), Developer (разработчик) и Coder (младший программист).

Создать класс Group (группа), содержащий массив/параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода всех объектов списка и выборки по фамилии с выводом всего дерева подчиненных. Написать демонстрационную программу, в которой будут использоваться все методы классов.

Дополнительное задание: дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла.

Варианты заданий 2

Вариант № 1
Моделировать структуру предприятия:


Классы

Свойства

Фирма

название (get, set)

Отдел

название (get, set)

количество сотрудников (get, set)

Сотрудник

фио (get, set)

должность (get, set)

оклад (get, set)


Предположим, что все Сотрудники делятся на два типа:

  • Штатный сотрудник

  • Сотрудник по контракту


Требуется производить расчет заработной платы:

  • Для Штатного сотрудника может быть установлена премия, тогда зар.плата = оклад + премия

  • Для Сотрудника по контракту зар.плата = оклад


для этого выполнить следующие действия:

  • сделать класс Сотрудник абстрактным (abstract)

  • добавить в класс Сотрудник абстрактный метод «рассчитать зарплату»

  • создать классы «Штатный сотрудник» и «Контрактник», унаследовать их от класса Сотрудник

  • в класс Штатный сотрудник добавить свойство «премия» (set)

  • перегрузить метод «рассчитать зарплату» в классах «Штатный сотрудник» и «Контрактник»


В один из отделов добавить двух сотрудников по контракту и двух штатных сотрудников. Назначить премии штатным сотрудникам. Используя цикл for рассчитать и вывести на экран зарплату по всем сотрудникам данного отдела.

Вариант № 2
Моделировать структуру банка:


Классы

Свойства

Банк

название (get, set)

Филиал

название (get, set)

общая сумма вкладов (get, set)

Вклад

фио вкладчика (get, set)

сумма вклада (get, set)



Предположим, что все Вклады делятся на два типа:

  • Долгосрочный - начисления процентов по вкладу зависят от суммы (до 10000 – 12%, больше 10000 – 18% годовых)

  • До востребования (6% годовых независимо от суммы вклада)


Предполагаем, что проценты по вкладу начисляются каждый месяц. Требуется рассчитывать сумму вклада, по прошествии указанного количества месяцев.

для этого выполнить следующие действия:

  • сделать класс Вклад абстрактным (abstract)

  • добавить в класс Вклад абстрактный метод «рассчитать сумму вклада» с параметром «количество месяцев»

  • создать классы «Долгосрочный вклад» и «Вклад до востребования», унаследовать их от класса Вклад

  • перегрузить метод «рассчитать сумму вклада (количество месяцев)» в классах «Долгосрочный вклад» и «Вклад до востребования».


В определенный филиал добавить два долгосрочных вклада и три вклада до востребования. Используя цикл for рассчитать и вывести на экран первоначальную сумму и сумму по прошествии трех месяцев каждого вклада данного филиала.

Вариант № 3
Моделировать структуру аэропорта:


Классы

Свойства

Аэропорт

название (get, set)

Летательный аппарат

название (get, set)

макс. количество пассажиров (get, set)

Пассажир

фио (get, set)

№посадочного места (get, set)


Предположим, что все Летательные аппараты делятся на два типа:

  • Самолет

  • Вертолет


Требуется реализовать процедуру взлета летательного аппарата, реализованную по разному для Самолета и Вертолета. При этом Самолет также отличается от Вертолета наличием свойства «длина полосы разгона».
Процедура выводит в текстовом виде примерно следующее:

  • для Самолета: «<название л/а>. Разогреваю двигатели. Прохожу полосу разгона длиной <длина полосы разгона>. Взлетаю. Убираю шасси.»

  • для Вертолета «<название л/а>. Разогреваю двигатели. Взлетаю.»


для этого выполнить следующие действия:

  • сделать класс Летательный аппарат абстрактным (abstract)

  • добавить в класс Летательный аппарат абстрактный метод «взлет»

  • создать классы «Самолет» и «Вертолет», унаследовать их от класса Летательный аппарат

  • добавить в класс Самолет свойство «длина полосы разгона» (get, set)

  • перегрузить метод «взлет» в классах «Самолет» и «Вертолет».


В определенный аэропорт добавить два самолета и один вертолет. Указать длину полосы разгона для самолетов. Используя цикл for вызвать метод «взлет» у каждого летательного аппарата аэропорта и вывести результаты на экран.

Вариант № 4
Моделировать структуру библиотеки:


Классы

Свойства

Библиотека

название (get, set)

Отдел (по жанрам)

название жанра (get, set)

количество изданий (get, set)

Издание

название (get, set)

автор (get, set)

год издания (get, set)


Предположим, что все Издания делятся на два типа:

  • Книга – отличается наличием резюме (краткого описания)

  • Журнал – отличается наличием множества статей


Требуется формировать текстовое описание Издания в виде:

  • для Книги: «Автор: <автор>,

год издания: <год издания>

название: <название>

резюме: <резюме>»



  • для Журнала: «Автор: <автор>,

год издания: <год издания>

название: <название>

статьи: <название статьи 1>, <название статьи 2> … »

для этого выполнить следующие действия:

  • сделать класс Издание абстрактным (abstract)

  • добавить в класс Издание абстрактный метод «сформировать описание»

  • создать классы «Книга» и «Журнал», унаследовать их от класса Издание

  • добавить в класс Журнал множественное свойство «названия статей» (get, add)

  • перегрузить метод «сформировать описание» в классах «Книга» и «Журнал».


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

Вариант № 5
Моделировать структуру компании сотовой связи:


Классы

Свойства

Компания

Название (get, set)

Тариф

название (get, set)

количество абонентов (get, set)

Абонент

фио (get, set)

номер телефона (get, set)

остаток на счете (get, set)



Предположим, что все Тарифы делятся на два типа:

  • Посекундный. Отличается наличием свойства «стоимость секунды разговора» (get, set). Оплата производится за каждую секунду разговора.

  • Поминутный. Отличается наличием свойства «стоимость минуты разговора» (get, set). Оплата производится за каждую минуту разговора, т.е., например, 20 сек. приравнивается 1 мин.


Требуется производить подсчет стоимости разговора указанной длительности (в секундах).
для этого выполнить следующие действия:

  • сделать класс Тариф абстрактным (abstract)

  • добавить в класс Тариф абстрактный метод «рассчитать стоимость разговора» с параметром «количество секунд»

  • создать классы «Посекундный тариф» и «Поминутный тариф», унаследовать их от класса Тариф

  • в класс Посекундный тариф добавить свойство «стоимость секунды разговора» (get, set)

  • в класс Поминутный тариф добавить свойство «стоимость минуты разговора» (get, set)

  • перегрузить метод «рассчитать стоимость разговора (количество секунд)» в классах «Посекундный тариф» и «Поминутный тариф».


В определенную компанию добавить один поминутный тариф и один посекундный тариф. Указать стоимость минуты и секунды разговора соответственно. Используя цикл for, рассчитать и вывести на экран стоимость разговора продолжительностью 80 секунд для каждого тарифа данной компании.

Вариант № 6
Моделировать структуру автосалона:


Классы

Свойства

Автосалон

название (get, set)

Автомобиль (марка)

название марки (get, set)

макс. количество пассажиров (get, set)

стоимость (get, set)

количество на складе(get, set)

boolean наличие (get, set)

Заявка на покупку

фио покупателя (get, set)

номер телефона (get, set)



Предположим, что все Заявки делятся на два типа:

  • Заявки на приобретение со стенда.

  • Заявки на отложенную поставку. Отличается наличием свойства «процент скидки» (get, set), действующей при приобретении автомобиля с отложенной поставкой.


Требуется производить подсчет стоимости заказа:


  • Заявка на приобретение со стенда. Стоимость заказа = стоимость автомобиля, указанного в заявке.

  • Заявка на отложенную поставку. Стоимость заказа = стоимость автомобиля, указанного в заявке * (100% - процент скидки).


для этого выполнить следующие действия:

  • сделать класс Заявка абстрактным (abstract)

  • добавить в класс Заявка абстрактный метод «рассчитать стоимость заказа»

  • создать классы «Заявка на приобретение со стенда» и «Заявка на отложенную поставку», унаследовать их от класса Заявка

  • в класс Заявка на отложенную поставку добавить свойство «процент скидки» (get, set)

  • перегрузить метод «рассчитать стоимость заказа» в классах «Заявка на приобретение со стенда» и «Заявка на отложенную поставку».


На определенный автомобиль оформить две заявки на приобретение со стенда, и одну заявку на отложенную поставку. Для заявки на отложенную поставку указать значение процента скидки. Используя цикл for, рассчитать и вывести на экран стоимость заказа по всем заявкам на данный автомобиль.

Вариант № 7
Моделировать структуру музыкальной коллекции:


Классы

Свойства

Коллекция

название (get, set)

фио владельца (get, set)

Музыкальный носитель (альбом)

автор/группа (get, set)

жанр (get, set)

год выпуска (get, set)

общая продолжительность звучания (get, set)

Музыкальное произведение

название (get, set)

продолжительность (get, set)



Предположим, что все Музыкальные произведения делятся на два типа:

  • Песни – отличаются наличием свойств «текст» и «автор текста»

  • Инструментальные произведения – отличаются наличием множественного свойства строкового типа «инструменты-участники»


Требуется формировать текстовое описание Музыкального произведения в виде:

  • для Песни:

«Название: <название>,

продолжительность: <продолжительность>

текст: <текст>

автор текста: <автор текста>»



  • для Инструментального произведения:

«Название: <название>,

продолжительность: <продолжительность>

инструменты-участники: <инструменты-участники>»

для этого выполнить следующие действия:

  • сделать класс Музыкальное произведение абстрактным (abstract)

  • добавить в класс Музыкальное произведение абстрактный метод «сформировать описание»

  • создать классы «Песня» и «Инструментальное произведение», унаследовать их от класса Музыкальное произведение

  • добавить в класс Песня свойства «текст» и «автор текста» (set)

  • добавить в класс Инструментальное произведение свойство «инструменты-участники» (add, remove)

  • перегрузить метод «сформировать описание» в классах «Песня» и «Инструментальное произведение».


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

Вариант № 8
Моделировать структуру реестра городского жилья:


Классы

Свойства

Город

название (get, set)

Здание

название улицы (get, set)

номер дома (get, set)

общая площадь (get)

базовая ежемесячная оплата за кв.м площади (get, set)

Помещение

номер (get, set)

площадь (get, set)


Предположим, что все Помещения делятся на два типа:


  • Квартира – отличается наличием множественного свойства строкового типа «ФИО жильцов»

  • Офис – отличается наличием свойств «Название фирмы-владельца», «Вид деятельности»


Требуется рассчитывать ежемесячную оплату за помещение по следующим правилам:
- для Квартиры:

Ежемес. оплата = базовая ежемесячная оплата за кв.м площади * площадь * (1 + кол-во жильцов*0,1)

- Для Офиса:

Ежемес. оплата = базовая ежемесячная оплата за кв.м площади * площадь * 2

для этого выполнить следующие действия:

  • сделать класс Помещение абстрактным (abstract)

  • добавить в класс Помещение абстрактный метод «рассчитатьЕжемесячнуюОплату»

  • создать классы «Квартира» и «Офис», унаследовать их от класса Помещение

  • добавить в класс Квартира свойство «ФИО жильцов» (add)

  • добавить в класс Офис свойства «название фирмы-владельца» и «вид деятельности» (get, set)

  • перегрузить метод «рассчитатьЕжемесячнуюОплату» в классах «Квартира» и «Офис».


В определенное здание добавить две квартиры и один офис. Для квартир указать ФИО жильцов. Для офиса указать название фирмы-владельца и вид деятельности. Используя цикл for, рассчитать и вывести на экран размер ежемесячной оплаты для каждого помещения в данном здании.
Вариант № 9
Моделировать структуру зоопарка:


Классы

Свойства

Зоопарк

название (get, set)

Вольер/клетка

номер (get, set)

размер (get, set)

макс. количество животных (get, set)

текущее количество животных (get, set)

Животное

название (get, set)

boolean хищник (get, set)


Предположим, что все Животные, живущие в зоопарке, делятся на три типа:

  • Рыбы – отличаются наличием свойства boolean «глубоководная»

  • Птицы – отличаются наличием свойства «скорость полета»

  • Звери – отличается наличием свойства «среда обитания» (н-р, «лес», «степь», «пустыня» и т.п.)


Требуется формировать описание животных по следующему правилу:


  • для Рыбы:

«Класс: <глубоководная/не глубоководная> рыба,

Название: <название>,

хищник: <да/нет>»


  • для Птицы:

«Класс: птица,

Название: <название>,

скорость полета: <скорость полета>»


  • для Зверя:

«Класс: зверь,

Название: <название>,

Среда обитания: <среда обитания>»

для этого выполнить следующие действия:

  • сделать класс Животное абстрактным (abstract)

  • добавить в класс Животное абстрактный метод «сформировать описание»

  • создать классы «Рыба», «Птица» и «Зверь», унаследовать их от класса Животное

  • добавить в класс Рыба свойство «глубоководная» (set)

  • добавить в класс Птица свойство «скорость полета» (set)

  • добавить в класс Зверь свойство «среда обитания» (set)

  • перегрузить метод «сформировать описание» в классах «Рыба», «Птица» и «Зверь».


В определенный зоопарк добавить одну рыбу, одну птицу и одного зверя. Для рыбы указать значение свойства «глубоководная», для птицы – «скорость полета», для зверя – «среда обитания». Используя цикл for, сформировать и вывести на экран описание каждого животного в зоопарке.

Вариант № 10
Моделировать структуру автоматизированного банкомата:


Классы

Свойства

Банк

название (get, set)

Счет

номер (get, set)

PIN-код (get, set)

остаток (get, set)

Банкомат

идентификационный номер (get, set)

адрес (get, set)



Предположим, что все Счета делятся на два типа:

  • обычный

  • льготный


Требуется реализовать метод «снять со счета(сумма)» так, чтобы при снятии определенной суммы с Обычного счета дополнительно взималось 5% от указанной суммы, а при снятии с Льготного счета – взимался всего 1%.
для этого выполнить следующие действия:

  • сделать класс Счет абстрактным (abstract)

  • в классе Счет сделать абстрактным метод «снять со счета» с параметром «сумма»

  • создать классы «Обычный счет» и «Льготный счет», унаследовать их от класса Счет

  • перегрузить метод «снять со счета(сумма)» в классах «Обычный счет» и «Льготный счет».


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

Простые задачи

11.Задача Саr


Создать базовый класс Саr (машина), характеризуемый торговой маркой (строка), числом цилиндров, мощностью. Определить методы переназначения и изме­нения мощности. Создать производный класс Lorry (грузовик), характеризуе­мый также грузоподъемностью кузова. Определить функции переназначения марки и изменения грузоподъемности.
12.Задача Liquid


Создать класс Liquid (жидкость), имеющий поля названия и плотности. Определить методы переназначения и изменения плотности. Создать произ­водный класс Alcohol (спирт), имеющий крепость. Из класса Alcohol создать произ­водный класс Beer (пиво), имеющий процент содержания хмеля. Определить методы пере­назначения и изменения крепости и процента хмеля.
13.Задача Man


Создать класс Man (человек), с полями: имя, возраст, пол и вес). Определить методы переназначения имени, изменения возраста и изменения веса. Соз­дать производный класс Student, имеющий поля факультет, курс, группа. Определить методы изменения возраста, веса, перехода на следующий курс, перевода в другую группу.
14.Задача Pair/ Fraction


Создать класс Pair (пара чисел); определить методы изменения полей и срав­нения пар: пара pi больше пары р2, если (first.pl > first.р2) или (first.pl = first.р2) и (second.pl > second.р2). Определить класс-наследник Fraction с по­лями: целая часть числа и дробная часть числа. Определить полный набор ме­тодов сравнения.
15.Задача Pair/ Rectangle


Создать класс Pair (пара чисел); определить методы изменения полей и вы­числения произведения чисел. Определить производный класс Rectangle (прямоугольник) с полями-сторонами. Определить методы вычисления пе­риметра и площади прямоугольника.
16.Задача Pair/ RightAngled


Создать класс Pair (пара чисел); определить методы изменения полей и вы­числения произведения чисел. Определить производный класс RightAngled с полями-катетами. Определить методы вычисления гипотенузы и площади треугольника.
17.Задача Triangle / Equilateral


Создать класс Triangle с полями-сторонами. Определить методы изменения сторон, вычисления углов, вычисления периметра. Создать производный класс Equilateral (равносторонний), имеющий поле площади. Определить метод вычисления площади.
18.Задача Triangle / RightAngled


Создать класс Triangle с полями-сторонами. Определить методы изменения сторон, вычисления углов, вычисления периметра. Создать производный класс RightAngled (прямоугольный), имеющий поле площади. Определить метод вычисления площади.
19.Задача Triad /Triangle


Создать класс Triad (тройка чисел); определить методы изменения полей и вычисления суммы чисел. Определить производный класс Triangle с поля­ми-сторонами. Определить методы вычисления углов и площади треугольника.
20.Задача Triad /Date


Создать класс Triad (тройка чисел); определить метод сравнения триад (см. Задача Pair/ Fraction). Определить производный класс Date с полями: год, месяц и день. Определить полный набор методов сравнения дат.
21.Задача Triad / Time


Создать класс Triad (тройка чисел); определить метод сравнения триад (см. Задача Pair/ Fraction). Определить производный класс Time с полями: час, минута и секунда. Определить полный набор методов сравнения моментов времени.
22.Задача Triad / Date_1


Создать класс Triad (тройка чисел); определить методы увеличения полей на 1. Определить производный класс Date с полями: год, месяц и день. Переопреде­лить методы увеличения полей на 1 и определить метод увеличения даты на n дней.
23.Задача Triad/Time_1


Создать класс Triad (тройка чисел); определить методы увеличения полей на 1. Определить класс-наследник Time с полями: час, минута, секунда. Пере­определить методы увеличения полей на 1 и определить методы увеличения на n секунд m минут.
24.Задача Triad/vector3D


Создать базовый класс Triad (тройка чисел) с операциями сложения с чис­лом, умножения на число, проверки на равенство. Создать производный класс vector3D, задаваемый тройкой координат. Должны быть реализованы: опера­ция сложения векторов, скалярное произведение векторов.

Создать базовый класс Pair (пара целых чисел) с операциями проверки на ра­венство и перемножения полей. Реализовать операцию вычитания пар по формуле (а, b) - (с, d) = (а - b, с - d). Создать производный класс Rational; определить новые операции сложения (а, b) + (с, d) = (ad + be, bd) и деления (а, b)/ (с, d) = (ad, be); переопределить операцию вычитания (а, b) - (с, d) = = (ad - be, bd).
25.Задача Pair/ Complex


Создать класс Pair (пара чисел); определить метод перемножения полей и операцию сложения пар (а, b) + (с, d) = (а + b, с + d). Определить производ­ный класс Complex с полями: действительная и мнимая части числа. Опреде­лить методы умножения (а, b) * (с, d) = (ас - bd, ad + be) и вычитания (а, b) - (с, d) -(a-b, c-d).
26.Задача Pair/ Long


Создать класс Pair (пара целых чисел); определить методы изменения полей и операцию сложения пар (а, b) + (с, d) = (а + b, с + d). Определить класс-на­следник Long с полями: старшая часть числа и младшая часть числа. Пере­определить операцию сложения и определить методы умножения и вычитания.
27.Задача Pair/ Money


Создать класс Pair (пара целых чисел); определить метод умножения на чис­ло и операцию сложения пар (а, Ь) + (с, d) = (а + Ь, с + d). Определить класс-наследник Money с полями: рубли и копейки. Переопределить операцию сло­жения и определить методы вычитания и деления денежных сумм.


написать администратору сайта