相关疑难解决方法(0)

C++:关联,聚合和组合

我开始研究OOAD,我很难找到一个C++即会说明如何代码示例Association,AggregationComposition通过编程来实现.(到处都有几个帖子,但它们与C#或java有关).我确实找到了一两个例子,但它们都与我的导师的指示相冲突,我很困惑.

我的理解是:

  • 关联: Foo有一个指向Bar对象的指针作为数据成员
  • 聚合: Foo有一个指向Bar对象的指针,Bar的数据被深度复制到该指针中.
  • 组成: Foo有一个Bar对象作为数据成员.

这就是我实现它的方式:

//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)

它是否正确?如果没有,那么应该怎么做呢?如果您还给我一本书中的代码参考(以便我可以与我的导师讨论),我们将不胜感激.

c++ oop ooad associations aggregation

21
推荐指数
1
解决办法
2万
查看次数

UML类图关联vs(聚合|组合)-Diamonds

我不确定我是否正确使用了关联和聚合或合成钻石.

我会使用Association for interfaces,因为我无法实例化它们.就像他们在这里做的那样.或者对于静态类,同样的原因.

我只使用可以实例化的物体的钻石.像普通班一样.

但我不确定这是否是区分它们的正确方法,因为如果你再次检查,你会发现它们并没有那么具体.在UML 2.3 规范中,我无法获得更多,所以你如何使用它?

还有第三种方式,虚线<>箭头,但我没有胶水何时使用这个.那么也许你也可以帮助我呢?

uml

9
推荐指数
1
解决办法
9765
查看次数

聚合多样性UML

我和我的同事无法就此达成共识。在UML中,进行聚合时,菱形面的最大折数是否为1,或者可以为0 .. *?还是取决于观点?
先感谢您 !

uml aggregation multiplicity

6
推荐指数
2
解决办法
7995
查看次数

标签 统计

aggregation ×2

uml ×2

associations ×1

c++ ×1

multiplicity ×1

ooad ×1

oop ×1