UML类图的表示法

时间:2011-05-28 13:12:25

标签: c++ uml class-diagram

我有以下课程:

class cManipulator : public cEditor
{
 public:
    cManipulator( ICanvas *canvas, cCompositeRoot* obj );
    ~cManipulator();
 private:
    ....
    class VisitorSetProp* m_SetVisitor;
    class VisitorGetProp* m_GetVisitor;
}

cManipulator::cManipulator( ICanvas* canvas, cCompositeRoot* obj ) :
...
{
...
    m_SetVisitor = new VisitorSetProp (this);
    m_GetVisitor = new VisitorGetProp (this);
}

cManipulator::~cManipulator()
{
    delete m_SetVisitor;
    delete m_GetVisitor;
}

class VisitorSetProp : public Visitor
{
public:
......
}

class VisitorGetProp : public Visitor
{
public:
....
}

UML类图上的变体是什么?

enter image description here

enter image description here

4 个答案:

答案 0 :(得分:1)

第一个是正确的!
Visitor是由VisitorSetprop& VisitorGetprop
VisitorSetprop& VisitorGetprop也与cManipulator合并有关。 所有这些关系都在第一个图中正确显示。

答案 1 :(得分:1)

在这种情况下,我认为第一个是合适的符号有两个原因:

  1. 消息向一个方向移动(单向)。换句话说,cManipulator是唯一知道关系的人,所做的任何函数调用都是从cManipulator类转到另一个。
  2. 当您删除此类的实例时,它必须删除该类的这两个实例(另一个类可能无法访问这些类)。即使你没有正确地破坏它们,它仍然应该是没有其他类有这些指针的。
  3. 见这里:http://www.ibm.com/developerworks/rational/library/content/RationalEdge/sep04/bell/

答案 2 :(得分:1)

第一个是正确的(名为撰写),因为cManipulatorm_SetVisitorm_GetVisitor负有生命责任

第二个名为聚合。当多个对象指向访问者时使用它,并且它们在一生中不具有可用性。

此致

答案 3 :(得分:0)

正确的是您的源代码。没有这样的Righ或Wrong模型......所有型号都错了。 但其中一些对于手头的问题很有用。

The model is Wrong if it does not help you to solve or make easy any of your problems.

P.S。 :实际上源代码也不是正确的型号: - )