Диаграмма классов UML: добавлять поля, используемые для реализации отношений или нет? - PullRequest
2 голосов
/ 06 июля 2010

Я пытаюсь выяснить, правильно ли добавлять в поля определенного класса ссылку на объект / коллекцию, с которой связан этот класс.объединяет много экземпляров класса Student.Когда я ставлю на диаграмму оба класса, я добавляю взаимосвязь агрегации между ними.

А теперь вопрос: могу ли я добавить в университет поле типа 'Students: Student []'?Должен ли я?А может я не должен?

Заранее спасибо, Петр

Ответы [ 3 ]

0 голосов
/ 06 июля 2010

Атрибуты собственных свойств ассоциации в UML 2. Это новое и не всегда легко понять концепцию. Я не понимал, зачем нам нужен атрибут, пока не увидел следующую демонстрацию. Золотое правило заключается в том, что атрибуты должны создаваться для сохранения информации об ассоциации в модели. Я нашел интересную учебную сессию по ассоциации и агрегации в UML 2.

Это флэш-демо 2m30s http://www.download -omondo.com / AggregationAndComposition.swf

Вышеуказанное создание ассоциации предназначено для экспертов, я имею в виду модельера, который хочет чистый дизайн и чистую модель, а также совершенную метамодель. Если вам все равно, просто создайте ассоциацию на уровне модели, и она сделает свою работу, но генерация кода не будет выполнена. Это означает, что сопоставления для базы данных должны быть созданы разработчиками на уровне кода. Чтобы понять разницу между обоими видами ассоциаций, посмотрите эту другую флэш-демонстрацию по адресу: http://www.download -omondo.com / association.swf

0 голосов
/ 11 июля 2010

Существует 3 типа отношений: объединение, агрегация и состав.состав - это специализация агрегации, агрегация - это специализация объединения.

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

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

0 голосов
/ 06 июля 2010

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

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

Итак, в вашем случае в университете есть Студенты, так что вы можете создать ассоциацию из университетастуденту, назвав каждую конечную точку и правильно установив кратность.

Теперь, когда вы собираетесь сгенерировать код из вашей модели, просто примите во внимание ассоциации и атрибуты.Таким образом, вам не нужно добавлять свойства как атрибуты и ассоциации, так же как ассоциации.У меня есть несколько диаграмм, с которыми я тестировал этот подход, генерируя sql и php-код из xmi с помощью преобразования xsl, и он работает довольно хорошо ... если вам нужны подробности, я могу его выкопать.

...