Шаг 39.
Унифицированный язык моделирования UML.
Отношения между классами. Ассоциация

    На этом шаге рассмотрим отношение между классами - ассоциацию.

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

    Рассмотрим пример. В описании средства передвижения основными абстракциями являются "транспортное средство" (vehicle) и "колеса" (wheels). Как показано на рис. 1, между классом Wheel и классом Vehicle существует простая ассоциация.


Рис.1. Пример ассоциации

    По умолчанию эта ассоциация является двусторонней. Экземпляр класса Wheel должен однозначно идентифицировать соответствующий объект класса Vehicle, и наоборот.

    Это пример ассоциации "один-множество" (one-to-many). Каждый экземпляр класса Wheel связан с одним экземпляром класса Vehicle, но, в свою очередь, каждый экземпляр класса Vehicle может содержать несколько объектов класса Wheel (на рис. 1 они обозначены звездочкой).

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

    В предыдущем примере рассмотрена ассоциация "один-множество", означающая, что каждый экземпляр класса Vehicle может содержать несколько экземпляров класса Wheel или не содержать ни одного (например, лодка, являющаяся транспортным средством, не имеет колес), в то время как каждый экземпляр класса Wheel связан только с одним экземпляром класса Vehicle. Это свойство называется множественностью ассоциации. На практике существует три разновидности множественности:

  1. Взаимно-однозначная зависимость (one-to-one).
  2. Зависимость "один-множество" (one-to-many).
  3. Зависимость "множество-множество" (many-to-many).

    Взаимно-однозначное отношение обозначает очень узкую ассоциацию. Например, в розничном телемаркетинге существует взаимно-однозначное отношение: каждая продажа соответствует только одной транзакции с данной кредитной карточкой, а каждая транзакция соответствует только одной продаже. Отношения "множество- множество" также распространены довольно широко. Например, каждый покупатель может инициировать транзакцию с разными продавцами, а каждый продавец может взаимодействовать с несколькими покупателями.

    На следующем шаге рассмотрим наследование классов.




Предыдущий шаг Содержание Следующий шаг