AssociationVsDependencyVsAggreationVsComposition

近来工作做需求分析要画一些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对象的生命周期。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值