
- •Тема 5.2. Теоретические основы объектно-ориентированного программирования
- •5.2.1. Основные определения
- •5.2.2. Объектно-ориентированная декомпозиция и объектно-ориентированные модели
- •5.2.3. Объектная модель и ее составные части
- •5.2.4. Средства uml для моделирования классов и их отношений
- •5.2.4.1. Введение в uml
- •5.2.4.2. Статическое представление системы в диаграммах классов
- •5.2.4.3. Визуализация класса
- •5.2.4.4. Уровни представления
- •5.2.4.5. Идентификация классов
- •5.2.4.6. Отношения
- •5.2.4.7. Наследование и обобщение
- •5.2.4.7. Абстрактные классы
- •5.2.4.8. Агрегация и композиция
- •5.2.4.9. Ассоциации
- •5.2.4.10. Классы ассоциаций
- •5.2.4.11 Кратность
- •5.2.4.13. Интерфейс и реализация
- •5.2.4.14. Области видимости
- •5.2.4.15. Зависимости
- •5.2.5. Визуализация существующего кода.
- •Практическое руководство. Поиск кода с помощью обозревателя архитектуры
- •Открытие обозревателя архитектуры
- •Обозреватель архитектуры: домены, представления, узлы, типы узлов и типы ссылок
- •Поиск исходного кода в решении Visual Studio
- •Представление классов в обозревателе архитектуры
- •Поиск кода в решении
- •Поиск скомпилированного кода
- •5.2.6. Visual Studio 2010 - uml моделирования проектов
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. В композите каждый компонент принадлежит только одному целому.