转载
最后的轻语_dd43 https://www.jianshu.com/p/57620b762160
类的属性与方法
- +:public
- -:private
- #:protected/friendly
- ~:default(包权限)
- _:static
- 斜体:抽象
类与类之间的关系
常见关系:
- 泛化/继承(Generalization)
- 实现(Realization)
- 关联(Association)
- 聚合(Aggregation)
- 组合(Composition)
- 依赖(Dependency)
泛化/继承(Generalization)
泛化/继承表示类与类之间的继承关系,接口与接口之间的继承关系
表示方法:空心三角形+实线
实现(Realization)
实现是一种类与接口的关系,表示类是接口所有特征和行为的实现
表示方法:
矩形表示法
空心三角形+虚线棒棒糖表示法
实线
关联(Association)
关联是一种拥有的关系,它使一个类知道另一个类的属性和方法;如:老师与学生,丈夫与妻子等.
关联可以是双向的,也可以是单向的.双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头.
表示方法:实线箭头,指向被拥有者
代码体现:成员变量
老师与学生是双向关联,老师有多名学生,学生也可能有多名老师.但学生与某课程间的关系为单向关联,一名学生可能要上多门课程,课程是个抽象的东西他不拥有学生.
上图为自关联
聚合(Aggregation)
聚合表示一种弱的拥有关系,即has-a的关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分.两个对象具有各自的生命周期.
表示方法:空心的菱形+实线箭头,菱形指向A,箭头指向被拥有者.还可以使用连线两端的数字表示某一端有几个实例.
代码体现:成员变量
组合(Composition)
组合表示一种强的拥有关系,即contains-a的关系.部分和整体的生命周期一样.
表示方法::实心的菱形+实线箭头,菱形指向A,箭头指向被拥有者.还可以使用连线两端的数字表示某一端有几个实例
代码体现:成员变量
依赖(Dependency)
依赖是一种使用的关系,一个对象依赖另一个对象的服务或者负责构造另一个对象的实例(工厂),这两个对象之间即为依赖关系.一般的,这种依赖关系都是单向的,尽量不要使用双向的互相依赖.
表示方法:虚线箭头,指向被使用者
代码体现:局部变量,方法的参数,或对静态方法的调用
关系的比较
强弱顺序:泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖
下面这张UML图,比较形象地展示了各种类图关系: