UML类图的表示法

时间:2011-05-28 13:49:40

标签: c++ oop uml class-diagram

我有以下类cDrawObjectCreator:

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

这是正确的图表吗?

enter image description here

或下图是否正确?

enter image description here

2 个答案:

答案 0 :(得分:2)

再来一次。出于与上一个课题相同的原因。

请阅读this,了解 Compostion 聚合 之间的区别。

答案 1 :(得分:2)

作为一般规则,聚合(空心菱形)是关联的特化,而组合(实心菱形)是聚合的特化。

请记住,建模的目的是促进沟通,以便根据目的和利益相关者使用不同级别的抽象。

如果你想说cMimicObjectCreator拥有cCompositeRoot的独家所有权(就像人类/动物身体有大脑一样)那么你会使用成分(填充钻石)。如果你想说cMimicObjectCreator有一个cCompositeRoot(但不是唯一的,并且有些情况下整个/容器中不存在零件类,比如说...带有GPS设备的船)那么你会使用聚合关系。

要回答您的原始问题,我认为第一张图更合适。但是请记住,如果您想要更“一般”,也可以使用关联关系代替组合或聚合关系。