
- •Лабораторная работа по uml n2 «Работа со связями»
- •1. Ассоциации
- •2. Ограничения ассоциаций
- •В этом примере ограничение ассоциации Обслуживает указывает на то, что БанковскийСлужащий обслуживает клиентов в порядке очереди
- •3. Классы ассоциаций
- •4. Связи
- •5. Кратность
- •6. Квалификатор ассоциации
- •7. Рефлексивные ассоциации
- •8. Наследование и обобщение
- •9. Изучение наследования
- •10. Абстрактные классы
- •11. Зависимости
- •12. Объекты-агрегаты
- •17. Ограничения агрегаций
- •18. Композитные объекты
- •19. Контексты
- •20. Интерфейсы и реализации
- •Класс связан с интерфейсом отношением реализации, которое обозначается пунктирной линией с незакрашенным треугольником, примыкающим к интерфейсу и указывающим на него
- •21. Области видимости
- •Общедоступные и защищенные операции для автомобиля
- •22. Статические и динамические классы
- •Вопросы и ответы
- •Задание
Лабораторная работа по uml n2 «Работа со связями»
В этой л/р Вы узнаете, как классы связываются друг с другом. Будут рассмотрены следующие понятия.
• Ассоциации.
• Кратность.
• Составные ассоциации.
• Рефлексивные ассоциации.
• Наследование и обобщение.
• Зависимости.
В модели, описанной в предыдущей л/р, был указан набор классов, представляющих словарь предметной области игры в баскетбол. Такая модель обеспечивает основу для дальнейшего исследования принципов игры. Очевидно, что она является неполной. Недостающая информация — это взаимодействие классов между собой. Если взглянуть на модель (см. рис. 15 л/р N 1), то можно заметить отсутствие связи игрока с мячом. Из самой модели не понятно, как игроки образуют команду или как происходит игра. Сконструирован лишь список терминов, но не "снимок" предметной области.
В этой лабораторной работе изучены связи между классами, позволяющие дополнить картину предметной области.
1. Ассоциации
Если классы концептуально взаимодействуют друг с другом, то такое взаимодействие называется ассоциацией. Исходная модель игры в баскетбол содержит несколько подобных примеров. Рассмотрим одну ассоциацию — между игроком и командой. Ее можно охарактеризовать фразой "игрок играет в команде" и отобразить в виде соединяющей два класса линии, указав имя ассоциации (Играет в) прямо над этой линией. Для наглядности с помощью закрашенного треугольника указывается направление взаимосвязи. На рис. 1 показано, как изобразить ассоциацию «Играет в» между игроком и командой.
Рис. 1. Ассоциация между игроком и командой
Когда один класс ассоциируется с другим, каждый из них играет свою роль в этой ассоциации. Такие роли можно показать на диаграмме под линией ассоциации возле обозначения класса, выполняющего соответствующую роль. В ассоциации между профессиональным игроком и командой эти роли носят название наемный работник и наниматель. На рис. 2 показано, как изображать эти роли.
Рис. 2. В ассоциации каждый класс обычно играет определенную роль, которую можно представить на диаграмме
Ассоциация может работать в другом направлении: команда нанимает игроков. Обе ассоциации можно показать на одной диаграмме, сопровождая их закрашенным треугольником соответствующей ориентации (рис. 3).
Рис. 3. На одной диаграмме можно показать две ассоциации между классами
Ассоциации могут быть более сложными, чем просто связь одного класса с другим. Если рассмотреть таких игроков команды, как защитники, нападающие и центровые, то при построении их ассоциаций с классом Команда получим диаграмму, изображенную на рис. 4.
Рис. 4. С одним классом могут ассоциироваться несколько других
2. Ограничения ассоциаций
Иногда ассоциация между двумя классами должна удовлетворять некоторому правилу. Это правило заключается в размещении ограничения возле линии ассоциации. Например, БанковскийСлужащий обслуживает клиентов по очереди. Этот факт отражается в модели с помощью фразы по очереди в фигурных скобках возле класса Клиент (для отражения ограничения) (рис. 5).
Рис. 5. На ассоциацию можно наложить ограничение.