
- •Тема 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.9. Ассоциации
Ассоциация (association) описывает семантические связи между единичными объектами определенных классов. Основная задача ассоциации состоит в обеспечении взаимодействия объектов, принадлежащих разным классам. Все остальные виды отношений относятся к самим классификаторам, но не к их экземплярам. Ассоциация представляет собой упорядоченный список из двух или более классификаторов, с разрешенными повторениями. Наиболее часто встречается бинарная ассоциация, то есть ассоциация между одной парой классификаторов. Экземпляром ассоциации является связь. Связь соединяет упорядоченный список объектов, каждый из которых относится к определенному классу. Бинарная связь соединяет два объекта. Ассоциации несут информацию о связях между объектами внутри одной системы. В процессе работы эти связи могут возникать и исчезать. Они являются тем «клеем», который соединяет воедино все части системы. Не будь ассоциаций, вместо работающей системы мы имели бы просто набор изолированных классов. Если один и тот же класс присутствует в ассоциации несколько раз, то объект этого класса может иметь связь сам с собой. Если один и тот же класс присутствует в ассоциации два раза, то два объекта, которые связываются этой ассоциацией, могут не являться одним и тем же объектом.
Каждая связь ассоциации с классом называется полюсом ассоциации. Вся основная информация об ассоциации прикрепляется к одному из ее полюсов. Полюса ассоциации обладают именами (именами ролей) и видимостью. Наиболее ценное их свойство – множественность, которая указывает на то, сколько экземпляров одного класса может быть связано с одним экземпляром другого класса. Множественность удобнее всего использовать в бинарных ассоциациях, так как в ассоциациях, связывающих более двух классов, это может быть затруднительно.
Продолжим рассмотрение примера с баскетбольной командой. Исходная модель игры в баскетбол содержит несколько подобных примеров. Рассмотрим одну ассоциацию – между игроком и командой. Ее можно охарактеризовать фразой «игрок играет в команде» и отобразить в виде соединяющей два класса линии, указав имя ассоциации (играет в) прямо над этой линией. На рис 5.2-24 показано, как изобразить ассоциацию играет в между игроком и командой.
Рис. 5.2-24. Ассоциация между игроком и командой.
Когда один класс ассоциируется с другим, каждый из них играет свою роль в этой ассоциации. Такие роли можно показать на диаграмме над или под линией ассоциации возле обозначения класса, выполняющего соответствующую роль. В ассоциации между профессиональным игроком и командой эти роли носят название наемный работник и наниматель.
Ассоциация может работать в другом направлении: команда нанимает игроков. Обе ассоциации можно показать на одной диаграмме, сопровождая их стрелкой соответствующей ориентации (рис. 5.2-25).
Играет в
^ Команда
<Г
Рис. 5.2-25. На одной диаграмме можно показать две ассоциации между классами
-
Ассоциации могут быть более сложными, чем просто связь одного класса с другим. Если рассмотреть таких игроков команды, как защитники, нападающие и центровые, то при построении их ассоциаций с классом Команда получим диаграмму, изображенную на рис. 5.2-26
Рис. 5.2-26. С одним классом могут ассоциироваться несколько других
Иногда ассоциация между двумя классами должна удовлетворять некоторому правилу. Это правило заключается в размещении ограничения возле линии ассоциации. Например, Банковский-Служащий обслуживает клиентов по очереди. Этот факт отражается в модели с помощью фразы «по очереди» в фигурных скобках возле класса Клиент (для отражения ограничения) (рис. 5.2-27).
Рис. 5.2-27. Ограничение ассоциации Обслуживает {по очереди}
Другой тип ограничения представляется отношением ИЛИ, которое обозначается с помощью пунктирной линии, соединяющей две линии ассоциаций, с надписью «{или}». Модель на рис. 5.2-28 показывает студента, выбирающего бюджетную или коммерческую форму обучения.
Рис. 5.2-28. Отношение ИЛИ между двумя ассоциациями