Желая автоматизировать розничную торговую точку, мы обнаруживаем две абстракции - товара и продаж. Класс Товар - это то, что мы продали в некотором соглашении, а класс Продажа - само соглашение, в котором продано несколько товаров. Нужно понимать, что ассоциация работает в оба бока: задавшись товаром, можно выйти на соглашение, в котором он был продан, а пойдя от соглашения, найти, что было продано.
Это ассоциация вида "один-к-многим": каждый экземпляр товара относится лишь к одной последней продаже, в то время как каждый экземпляр Продажа может указывать на совокупность проданных товаров.
Как показывает этот пример, ассоциация - смысловая связь. За умалчиванием, она не имеет направления (если не обсуждена другая ассоциация, как в данном примере, имеет в виду двусторонняя связь) и не объясняет, как классы общаются друг с другом (мы можем лишь отметить семантическую зависимость, отметив, какие роли классы играют друг для друга). Однако именно это нам нужно на ранней стадии анализа. Следовательно, мы фиксируем участников, их роли и (как будет сказано дальше) мощность отношений.
Отношение "один-до-одного" помечает очень узкую ассоциацию. Например, в розничной системе продаж примером могла бы быть связь между классом Продажа и классом Операция Кредитной Карты: каждая продажа отвечает ровно одному снятию денег из данной кредитной карточки. Отношения "многие к многим" тоже нередки. Например, каждый объект класса Покупатель может инициировать транзакцию с несколькими объектами класса Торговый Агент, и каждый торговый агент может взаимодействовать с несколькими покупателями.
|