GOF-UML导学【推荐】

UML导学

这里记录一下我自己对于UML中各种箭头的记忆方式

声明:这里的部分图片是我从《大话设计模式》中截取的,因此图中的部分例子是c++实现的,与我使用的java有所出入,不过不影响阅读。这里也推荐大家看一下这本书,内容丰富而且有趣。


继承(extends)

空心三角 + 直线

指的是一个类(称为子类)继承另外一个类(称为父类)的功能,并且可以增加自己的新功能的能力,通过extends关键字标识,用的很多,不多啰嗦。

在这里插入图片描述


实现接口(implement)

空心三角 + 虚线

指的是一个class类实现interface接口(java有单继承多实现的特性【说白了就是只能有一个爹】)的功能(必须实现所有功能,不同于继承)。在java中通过关键字implement标识。

在这里插入图片描述
空心三角 + 线条 的就这两个:即 继承 实现


关联关系

箭头 + 直线
说白了:就是成为属性,private Climate climate;

就像是我和出生入死的兄弟,他成为我生命中的重要组成部分,这种关系比依赖关系更强(依赖我这里理解为用完就一别两宽,利用的关系,用完就互不干涉),不像依赖关系的偶然性、临时性,一般是长期的,并且双方的关系一般是平等的。关联可以是单向的双向的;一般是类A以属性的方式出现在类B,也可能是类B引用类A的全局变量。

在这里插入图片描述


聚合关系

空心棱形 + 箭头

其实可以将聚合看作关联的特例。 聚合也是成为属性,不过不是一个,是一堆: private WideGoose[] arrWideGoose 变成数组了,has-a的关系。

聚合关系:如同乌合之众,大家只是聚集在一起完成一项任务,完事了就各回各家,互不干涉,而不是连体婴儿。正式点的说法就是:整体和部分是分离的,他们有各自的生命周期,部分可以属于多个整体对象,也可以被多个整体对象共享。
在这里插入图片描述
关联聚合:都是将一个类变成自己的一个属性


依赖关系

虚线 + 箭头

比如:动物新陈代谢需要判断氧气和水的数值是否达标,这里就是动物依赖于氧气和水

public class Animal {
	public  void metabolism(Oxygen oxygen, Water water){} 
}

依赖:用完就完事的利用关系,与组合不同,是一种临时性、偶然性的关系,非常脆弱。 类B作为参数在类A的Method中使用到(类A依赖于类B)。
在这里插入图片描述


组合关系

实心棱形 + 箭头 (可以标注数字,表示彼此的数量关系)
说白了:就是new了一个对象

组合是如同聚合一样,也是关联关系的一种特例,他体现的是contains-a的关系,比聚合关系更强(也叫做强聚合)。此时整体和部分密不可分,当整体(用鸟做比喻)结束,部分(用鸟的翅膀做比喻)也跟着结束【当鸟死亡的时候,翅膀也跟着死亡了】。

箭头下方数字表示:一只鸟组合两个翅膀
在这里插入图片描述
这里仿照图片内容给出java代码

public class Bird {

	private Wing wing;
	
	public Bird() {
		wing = new Wing();
	}
}

这是我的记忆UML的方式,如果还有其他不错的方法或者需要补充的地方,欢迎大家留言!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值