UML - Агрегировать ассоциацию, возможно ли это?

Я немного новичок во всем этом UML, поэтому я надеюсь, что вы все выдержите меня и мой вопрос новичка.

Во время OOA вы всегда будете рисовать модель предметной области. Он показывает понятия, их атрибуты и отношения (ассоциации) между каждым понятием.

Но я еще не понял ассоциаций «целое-части». Насколько я понял, это как-то связано с понятием, связанным с несколькими понятиями, я прав?..

И можно ли агрегировать ассоциацию, или это строго понятия, которые можно агрегировать???

Мое замешательство может быть связано с тем, что я немного не понимаю, когда использовать агрегацию в первую очередь...?? может кто-нибудь прояснить это для меня??


person user3139171    schedule 27.12.2013    source источник


Ответы (1)


Ваш вопрос расплывчатый, но давайте начнем с описания IBM:

http://www.ibm.com/developerworks/rational/library/content/RationalEdge/sep04/bell

Поиск агрегации и композиции.

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

person Bruce    schedule 27.12.2013
comment
Это как иметь класс (концепт) под названием животное, и от животного у него есть атрибуты. Каждый атрибут можно рассматривать как компонент?? Чтобы быть более конкретным в моем вопросе, применяется ли агрегация только к классам или также к ассоциации между классами (концепции) - person user3139171; 27.12.2013
comment
Не то что животное и его атрибуты. Атрибуты — это переменные данного класса. Агрегация — это ассоциация между классами. Вопрос в том, насколько сложна ваша система. Если у вас есть несколько нетривиальных компонентов, вы можете моделировать каждый компонент как связанные классы. Я бы посоветовал прочитать книгу об объектно-ориентированном анализе и проектировании. Этот тип проблемы хорошо изучен и описан. - person Bruce; 27.12.2013
comment
Но может ли объединение или композиция существовать для ассоциации. - person user3139171; 28.12.2013
comment
Агрегация и композиция являются формами ассоциации. Ассоциации бы не связывались. Один связывает классы, компоненты, подсистемы и системы. - person Bruce; 28.12.2013
comment
Не могли бы вы сделать что-нибудь на ассоциации ?? - person user3139171; 30.12.2013
comment
Ассоциации, по крайней мере в C++, часто реализуются как указатели на экземпляры класса. Ассоциации используются для навигации по отношениям между классами. - person Bruce; 30.12.2013
comment
Сможет ли он добавить какую-то дополнительную информацию во время ассоциации между двумя классами. - person user3139171; 30.12.2013
comment
Вы можете добавить направленность, роли и множественность. - person Bruce; 30.12.2013
comment
Причина, по которой я спрашиваю, заключается в том, что мой лектор просто упустил эту модель домена, где я сделал что-то вроде этого.. snag.gy/m7bSG.jpg я не понимаю, почему это правильно, Он похвалил меня за то, что я делаю это правильно, чего я не понял, потому что в моей голове все с точностью до наоборот. Я полностью согласен с вами, @Bruce .. он сказал, что это потому, что одно из моих постусловий состоит в том, что класс 3 должен быть связан с классом 2, и как бы это сделал любой. - person user3139171; 30.12.2013
comment
То, что вы нарисовали, — это класс ассоциации. Я никогда не видел ни одного, использующего композицию, но это не имеет значения. См.: pic.dhe.ibm.com/infocenter/rsarthlp/v9/ - person Bruce; 30.12.2013
comment
Ох... это выглядит хорошо, Брюс... но будет ли последующее условие иметь связь между студентом и курсом, или между зачислением и курсом, или что-то другое? - person user3139171; 30.12.2013
comment
Я не понимаю, как вы используете слово постусловие. При написании кода студент может найти информацию о курсе. Курс не может найти информацию о студенте. Какой-то другой класс (регистратор) может использовать класс зачисления для поиска учащихся и классов, в которые они зачислены. - person Bruce; 30.12.2013
comment
Каков ваш вариант использования? - person Bruce; 30.12.2013
comment
Ах. Таким образом, как вы смоделировали, бронирование — это класс ассоциации между гостем и комнатой. Аналогия с примером IBM: студент:курс:зачисление ‹--› гость:комната:резервирование. Диаграмма, показывающая отношения, является постусловием. - person Bruce; 30.12.2013
comment
То, что я делаю, подробно описано на странице pic.dhe.ibm.com/infocenter/rsarthlp/v9/ Было бы неправильно изменить мое постусловие на s, что класс 3 должен быть связан с классом 2 - person user3139171; 30.12.2013
comment
Извините, вы не можете изменить свое постусловие. Постусловие представляет собой текстовое описание и является требованием. Я бы не стал менять схему. Ассоциация классов связывает класс 3 с классами 1 и 2. - person Bruce; 30.12.2013
comment
Я бы, если бы знал, как?.. Это говорит о том, что моя репутация слишком низкая. - person user3139171; 31.12.2013