1. 车的类图结构为<<abstract>>,表示车是一个抽象类;
2. 它有两个继承实现类:小汽车与自行车,使用带空心箭头的虚线表示;
3. 小汽车与SUV之间是继承泛化关系,使用带空心箭头的实线表示;
4. 小汽车与轮胎/发动机之间是组合关系,使用带菱形实心箭头的实线表示;
5. 学生与班级之间是聚合关系,使用带菱形空心箭头的实线表示;
6. 学生与身份证之间是关联关系,使用一根实线表示;
学生上学需要用到自行车,与自行车是一张依赖关系,使用带箭头的虚线表示。
类之间的关系
1. 继承关系(泛化与实现)
类的继承关系表现在UML图中为:泛化与实现
实现表现为继承抽象类,用一条带空心箭头的虚线表示(小汽车继承自车);
泛化表现为继承非抽象类,用一条空闲箭头的直线表示(A继承自B);
2. 聚合关系/组合关系
聚合关系表示实体对象间整体与部分的含义,用带空心菱形箭头的直线表示(B由A组成);
代码体现:成员变量
组合关系也表示实体对象间整体与部分的含义,用带实心的菱形箭头表示(B由A组成);
代码体现:成员变量
区别:聚合关系的整体和部分不是强依赖的,组合关系的整体和部分是强依赖的。组合关系的整体如果不存在了,部分也就不存在了,但聚合关系不一定。
3. 关联关系
表示类与对象之间的结构关系,是一种静态关系,与运行状态无关,用一条直线表示;
代码体现:成员变量
关联关系默认不强调方向,表示对象间相互知道;如果特别强调方向,如下图,表示A知道B,但 B不知道A;
在最终代码中,关联对象通常是以成员变量的形式实现的;
4. 依赖关系
表示一个对象在运行期间会用到另一个对象的关系,用带箭头的虚线表示;
代码体现:局部变量、方法的参数或者对静态方法的调用
与关联关系不同的是,它是一种临时性的关系,通常在运行期间产生;依赖也有方向
摘自 http://design-patterns.readthedocs.io/zh_CN/latest/read_uml.html#uml
网友评论