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