Кому принадлежит связанный класс в этой диаграмме uml? - PullRequest
1 голос
/ 06 декабря 2010

Извините за этот новый вопрос, я новичок в UML.

Вот схема для системы:

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

Означает ли это, что в реализации системы на Java, основанной на диаграмме, внешний класс должен владеть экземплярами связанного класса?

Извините, если ответ очевиден. Я часами царапал голову над ним.

Ответы [ 3 ]

1 голос
/ 07 декабря 2010

Во-первых, терминология. @ Даниил прав, у вас нет класса ассоциации. Тем не менее, я не думаю, что вы имеете в виду Класс ассоциации:

Означает ли это, что в реализации системы на Java, основанной на диаграмме, внешний класс должен владеть экземплярами связанного класса?

Если я правильно понимаю, это суть вашего вопроса. В терминах реализации, какие классы имеют переменную-член, содержащую список ссылок на экземпляры Associated Class?

Опять же - если я правильно понимаю - ваш вопрос проистекает из следующей логики:

  1. В UML «владение» обычно описывается как качество агрегационных (или композиционных) отношений.
  2. Отношения между Aggregated/Composite PART Class и Associated Class - это простая бинарная ассоциация, а не совокупность / составная.
  3. Следовательно, собственность "собственности" не применяется
  4. Следовательно, кому принадлежит список ссылок на Associated Class экземпляров?

Если это так, тогда проблема в конкретном значении "владения". Хотя в UML они не определены жестко, «владение» обычно означает ответственность за управление полным жизненным циклом.

Я думаю, что вы интерпретируете это более широко: если ассоциация не является агрегированной, участвующие классы не могут содержать ссылки друг на друга.

Это не тот случай. Для Aggregated/Composite PART Class вполне разумно хранить ссылку (или список ссылок) на экземпляры Associated Class. Обратное одинаково верно. В некоторых случаях оба действительны (с сопровождающим необходимо поддерживать согласованность).

Итак, подведем итог: необходимо ли внешнему классу владеть экземплярами Associated Class? Нет. Совершенно верно, что один или оба конца двоичной ассоциации могут управлять экземплярами отношения.

hth и извинения, если я неправильно понял ваш вопрос.

PS: последнее замечание: будьте очень осторожны с тем, что вы имеете в виду, когда используете Агрегацию. Это общеизвестно неточно в спецификации UML. Композиция имеет более строгое определение, и вы можете охватить более 99% всех сценариев моделирования, используя Композицию и простые двоичные ассоциации. О единственном месте Агрегация имеет четко определенный смысл, который не полностью охватывается двумя другими, обозначает, когда рекурсивные отношения должны быть ациклическими.

0 голосов
/ 06 декабря 2010

Диаграмма, которую вы предоставили, на самом деле не содержит класс ассоциации. Класс, который вы назвали «связанный класс», является просто нормальным классом. Он также ничем не принадлежит (что мы видим на диаграмме).

Если вы имели в виду класс ассоциации, взгляните на пример диаграммы с классом ассоциации:

an example class diagram with association class

В этом примере MilleageCredit является ассоциативным классом. Таким образом, для каждой отдельной комбинации Fligh-FrequentFlyer существует один MilleageCredit.

Что касается владения, поскольку класс Association представляет отношение между двумя связанными объектами, он удаляется, когда

  • Ассоциация очищена
  • любой или оба связанных объекта удалены

Так что, если вы удалите Flight или FrequentFlyer, MilleageCredit также исчезнет. Кроме того, если вы отмените связь с рейсом FrequentFlyer снова, MilleageCredit будет удален.

В Интернете есть множество хороших документов по UML, например Основы UML: диаграмма классов

Надеюсь, это поможет, в противном случае предоставьте больше информации в вопросе.

0 голосов
/ 06 декабря 2010

UML не определяет полное поведение системы. Итак, что вы имеете в виду, когда говорите, что объект владеет другим объектом? Также экземпляры AssociatedClass могут быть корневыми объектами, которые не принадлежат никаким другим объектам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...