`

[#0x003B] UML类图之关联、聚合、组合、依赖

    博客分类:
  • Java
阅读更多

  一直没有搞清楚这几个概念,这里做总结。来自《大话设计模式》。

 

  1. 关联(association)

  仅仅表示对象A“知道”对象B,对象A并不“拥有”对象B(这里的“知道”和“拥有”并不一定是从业务逻辑上判断,应该宽泛到从常识上判断)。如下图:

  企鹅“知道”气候,但并不“拥有”气候,在代码上反映为:

class Penguin extends Bird {
	private Climate c;
}

 

  2. 聚合(Aggregation)

  聚合在关联的基础上更近一步,表示一种弱“拥有”关系,对象A可以包含对象B,对象B可以是对象A的一部分,但也可以不是(在代码上的表现是对象B为null)。如下图:

虽然雁群理所当然应该包含大雁,但也存在着null雁群,即WildGoose数组为空的情况。从代码上看:

class WildGooseGroup {
	private arrayWildGoose WildGoose[];
}

与关联并没有什么不同。的确是这样,关联和聚合的区别仅体现在这两个对象在业务逻辑或是在常识中的关系,在代码层次是没有区别的。

 

  3. 组合(Composition)

  在聚合关系上更进一步,表示一种强“拥有”关系,对象A和对象B的生命周期一样,通俗说来就是“同年同月同日生,同年同月同日死”。如下图:

鸟必然“拥有”翅膀,如果Wing[2]为空,那么这个这个Bird对象是不应该存在的。在代码上体现为:

class Bird extends Animal {
	private wings Wing[2];
	
	public Bird() {
		wings[0] = new Wing();
		wings[1] = new Wing();
	}
}

可见Bird和Wing对象是强制绑定在一起的。

 

  4. 依赖(Dependency)

  依赖表示一种“需要”的关系,但一般被依赖的对象B不是对象A的成员。如上图所示,鸟的新陈代谢需要氧气和水,但氧气和水都不会是鸟的成员。依赖和关联的区别大抵体现于此。

  • 大小: 1.2 KB
  • 大小: 1.7 KB
  • 大小: 3.9 KB
1
2
分享到:
评论

相关推荐

    Windows 错误码整理

    ### 0x003B - 未知错误 同样,这是一个未明确分类的错误。 ### 0x003C - 远程系统无法访问。 当无法访问远程系统或网络资源时,会抛出此错误。 ### 0x003D - 打印队列已满。 如果打印队列中的任务达到上限,新的...

    电脑蓝屏代码一览表 有助于 你更好的了解你的电脑为什们蓝屏啊!

    ### 0x003b - 设备故障 设备发生故障,无法正常工作。 ### 0x0043 - 硬件错误 ### 0x0050 - 文件已删除 文件已被永久删除。 ### 0x0052 - 无法打开文件 文件可能被删除、隐藏或权限受限。 ### 0x0053 - INT ...

    常见蓝屏代码,代码蓝屏

    #### 0x0000000B - 非标准模式 此错误通常与不兼容的驱动程序或硬件配置有关。 #### 0x0000000C - 读取错误 当操作系统尝试读取磁盘上的数据时发生错误,可能是磁盘损坏或连接问题导致。 #### 0x0000000D - 缓存...

    Windows xp 蓝屏代码详解

    #### 0x003B - 网络打印中断 - **描述**:网络打印操作被中断。 - **可能原因**:打印机问题或网络故障。 #### 0x003C - 远程过程调用失败 - **描述**:远程过程调用失败。 - **可能原因**:网络问题或远程服务未...

    电脑蓝屏代码大全

    ##### 0X0000482 执行此应用程序所需的程序库文件之一被损 缺少或损坏的程序库文件可能导致此错误。重新安装程序或修复程序库文件。 ##### 0X0000483 没有应用程序与此项操作的指定文件建立关联 如果文件类型未与...

    windows蓝屏代码

    #### 0x0000000B 尝试加载一个格式错误的程序 当试图加载一个格式不正确的程序时会发生这个错误。比如一个非Windows可执行文件被当作Windows程序来运行。 #### 0x0000000C 存取码错误 如果存取码错误,则表示对某个...

    蓝屏错误对照表

    #### 0x0000000B:尝试加载一个格式错误的程序。 - **描述**:加载了一个损坏或不兼容的程序。 - **解决方案**:重新安装程序或更新至最新版本。 #### 0x0000000C:存取码错误。 - **描述**:访问内存时出现了错误...

    windows蓝屏错误代码大全

    #### 0x0000000B - ATAPI_PORT_NOT_FOUND 当系统无法找到ATAPI端口时,会出现此错误。这通常与硬件配置或驱动程序存在问题有关。 #### 0x0000000C - ATAPI_UNEXPECTED_ERROR 当系统在处理ATAPI设备时遇到意外错误时...

    TaiXuan91#TXLuaLesson#0X2B循环for1

    0X2B循环for前置知识0X29再谈循环正文Lua除了while和repeat语句还提供了一种for循环语句.while和repeat语句循环终止条件可以是任

    TartaricAcid#TXLuaLesson#0X0E中学算术1

    0X0E中学算术前置知识0X0D数学库函数正文有了三角函数、反三角函数、对数函数、求幂运算,中学阶段涉及的所有具体的数值计算基本就都可以求解。求此表达式的值:第

    TaiXuan91#TXLuaLesson#0X00目录1

    目录图例Stage1 入门Stage2 基础Stage3 字符串处理Stage4 理解函数Stage5 表结构Stage6 流程控制Stage7 模块Stage

    TaiXuan91#TXLuaLesson#0X36度量时间1

    1. 度量脚本执行时间 2. 记录时间 3. 计算时间间隔

    0x0000011b共享打印机无法连接 0x0000011b一键修复工具

    WIN10共享打印机出现0x0000011b共享打印机无法连接错误,为了快速处理此问题 ,金石开发了此工具,用于快速修复此错误。只要在共享打印机的电脑上选中此文 件点鼠标右键,在出现的菜单中选择“以管理员身份运行”...

    dell,蓝屏0x0000007b解决办法

    当出现蓝屏错误代码0x0000007B时,很多用户可能会感到困惑并担心自己的电脑是否出现了严重的问题。但实际上,根据标题和描述的信息来看,这个问题往往是由一个简单的设置错误导致的,并且可以通过一些基本的方法来...

    __lll_mutex_lock_wait的错误原因

    #0 0x00002b9405ea1c38 in __lll_mutex_lock_wait () from /lib64/libc.so.6 #1 0x00002b9405e45e5f in _L_lock_4026 () from /lib64/libc.so.6 #2 0x00002b9405e42df1 in free () from /lib64/libc.so.6 #3 0x00002...

    报错0x0000011b一键修复

    报错0x0000011b一键修复

    Win7_0x0000003B蓝屏解决方法

    ### Win7 0x0000003B蓝屏解决方法 #### 背景与概述 在日常使用Windows 7操作系统的过程中,遇到蓝屏现象是非常常见的问题之一。对于许多用户而言,尤其是计算机操作水平较为初级的用户,面对蓝屏可能会感到十分...

    修复链接共享打印机0x0000011b错误

    修复链接共享打印机0x0000011b错误 在共享主机上双击0x0000011b.reg文件,合并注册表信息,重启即可。

Global site tag (gtag.js) - Google Analytics