UML类图 关系

来源:互联网 发布:淘宝销售公司 编辑:程序博客网 时间:2024/05/16 06:02

http://www.uml.org.cn/oobject/201104212.asp

1:关联,一个类C3中,类C4作为属性

Class C3{

C4 c4=new C4();

}

                         单向关联


2:依赖:一个类C5的方法fun中,类C6作为参数或者属性

Class C5{

     public C6 c6;

    void fun(C6 c6){

}

}

          单向依赖

3.组合/聚合-属性对象-composite/aggreate

(1)组合-自己是实心的,去组合它,把它当做自己的属性对象,只是被组合的类不会单独存在(自己构造函数中使用)

class C7
{
public:
    C8 theC8;

};

class C8
{
};

可以看到,代码和聚合是一样的。具体如何区别,可能就只能用语义来区分了。

2)聚合-自己空心的,去聚合它,把它当做自己的属性对象,被聚合的类可以单独存在(自己构造函数中不使用)

当类之间有整体-部分关系的时候,我们就可以使用组合或者聚合。

聚合:表示C9聚合C10,但是C10可以离开C9而独立存在(独立存在的意思是在某个应用的问题域中这个类的存在有意义。这句话怎么解,请看下面组合里的解释)。
代码如下:

class C9
{
public:
    C10 theC10;

};

class C10
{

};


//总结聚合和组合:

问题域的语义上:组合中被组合类单独存在没有意义; 聚合中被聚合类在可以有单独存在的意义。

生命期上:组合中必须要负责被组合类的生命期; 聚合中可不负责被聚合类的声明期,可以由外部程序来创建和消亡(可用赋值)。

4.泛化和实现 derived/implement

(1)继承(Derived-子对象指向父对象


(2)接口实现(implement

  1. 实现关系指定两个实体之间的一个合约。换言之,一个实体定义一个 合约 ,而另一个实体保证履行该 合约       
6:UML图中类的私有private属性和方法应该在前面加—号,public属性和方法应该在前面加+号,抽象方法前面加#号






原创粉丝点击