Завершенные
#33204

Лабораторная работа на тему «Агрегация и композиция»

Создан:
19 февраля 2023
Срок сдачи:
30 ноября -0001
Бюджет:
500 руб.
Предмет:
Другое
Тип работы:
Лабораторная
Вуз:
Объем:
от 3 до 5 стр.
Шрифт:
Интервал:
Оригинальность:
%
Описание:
Цели:

Изучить отношения ассоциации и зависимости, получить навыки реализации ассоциации и зависимости на С++.

1. Краткие теоретические сведения

Типы отношений между классами

Известны три основных типа отношений между классами. Во-первых, это отношение «обобщение/специализация» (общее и частное), известное как «is-a». Розы это цветы, т.е. розы являются специализированным частным случаем, подклассом более общего класса «цветы». Во вторых, это отношение «целое/часть», известное как «part of». Так, лепестки являются частью цветов. В-третьих, это смысловые отношения (ассоциации). Например, розы и свечи – и то, и другое можно использовать для украшения стола.

Языки программирования выработали несколько общих подходов к выражению отношений этих трех типов. В частности, большинство объектно-ориентированных языков непосредственно поддерживают разные комбинации следующих видов отношений:

 ассоциация;

 наследование;

 агрегация;

 использование;

 параметризация.

Выбор между агрегацией и наследованием

Среди видов отношений между классами наиболее часто встречаются наследование и агрегация.

Наследование применяется в тех случаях, когда один класс является уточненной, более специализированной формой другого. Чтобы определить, является ли понятие X уточненным вариантом понятия Y, можно составить предложение «X является экземпляром Y». Если утверждение звучит корректно (т.е. есть соответствует вашим представлениям о решаемой задаче), то можно заключить, что X и Y связаны отношением наследования.

Отношение агрегации («включать как часть») имеет место, когда второе понятие является составной частью первого, но оба эти понятия не совпадают ни в каком смысле независимо от уровня общности абстракции. Например, автомобиль Car имеет двигатель Engine, хотя ясно, что это не тот случай, когда Car является экземпляром Engine или Engine является экземпляром Car. Класс СCar тем не менее является экземпляром класса автомобилей СVehicle, который в свою очередь является экземпляром класса транспортных средств СMeansOfTransportation. Аналогично проверке для наследования, чтобы проверить отношение агрегации, можно составить предложение «X включает Y как часть» и оценить его корректность.

В большинстве случаев различие между агрегацией и наследованием очевидно.

2. Практическое задание (100%)

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

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

1. Класс «КОМНАТА», содержит закрытые поля: сведения о метраже, высоте потолков и количестве окон и метод подсчета площади комнаты. Класс «КВАРТИРА», содержит закрытые поля: номер этажа, объекты класса «КОМНАТА», метод подсчета площади квартиры и метод вывода информации о комнатах квартиры.

2. Класс «СТУДЕНТ» содержит закрытые поля: номер студенческого билета, Фамилия, Имя, Отчество, дата рождения, массив из пяти оценок и метод подсчета среднего балла. Класс «СТУДЕНЧЕСКАЯ ГРУППА» содержит закрытые поля: название группы, курс, объекты класса «СТУДЕНТ», метод подсчета среднего балла для группы и метод вывода списка студентов, отсортированный по фамилиям в алфавитном порядке.

3. Класс «АВТОМОБИЛЬ» содержит закрытые поля: гос. номер, цвет, фамилия владельца и признак присутствия на стоянке и метод вывода сведений об автомобиле. Класс «АВТОСТОЯНКА», содержит закрытые поля: название автостоянки, объекты класса «АВТОМОБИЛЬ», методы поиска автомобиля по разным критериям и методы вывода списка присутствующих и отсутствующих на стоянке автомобилей.

4. Класс «ЗАПИСЬ» содержит закрытые поля: фамилия, имя, номер телефона, дата рождения. Класс «ЗАПИСНАЯ КНИЖКА», содержащий закрытые поля: фамилия и инициалы владельца, объекты класса «ЗАПИСЬ», метод поиска номера телефона и даты рождения по фамилии и имени, а также метод получения списка людей, номер телефона которых начинается на три заданные цифры.

