课程名称:Java设计模式精讲 Debug方式+内存分析
课程章节:第2章 UML急速入门
主讲老师:Geely
课程内容:
1,uml箭头的含义?
泛化(Generalization)**:继承的关系,实线带三角形箭头,指向父类。
实现(Realization)**:实现的关系,虚线带三角形箭头,指向接口。
关联(Association)**:拥有的关系,实线带普通箭头,指向被拥有者。(或者虚线)
依赖(Dependency)**:使用的关系,即一个类的实线需要另一个类的协助。虚线普通箭头,指向被使用者。
聚合(Aggregation)**:整体与部分的关系。实线带空心菱形,指向整体。
组合(Composition):整体与部分的关系但不能离开整体而单独存在。实线实心菱形,指向整体。
虚线箭头****表示“依赖关系”,依赖有“使用”的语义,比如患者与医生的关系。 实线箭头****表示“带了包含的关联关系”,从一个类到另一类。 使用实线箭头时通常会带上“多重性”的表达方式。如:一对多,一对一,多对多等等
2,uml关联关系中的代码提现?(6种箭头,指向的都是被引用或被实现的类或接口)
各种关系的强弱顺序:泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖
1. 泛化(Generalization):继承
【泛化关系】:继承类
【箭头指向】:带三角箭头的实线,箭头指向父类
2. 实现(Realization):实现
【实现关系】:实现接口
【箭头指向】:带三角箭头的虚线,箭头指向接口
3. 关联(Association): 包含组合和聚合
【关联关系】:是一种拥有的关系,它使一个类知道另一个类的属性和方法;如:老师与学生,丈夫与妻子关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。
** 【代码体现】:成员变量 : 一个类的全局变量引用了另一个类,就表示关联了这个类,从语义上如果两个类是独立的,就是聚合,如果两个类是部分关系就是组合**
【箭头及指向】:带普通箭头的实心线,指向被拥有者
4. 聚合(Aggregation):每部分独立个体
【聚合关系】:是整体与部分的关系,且部分可以离开整体而单独存在。
聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。
** 【代码体现】:成员变量,**成员变量声明但不赋值,用set方法注入,或依赖注入
【箭头及指向】:带空心菱形的实心线,菱形指向整体
5. 组合(Composition):组成独立个体
【组合关系】:是整体与部分的关系,但部分不能离开整体而单独存在。如公司和部门是整体和部分的关系,没有公司就不存在部门。
组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。
**【代码体现】:成员变量,**成员变量声明并且赋值。
【箭头及指向】:带实心菱形的实线,菱形指向整体
6. 依赖(Dependency):局部变量
【依赖关系】:是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖.
** 【代码表现】:局部变量、方法的参数或者对静态方法的调用**
【箭头及指向】:带箭头的虚线,指向被使用者
3,总结:
类A中,引入的类B,就是关联关系,根据语义看是聚合还是组合。
类A实现了接口C就是实现关系,类B继承了类D就是继承关系。方法入参,静态变量,局部变量,都是依赖。