UML类图
2020-09-15 本文已影响0人
得_道
请看以下这个类图,类之间的关系是我们需要关注的:
![](https://img.haomeiwen.com/i16511986/c1194ceae3c4e8ac.png)
- 车的类图结构为<abstract>,表示车是一个抽象类;
- 它有两个实现类:小汽车和自行车;它们之间的关系为实现关系,使用带空心箭头的虚线表示;
- 小汽车与SUV之间是继承关系,使用带空心箭头的实线表示;
- 小汽车与发动机之间是组合关系,使用带实心箭头的实线表示;
- 学生与班级之间是聚合关系,使用带空心箭头的实线表示;
- 学生与身份证之间为关联关系,使用一根实线表示;
- 学生上学需要用到自行车,与自行车是一种依赖关系,使用带箭头的虚线表示;
类之间的关系
- 继承关系
用一条带空心箭头的直接表示
![](https://img.haomeiwen.com/i16511986/a05615af45291faf.png)
- 实现关系
用一条带空心箭头的虚线表示
![](https://img.haomeiwen.com/i16511986/aa4ce36d7d374040.png)
- 依赖关系
用一套带箭头的虚线表示的;如下图表示A依赖于B;他描述一个对象在运行期间会用到另一个对象的关系;
表现在代码层面,为类B作为参数被类A在某个method方法中使用。
![](https://img.haomeiwen.com/i16511986/1f41a996d68c3e7b.png)
- 关联关系
一条直线表示的;它描述不同类的对象之间的结构关系;
这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的、关联可以是单向、双向的;
表现在代码层面,为被关联类B以类属性的形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量;
![](https://img.haomeiwen.com/i16511986/2b8aade50cbf1110.png)
- 聚合关系
用一条带空心菱形箭头的直线表示,如下图表示A聚合到B上,或者说B由A组成;
体现的是整体与部分、拥有的关系,即has-a的关系,此时整体与部分之间是可分离的,他们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享;比如计算机与CPU、公司与员工的关系等;
表现在代码层面,和关联关系是一致的,只能从语义级别来区分;
![](https://img.haomeiwen.com/i16511986/408d79e6a0532104.png)
- 组合关系
用一条带实心菱形箭头直线表示,如下图表示A组成B,或者B由A组成;
体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合;他同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束;比如你和你的大脑;
表现在代码层面,和关联关系是一致的,只能从语义级别来区分;
![](https://img.haomeiwen.com/i16511986/a57c801ab1b4e3a1.png)