Главная » UML » Квалифицированные ассоциации UML

0

 

Квалифицированная ассоциация в языке UML эквивалентна таким известным понятиям в языках программирования, как ассоциативные массивы (associative arrays), проекции (maps), хеши (hashes) и словари (dictionaries). Рисунок 5.10 иллюстрирует способ представления ассоциации между классами Order (Заказ) и Order Line (Строка заказа), в котором используется квалификатор. Квалификатор указывает, что в соответствии с заказом для каждого экземпляра продукта (Product) может существовать только одна строка заказа.

С точки зрения программного обеспечения такая квалифицированная ассоциация может повлечь создание интерфейса следующего вида:

 

class Order …

public OrderLine getLlneItem(Product aProduct);

public void addLineltemfNumber amount,  Product forProduct);

 

Таким образом, любой доступ к определенной строке заказа требует подстановки некоторого продукта в качестве аргумента, в предположении, что это структура данных, состоящая из ключа и значения.

Разработчиков часто ставит в тупик кратность квалифицированных ассоциаций. На рис. 5.10 заказ может иметь несколько позиций заказа (Line Items), но кратность квалифицированной ассоциации – это кратность в контексте квалификатора. Поэтому диаграмма говорит, что в заказе имеется 0..1 позиций заказа на продукт. Кратность, равная 1, означает, что в заказе должна быть одна позиция заказа для каждого продукта. Кратность * означает, что для любого продукта может существовать несколько позиций заказа, но доступ к.позициям заказа индексируется по продукту.

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

 

Источник: Фаулер М.UML. Основы, 3-е издание. – Пер. с англ. – СПб: Символ-Плюс, 2006. – 192 с.,ил.

По теме:

  • Комментарии