UML类图相关

1.UML类之间的关系

image-20220126142318722

image-20220126151622915

如上述UML图:

1.实现: 类实现抽象接口或者抽象类的关系为实现,使用空心箭头虚线标识

2.泛化: 类集成非抽象类的关系为泛化,使用空心箭头的实线标识

3.组合: 此类对象在逻辑上由其他组合而来,由实心箭头的实线标识

4.依赖: 此类和另一个类的关系为依赖关系,比如学生要用自行车上学,由带箭头的虚线标识

5.聚合: 类和另外一个类的关系为集合关系,比如学生和班级,苹果和苹果树,由带空心箭头的实线标识

6.关联: 类和另外一个类有联关系,由无箭头的实线标识

几种关系所表现的强弱程度依次为:组合>聚合>关联>依赖

泛化关系(generalization)

is-a的关系是个继承的关系,两个对象之间如果可以用 is-a 来表示,就是继承结构,泛化关系是继承结构的一种,另一种是实现关系。

泛化关系用一条带空心箭头的直接表示;如下图表示(B继承自A)

image-20220126154639974

代码的最终表现形式为,继承非抽象类。

实现关系(realize)

实现也是 is-a的关系属于继承结构的一种,表示具体事物对抽象事务的具象化。

实现关系用一条带空心箭头的虚线表示;如下图表示(B实现自A)

image-20220126155241313

代码的最终表现形式为,实现抽象类。

聚合关系(aggregation)

​ 聚合属于has-a的关系,表示对象之间的集合从属关系,比如苹果树上包含很多苹果,班级包含很多学生。

​ 聚合关系用一条带空心菱形箭头的直线表示,表示B聚合到A上,或者说A由B组成;

image-20220126155645775

属于关联,整体与部分的关系。聚合是独立的,不随整体共存亡的(生命周期不同步)。

组合关系(composition)

contains-a关系,表示对象之间是组成关系,体现了共存的强关系。

组合关系用一条带实心菱形箭头直线表示,如下图表示B组成A,或者A由B组成;

image-20220126161634100

组合关系无法独立存在,与整体共存亡(生命周期同步)。

关联关系(association)

联关系默认不强调方向,表示对象间相互知道,它描述不同类的对象之间的结构关系;它是一种静态关系, 通常与运行状态无关,一般由常识等因素决定的;它一般用来定义对象之间静态的、天然的结构; 所以,关联关系是一种“强关联”的关系;

关联关系是用一条直线表示的;

image-20220126162722097

在最终代码中,关联对象通常是以成员变量的形式实现的;

依赖关系(dependency)

​ 依赖关系(Dependency) 是一种使用关系,特定事物的改变有可能会影响到使用该事物的其他事物,在需要表示一个事物使用另一个事物时使用依赖关系,一般都有明确的依赖方向,且应该杜绝双向依赖。

依赖关系用带箭头的虚线表示,由依赖的一方指向被依赖的一方。

image-20220126163029017

依赖关系体现为类构造方法及类方法的传入参数,箭头的指向为调用关系;依赖关系除了临时知道对方外,还“使用”对方的方法和属性;