UML定义的关系主要有六种:泛化、实现、依赖、关联、聚合和组合。下面我们一一来
看一个能体现这几种关系的综合类图:
(1)泛化(继承)关系:空心三角+实现指向父类
![](https://i-blog.csdnimg.cn/blog_migrate/ae8ed87477ef2547c559099db05ad48a.gif)
class son : public parent
{
}
(2)实现接口:空心三角+虚线指向父类
![](https://i-blog.csdnimg.cn/blog_migrate/cf4e1287181994671bbd2bbc52d265db.gif)
class A : interface
{
}
(3)关联关系:实线箭头指向关联类
class chicken : Bird
{
private Climate cmt;
}
class A
{
private:
A[] array;
}
(5)组合关系:强拥有,整体必不可少的一部分,实心菱形+实线箭头
![](https://i-blog.csdnimg.cn/blog_migrate/243957d7213f53f8a03b592bcbe2acdc.png)
class bird
{
private:
Wing wing;
public:
bird()
{
wing = new Wing();
}
}
(6)依赖关系:虚线箭头,使用到其他
![](https://i-blog.csdnimg.cn/blog_migrate/89b3483dbdf8858f8882bed220345e85.gif)
class animal
{
public fun(Oxygen ox, Water wa)
{
}
}
注:
A.依赖是一种弱关联,只要一个类用到另一个类,但是和另一个类的关系不是太明显的时候(可以说是“use”了那个类),就可以把这种关系看成是依赖,依赖也可说是一种偶然的关系,而不是必然的关系,就是“我在某个方法中偶然用到了它,但在现实中我和它并没多大关系”。例如我和锤子,我和锤子本来是没关系的,但在有一次要钉钉子的时候,我用到了它,这就是一种依赖,依赖锤子完成钉钉子这件事情。
B.关联是一种结构关系,表现为一个对象能够获得另一个对象的实例引用并调用它的服务,比如:我们MVC模型中view层拥有bmo层的service实例引用,bmo层拥有dao层实例引用等这种关系就是关联。依赖是一种使用关系,表现为一个对象仅仅是调用了另一个对象的服务。