[英]Notation of UML class diagram
我有以下 class cDrawObjectCreator:
class cDrawObjectCreator
{
public:
cDrawObjectCreator( cCompositeRoot *compositeObject ) { m_compositeRoot = compositeObject; }
~cDrawObjectCreator() {};
...
private:
cCompositeRoot *m_compositeRoot;
};
是正确的图表吗?
或者下图是正确的?
又是第一个。 出于与上一个问题相同的原因。
请阅读 此内容,了解Compostion和Aggregation之间的区别。
作为一般规则,聚合(空心菱形)是关联的一种特化,而组合(填充菱形)是聚合的一种特化。
请记住,建模的目的是促进沟通,因此您可以根据目的和利益相关者使用不同级别的抽象。
如果您想说 cMimicObjectCreator 拥有 cCompositeRoot 的专有所有权(即,就像人类/动物身体有大脑),那么您将使用组合(填充菱形)。 如果你想说 cMimicObjectCreator 有一个 cCompositeRoot (但不是唯一的,并且在某些情况下 class 部分不存在于整个/容器中,比如......一艘带有 GPS 设备的船),那么你将使用聚合关系。
要回答您最初的问题,我认为第一个图表更合适。 但是请记住,如果您想更“通用”,您始终可以使用关联关系代替组合或聚合关系。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.