Обозначение диаграммы классов UML - PullRequest
0 голосов
/ 28 мая 2011

У меня есть следующий класс cDrawObjectCreator:

class cDrawObjectCreator
{
public:
    cDrawObjectCreator( cCompositeRoot *compositeObject ) { m_compositeRoot = compositeObject; }
   ~cDrawObjectCreator() {};
   ...
private:
    cCompositeRoot *m_compositeRoot;
};

Это правильная диаграмма?

enter image description here

или следующая диаграмма верна?

enter image description here

Ответы [ 2 ]

2 голосов
/ 29 мая 2011

Как правило, агрегация (полый алмаз) - это специализация ассоциации, а композиция (заполненный алмаз) - это специализация агрегации.

Помните, что цель моделирования состоит в том, чтобы облегчить общение, чтобы вы могли использовать различный уровень абстракций в зависимости от цели и заинтересованных сторон.

Если вы хотите сказать, что cMimicObjectCreator обладает исключительным владением cCompositeRoot (то есть, как у тела человека / животного есть мозг), то вы бы использовали композицию (заполненный алмаз). И если вы хотите сказать, что cMimicObjectCreator имеет cCompositeRoot (но не исключительно, и что есть случаи, когда класс детали не существует в целом / контейнере, как, например, скажем ... лодка с оборудованием GPS), тогда вы бы использовали агрегацию отношения.

Чтобы ответить на ваш оригинальный вопрос, я думаю, что первая диаграмма более уместна. Однако помните также, что вы всегда можете использовать ассоциативные отношения вместо композиционных или агрегирующих, если хотите быть более «общими».

2 голосов
/ 28 мая 2011

Первый снова.По тем же причинам, что и в предыдущем Вопросе.

Пожалуйста, прочитайте это , чтобы увидеть разницу между Состав и Aggregation .

...