AssociationVsDependencyVsAggreationVsComposition

本文详细介绍了UML中的四种关系:联合、依赖、聚合与组合。包括它们的图形表示及应用场景,帮助读者更好地理解和使用UML进行软件设计。

近来工作做需求分析要画一些UML,补一下UML知识。参考了一个外国哥们的博客。
在UML中箭头所指可以理解为”于”

Association(联合)

这里写图片描述
联合关系在UML图中为实现箭头,表示1对1之间的关系。通常表现为类A拥有类B的一个class field引用,如下图中 Player拥有一个Assert类的assert引用。

class Asset { ... }
class Player {
Asset asset;
public Player(Assest purchasedAsset) { ... } /*Set the asset via Constructor or a setter*/
}

Dependency(依赖)

依赖关系在UML图中为一个虚线箭头,是一种比较弱的关系,A依赖于B 通常表现在,A中的方法中会通过B的引用来调用某些B的API,并且任何B的改动都有可能使A编译出错。

这里写图片描述

class Die { public void Roll() { ... } }
class Player
{
public void TakeTurn(Die die) /*Look ma, I am dependent on Die and it's Roll method to do my work*/
{ die.Roll(); ... }
}

Aggregation (聚合)

在UML关系中,聚合关系是一个富余的“联合”关系,它通常来描述1对多,多对多,部分与整体的关系。通常一个棱形虚线表示,它与组合的差别是在于它不控制聚合对象的构造。
这里写图片描述

class Asset { ... }
class Player {
List assets;
public void AddAsset(Asset newlyPurchasedAsset) { assets.Add(newlyPurchasedAssest); ... }
...
}

从代码中可以看出,Player中有一个Asset的list的引用。但是,在队列中的所指向的Asset对象并不是在Player中构造。

Composition(组合)

在UML中组合关系是算最强的,通过棱形实线表示两者之前的关系。A的实例直接控制B实例的构造以及生命周期。
这里写图片描述

public class Piece { ... }
public class Player
{
Piece piece = new Piece(); /*Player owns the responsibility of creating the Piece*/
...
}

可以看到Player中,player对象会构造一个piece对象,这个player对象会直接关联该piece对象的生命周期。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值