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