UML类关系图记不住?一篇搞定

6种类关系

6种UML类图常见的关系
泛化 (Generalization)、实现 (Realization)、 聚合 (Aggregation)
组合 (Composition)、关联 (Association)、依赖 (Dependency)

类关系定义

1. 泛化 (is a)
 是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。JAVA代码中,关键字 extends
2. 实现
是一种类与接口的关系,表示类是接口所有特征和行为的实现。JAVA代码中,关键字 implements
3. 聚合 (has a)
  整体与部分的拥有关系,且部分可以离开整体而单独存在,
  它们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享,所以聚合关系也常称为共享关系。
  是关联关系的一种特例,在代码实现上无法进行具体区分,只能考虑具体的业务与逻辑关系。
 【代码体现】 成员变量 ,即作为类的属性
4. 组合 (contains a)
  整体与部分的关系,但部分不可以离开整体而单独存在,部分不能给其他整体共享,作为整体的对象负责部分的对象的生命周期。这种关系比聚合更强,也叫强聚合。
  也是关联关系的一种特例
 【代码体现】 成员变量 ,即作为类的属性
5. 关联
 是一种拥有关系,它是类知道另一个类的属性和方法;
 在Java中,关联关系的代码表现形式为一个对象含有另一个对象的引用。
 也就是说,如果一个对象的类代码中,包含有另一个对象的引用,那么这两个对象之间就是关联关系。
 关联关系有单向关联和双向关联,大多数关联都是单向关联,单向关联关系更容易建立和维护。
【代码体现】 成员变量 ,即作为类的属性
6. 依赖 (use a)
 是一种使用关系,一种若对关联关系,即一个类的实现需要另一个类的协助,所以尽量不要双向依赖。如驾驶员和汽车关系,驾驶员使用汽车
【代码体现】方法或构造器的的参数、方法的返回值,局部变量或者对静态方法的调用

类关系的图像

1. 记住类关系的顺序

在评价软件架构的优劣时,使用的重要标准是高内聚,低耦合

按照耦合程度由高到低依次为 泛化=实现>组合>聚合>关联>依赖

泛化实现都是强耦合,
组合聚合都属于特殊的关联关系,整体与部分的关系,
组合生命周期一致要求更高,
其次是聚合
然后就是关联关系,
最后是依赖(作为类方法的参数和局部变量出现)

2. 记住类关系的图案

类关系图总结 TIps :6-24-222
6个关系
2条虚线,4条实线
2个箭头,2个三角形、2个菱形(一个实心一个空心)

组合聚合都是带菱形的实线

  1. 组合耦合度更高(要求生命周期一致)带实心菱形的实线

  2. 聚合 带空心棱形的实线

  3. 关联 带箭头的实线(比较常见的表达方式)

  4. 依赖 带箭头的虚线

    剩下的就是带三角的线了  
    
  5. 泛化 继承父与子的关系 带三角的实线

  6. 实现 带三角的虚线

聚合
组合
关联
依赖
泛化
实现
车队
国家
国旗
员工
考情卡
驾驶员
汽车
熊猫
动物

具体例子

聚合
组合
1
n
关联
依赖
依赖
泛化
实现
泛化
泛化
泛化
大雁
+飞
大雁群
+一字型队伍
+人字形队伍
+翅膀
+下蛋
翅膀
+飞
企鹅
+下蛋
气候
动物
+有生命
+新陈代谢(空气 水)
空气
«interface»
+下蛋

点击此处 查看md下画UML图

箭头指向

菱形代表整体,其他总是指向非当前类

聚合 棱形 指向(代表)整体
组合 棱形 指向(代表)整体
关联 指向被关联类
依赖 指向被依赖类
泛化 继承 指向父类
实现 接口接口 指向接口

到此为止认真看的话,应该差不多能记住了,后面就是有机会多练习了。下图来源《大话设计模式》
UML类图图示样例

【作者简介】:
里奥学JAVA,公众号【里奥学JAVA】作者,技术之路不在一时,山高水长,纵使缓慢,驰而不息。这个世界希望一切都很快,更快,但是我希望自己能走好每一步,写好每一篇文章,期待和你们一起交流。

此文章仅代表自己(本菜鸟)学习积累记录,或者学习笔记,如有侵权,请联系作者核实删除。人无完人,文章也一样,文笔稚嫩,在下不才,勿喷,如果有错误之处,还望指出,感激不尽~

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值