Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тема-05-02испр.docx
Скачиваний:
0
Добавлен:
10.01.2020
Размер:
797.95 Кб
Скачать

5.2.4.7. Абстрактные классы

В модели баскетбола два класса – Игрок и Время – очень полезны, поскольку служат в каче­стве родительских для важных дочерних классов. Важность дочерних классов состоит в том, что в системе непременно появятся их экземпляры: при реализации модели понадобятся экземпляры классов Защитник, Нападающий, Центровой, ВремяИгры, ВремяАтаки. Классы Игрок и Время не предоставляют никаких экземпляров в модели. Объекты класса Игрок не служат какой-либо цели, так же как и объекты класса Время. В системе не могут создаваться их конкретные экземпляры. Классы, подобные классам Игрок и Время, называются абстрактными. Их имена на диаграмме вы­деляются курсивом.

Абстрактный класс – это класс, в котором определены лишь некоторые характеристики свойств и методов класса, такие как тип возвращаемого значения, имя и список параметров. Абст­рактный класс не содержит кода реализации этих методов и свойств. Программист должен сам определить в производном классе нужные переменные и операторы. Поэтому, перед тем как вы­звать метод абстрактного класса, необходимо обязательно создать экземпляр производного класса.

5.2.4.8. Агрегация и композиция

Объекты-агрегаты. Агрегацией (aggregation) называется ассоциация, представляющая связь «часть-целое» Схе­матически агрегация изображается в виде не закрашенного ромбика у класса-агрегата.

Иногда класс состоит из некоторого количества классов-компонентов. Это особый тип взаи­мосвязи, называемый агрегацией. Компоненты и класс, который они составляют, находятся в ас­социации часть-целое (part-whole). Например, домашний компьютер представляет собой агрегат, состоящий из системного блока, клавиатуры, мыши, монитора, устройства считывания компакт-дисков, одного или нескольких жестких дисков, модема, устройства чтения гибких дисков, прин­тера и, возможно, колонок. В свою очередь, системный блок, наряду с дисковыми накопителями, содержит оперативную память, графическую карту и звуковую карту (и, вероятно, какие-либо другие устройства).

Колесо

Кнопка

Рис. 5.2-21. Компьютерная система в виде агрегата

Агрегацию можно представить в виде дерева, корнем которого является «целое» (например, компьютерная система), листьями – его компоненты. Целое с его компонентом соединяет линия с не закрашенным ромбом, расположенным вблизи целого.

Хотя в примере с компьютером каждый компонент принадлежит одному целому, для отно­шения агрегации это необязательно. Среди домашней техники пульт дистанционного управления может быть компонентом телевизора и видеомагнитофона одновременно.

Иногда набор возможных компонентов агрегата описывается с помощью взаимосвязи ИЛИ. Например, обед может состоять из супа или салата, главного блюда и десерта. Для моделирования такого меню потребуется использовать ограничение слово «ИЛИ» в фигурных скобках на пунк­тирной линии, соединяющей две линии взаимосвязи «часть-целое» (рис. 5.2-22).

Обед

1

1 4 {или}

1

1

Суп

Салат

ГлавноеБлюдо

Десерт

Рис. 5.2-22. Ограничение агрегации – частью целого является один из двух объектов

Композитные объекты. Композиция (composition) – это более сильная форма агрегации, при которой агрегат несет полную ответственность за создание и уничтожение своих частей. Композиция характеризуется тем, что каждый элемент может принадлежать только одному целому.

Графически композиция изображается в виде закрашенного ромба у класса-агрегата. Между каждым классом, представляющим собой часть, и классом, представляющим собой целое, сущест­вует своя отдельная ассоциация, однако для удобства все ассоциации можно изображать в виде дерева. Компоненты кофейного столика – столешница и ножки – составляют композит (рис. 5.2-23).

Рис. 5.2-23. В композите каждый компонент принадлежит только одному целому.