Этот пример более корректный согласно Note.
Магазин | Режим работы | Дата начала действия режима
Магазин 1 | Режим работы 1 | 1/01/2010
Магазин 1 | Режим работы 2 | 1/02/2010
Магазин 1 | Режим работы 1 | 1/03/2010
У каждого экземпляра "дата начала действия" есть по одному экземпляру Магазин и Режим работы.
А причем тут экземпляр "дата начало действия" - какие такие свойства кроме самой даты данный экземпляр имеет?
Позволю себе цитату:
Арлоу Д., Нейштадт И.
UML 2 и Унифицированный процесс. Практический объектноориентированный анализ и проектирование, 2е издание. – Пер. с англ. – СПб: СимволПлюс, 2007. – 624 с., ил.
В ОО моделировании распространена следующая проблема: когда между классами установлено отношение многиекомногим, встречаются такие атрибуты, которые не удается поместить ни в один из классов. Проиллюстрируем это примером, приведенным на рис. 9.18.
На первый взгляд это довольно безобидная модель:
• каждый человек (объект Person) может работать во многих компаниях (объект Company);
• каждая компания (Company) может нанимать много людей (объект Person).
Однако что происходит, если добавить бизнесправило, заключающееся в том, что каждый Person получает зарплату в каждой нанявшей его Company? Где должна быть записана эта зарплата: в классе Person или в классе Company?
Действительно, нельзя сделать зарплату Person атрибутом класса Person, потому что каждый экземпляр Person может работать на многие Company и в каждой получать разную зарплату. Аналогично нельзя сделать зарплату атрибутом Company, поскольку каждый экземпляр Company нанимает множество Person, зарплата которых может быть разной.
Решение кроется в том, что зарплата на самом деле является собственностью самой ассоциации. У каждой ассоциации найма, устанавливаемой между объектом Person и объектом Company, своя индивидуальная зарплата.
UML позволяет моделировать эту ситуацию с помощью классаассоциации (рис. 9.19). Важно понимать этот синтаксис: многие люди думают, что классассоциация – это всего лишь прямоугольник, свисающий с ассоциации. Но ничто не могло бы быть дальше от истины, чем это.
На самом деле классассоциация – это линия ассоциации (включая все имена ролей и кратности), пунктирная нисходящая линия и прямоугольник класса на конце пунктирной линии. Короче говоря, классассоциация – все, что входит в затемненную область (рис. 9.19).
Классассоциация означает, что в любой момент времени между любыми двумя объектами может существовать только одна связь
Экземпляры классаассоциации – это на самом деле связи, у которых есть атрибуты и операции. Уникальная идентификация этих связей определяется исключительно индивидуальностью объектов, находящихся на каждом конце. Этот фактор ограничивает семантику классаассоциации: его можно использовать только тогда, когда между двумя объектами в любой момент времени установлена единственная уникальная связь. Это обусловлено тем, что каждая связь, которая является экземпляром классаассоциации, должна быть уникальной. На рис. 9.19 применение классаассоциации означает, что на модель накладывается следующее ограничение: для данного объекта Person и данного объекта Company может существовать только один объект Job (должность). Иначе говоря, каждый Person может занимать только одну Job в данной Company.
Однако если ситуация такова, что данный объект Person может занимать несколько Job в данном объекте Company, классассоциацию использовать нельзя – семантика не соответствует!