Лекции (1 курс, 2 семестр) УТкПО / Управление требованиями к программному обеспечению 4
.pdf
•Ассоциация
Композиция — более строгий вариант агрегации. Известна также как агрегация по значению.
Композиция – это форма агрегации с четко выраженными отношениями владения и совпадением времени жизни частей и целого. Композиция имеет жёсткую зависимость времени существования экземпляров класса контейнера и экземпляров содержащихся классов. Если контейнер будет уничтожен, то всё его содержимое будет также уничтожено.
Графически представляется как и агрегация, но с закрашенным ромбиком.
•Обобщение
Обобщение – выражает специализацию или наследование, в котором специализированный элемент (потомок) строится по спецификациям обобщенного элемента (родителя).
Потомок разделяет структуру и поведение родителя. Графически обобщение представлено в виде сплошной линии с пустой стрелкой, указывающей на родителя.
•Реализация
Реализация – это семантическая связь между классами, когда один из них (поставщик) определяет соглашение, которого второй (клиент) обязан придерживаться.
Это связи между интерфейсами и классами, которые реализуют эти интерфейсы. Это, своего рода, отношение «целое-часть». Поставщик, как правило, представлен абстрактным классом. В графическом исполнении связь реализации – это гибрид связей обобщения и зависимости: треугольник указывает на поставщика, а второй конец пунктирной линии – на клиента.
Связи и ассоциации
Связь (link) – это физическое или концептуальное соединение между объектами.
Например, Джо Смит работает на компанию Симплекс. В большинстве случаев связь соединяет ровно два объекта, но бывают связи, соединяющие большее количество объектов.
С математической точки зрения связь является кортежем (tuple), то есть списком объектов. Связь – это экземпляр ассоциации.
Связи и ассоциации
Ассоциация (association) – это описание группы связей, обладающих общей структурой и общей семантикой.
Например, человек может работать на какуюлибо компанию.
Связи, являющиеся экземплярами некоторой ассоциации, соединяют объекты тех классов, которые соединены между собой этой ассоциацией. Ассоциация описывает множество потенциальных связей точно так же, как класс описывает множество потенциальных объектов.
Связи и ассоциации обычно присутствуют в постановке задачи в виде глаголов.
Пример модели финансового приложения
Брокерские конторы должны иметь возможность выполнять следующие действия:
записывать принадлежность различных акций, отслеживать дивиденды, предупреждать клиентов об изменениях на рынке и вычислять предписываемую маржу
Пример модели финансового приложения
Диаграмма классов показывает, что человек может быть владельцем акций неопределенного количества компаний (от нуля и более). С другой стороны, владельцами акций одной компании могут быть несколько человек.
Пример модели финансового приложения
На диаграмме объектов показаны примеры. Джон, Мэри и Сью являются владельцами акций
General Electric. Сью и Элис являются владельцами акций компании IBM. Джефф не купил никаких акций, а потому и связи для него нет.
Синтаксис
Система обозначений UML предписывает изображать связь как линию между двумя объектами. Линия может состоять из нескольких прямолинейных сегментов. Если у связи есть имя, оно подчеркивается.
В нашем примере Джон является владельцем акций General Electric. Ассоциация соединяет между собой классы и тоже обозначается линией (которая тоже может иметь несколько прямолинейных сегментов). В нашем примере люди являются владельцами акций компаний.
По нашему соглашению названия связей и ассоциаций выделяются курсивом, а сегменты линий привязываются к прямоугольной сетке. Удобно по возможности расставлять классы так, чтобы ассоциация читалась слева направо.
Кратность
Кратность (multiplicity) – это количество экземпляров одного класса, которые могут быть связаны с одним экземпляром другого класса через одну ассоциацию. Кратность ограничивает количество связанных между собой объектов.
В литературе чаше всего рассматриваются два значения кратности: 1 и «много», но в общем случае кратность может быть потенциально бесконечным подмножеством неотрицательных целых чисел.
На диаграммах UML кратность указывается явно около конца линии, которой обозначается ассоциация. Значение кратности указывается в виде диапазона, например «1» (ровно один), «1..*» (один и более) или «3..5» (от трех до пяти включительно). Специальный символ «*» обозначает слово «много» (many) – нуль и более.
