Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 5. Углубленный анализ.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
66.37 Кб
Скачать

5.2. Моделирование отношений между классами

5.2.1.Моделирование ассоциаций

Ассоциации служат объединению объектов в системе. Они способствуют взаимодействию между объектами.

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

Спецификация ассоциаций подразумевает выполнение следующих действий:

  1. Присваивание имен ассоциациям.

  2. Присваивание имен ассоциативным ролям.

  3. Установление кратности ассоциации

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

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

5.2.2. Моделирование отношений агрегации и композиции

Поиск агрегаций ведется параллельно с поиском ассоциаций. При объяснении отношения агрегации используют фразы “включает” (“has”) и “является частью” (“is part of”). Например, Книга “включает” Главу, Глава “является частью” Книги.

Язык UML обеспечивает только ограниченную поддержку агрегации. Сильная форма агрегации называется в UML композицией. В композиции составной объект может физически содержать компонентные объекты. Компонентный объект может принадлежать только одному составному объекту.

5.2.3. Моделирование отношений обобщения

Общие характеристики (атрибуты и операции) одного или более классов можно погрузить в более общий класс. Это явление известно как обобщение. Отношение обобщения соединяет базовый класс (суперкласс) с более специализированными классами (производными классами). Обобщение делает возможным наследование (многократное использование) характеристик суперкласса производным классом.

Помимо наследования обобщение преследует еще две цели:

  1. Использование подстановки.

  2. Использование полиморфизма.

В соответствии с принципом подстановки объект подкласса может быть присвоен в качестве значения переменной суперкласса. Например, если переменная объявлена с целью хранения объекта Fruit (Фрукт), то объект Apple (Яблоко) является допустимым значением.

В соответствии с принципом полиморфизма одна и та же операция может иметь разные реализации в разных классах. Вызывающий объект может вызвать операцию, не зная и не заботясь о том, какая из реализаций операции выполнится. Вызываемый объект знает, какому классу он принадлежит и выполняет свою собственную реализацию.

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