我开始研究OOAD,我很难找到一个C++即会说明如何代码示例Association,Aggregation并Composition通过编程来实现.(到处都有几个帖子,但它们与C#或java有关).我确实找到了一两个例子,但它们都与我的导师的指示相冲突,我很困惑.
我的理解是:
这就是我实现它的方式:
//ASSOCIATION
class Bar
{
Baz baz;
};
class Foo
{
Bar* bar;
void setBar(Bar* _bar)
{
bar=_bar;
}
};
//AGGREGATION
class Bar
{
Baz baz;
};
class Foo
{
Bar* bar;
void setBar(Bar* _bar)
{
bar = new Bar;
bar->baz=_bar->baz;
}
};
//COMPOSTION
class Bar
{
Baz baz;
};
class Foo
{
Bar bar;
Foo(Baz baz)
{
bar.baz=baz;
}
};
Run Code Online (Sandbox Code Playgroud)
它是否正确?如果没有,那么应该怎么做呢?如果您还给我一本书中的代码参考(以便我可以与我的导师讨论),我们将不胜感激.
我不确定我是否正确使用了关联和聚合或合成钻石.
我会使用Association for interfaces,因为我无法实例化它们.就像他们在这里做的那样.或者对于静态类,同样的原因.
我只使用可以实例化的物体的钻石.像普通班一样.
但我不确定这是否是区分它们的正确方法,因为如果你再次检查,你会发现它们并没有那么具体.在UML 2.3 规范中,我无法获得更多,所以你如何使用它?
还有第三种方式,虚线<>箭头,但我没有胶水何时使用这个.那么也许你也可以帮助我呢?
我和我的同事无法就此达成共识。在UML中,进行聚合时,菱形面的最大折数是否为1,或者可以为0 .. *?还是取决于观点?
先感谢您 !