5. Класс «САМОЛЕТ» содержит закрытые поля: шестизначный номер рейса,

название пункта назначения, время отправления и метод вывода сведений о самолете. Класс «АЭРОПОРТ» содержит закрытые поля: название аэропорта, объекты класса «САМОЛЕТ», метод поиска информации о самолетах, отправляющихся в течении часа после введенного с клавиатуры времени и метод вывода информации о самолетах, отправляющихся в заданный пункт назначения. Информация должна быть отсортирована по времени отправления.

6. Класс «КОМПЛЕКТУЮЩЕЕ» содержит закрытые поля: название, цена, гарантийный срок и метод вывода сведений о комплектующем. Класс «КОМПЬЮТЕР» содержит закрытые поля: серийный номер, марка, объекты класса «КОМПЛЕКТУЮЩЕЕ», метод замены комплектующих компьютера и метод вывода списка комплектующих компьютера.

7. Класс «ПЕСНЯ» содержит закрытые поля: номер песни, название песни, композитор, поэт, исполнитель и метод вывода сведений о песне. Класс «ДИСКИ» содержит закрытые поля: название диска, цена, объекты класса «ПЕСНЯ», метод поиска песни по названию, метод поиска песни по исполнителю и метод вывода списка песен диска, упорядоченный по названию песни.

8. Класс «ПОЕЗД» содержит закрытые поля: номер поезда, название пункта назначения, время отправления и метод вывода сведений о поезде. Класс «ВОКЗАЛ» содержит закрытые поля: название вокзала, объекты класса «ВОКЗАЛ», метод поиска информации о поездах, отправляющихся после введенного с клавиатуры времени и метод вывода информации о поездах, отправляющихся в заданный пункт назначения. Информация должна быть отсортирована по времени отправления.

9. Класс «ТОВАР» содержит закрытые поля: название товара, стоимость единицы товара в рублях, количество единиц товара и метод подсчета стоимости товара. Класс «СКЛАД» содержит закрытые поля: название склада и объекты класса «ТОВАР», метод подсчета стоимости всего товара и метод вывода списка товаров, отсортированный по названию товара.

10. Класс «ЛЕКАРСТВО» содержит закрытые поля: название лекарства, цена, показания к применению, противопоказания и метод вывода сведений о лекарстве. Класс «АПТЕКА» содержит закрытые поля: название аптеки, номер аптеки, объекты класса «ЛЕКАРСТВО», метод поступления новых лекарств в аптеку, метод поиска лекарства по названию и метод вывода списка лекарств аптеки.

11. Класс «АВТОБУС» содержит закрытые поля: номер автобуса название пункта назначения, время отправления и метод вывода сведений об автобусе. Класс «АВТОВОКЗАЛ» содержит закрытые поля: название автовокзала, объекты класса «АВТОБУС», метод поиска информации об автобусах, отправляющихся после введенного с клавиатуры времени в заданный пункт назначения. Информация должна быть отсортирована по времени отправления.

12. Класс «ЖИВОТНОЕ» содержит закрытые поля: кличка животного, название вида, возраст, вес и метод вывода сведений о животном. Класс «ЗООПАРК» содержит закрытые поля: название зоопарка, объекты класса «ЖИВОТНОЕ», метод поступления новых животных в зоопарк, метод убытия животных из зоопарка и метод вывода списка животных зоопарка.

3. Список рекомендуемой литературы

1. Павловская Т. А.C/C++. Программирование на языке высокого уровня : для магистров и бакалавров : учеб. для вузов / Т. А. Павловская. — Гриф МО. — Санкт-Петербург: Питер, 2013. — 460 с. : ил.

2. Professional C++, 3rd Edition. Marc Gregoire. ISBN: 978-1-118-85805-9. Paperback 984 pages. September 2014

4. Контрольные вопросы

1. В чем разница между композицией и агрегацией?

2. В чем разница между наследованием и агрегацией?

3. В случае реализации отношений агрегации и композиции как может храниться информация о связанных объектах? В чем отличие?

4. Привести 3 примера отношения агрегации.

5. Привести 3 примера отношения композиции.
Закажите подобную или любую другую работу недорого
или
Предложения (0)