首页 > 关于 UML 类图之间关系的一个疑问

关于 UML 类图之间关系的一个疑问

一个类中可能用到另一个类,也可能用不到,如果用到的话仅为获取这个类的一些属性...

这在UML中应该用什么关系来表示呢?

关联?聚合?组合?依赖?other...?


参考:http://blog.csdn.net/maybehelios/arti...,这里只是做一下相对明了的总结。感谢maybehelios的博文

UML类之间的常用关系:Generalization(泛化关系),Association(关联关系),Aggregation(聚合关系),Composition(合成关系),Dependency(依赖关系)。其中Aggregation(聚合关系), Composition(关联关系)属于Association的特殊形式。

1. Generalization(泛化关系),表现为类之间的继承关系。
e.g. Class B extends A {}

2. Association(关联关系),表现为(has a)的关系
e.g. 如果A依赖于B,则B体现为A的全局变量(instance variable)

3. Aggregation(聚合关系),是强的关联关系。聚合关系是整体和个体的关系。
普通关联关系的两个类处于同一层次上,而聚合关系的两个类处于不同的层次,一个是整体,一个是部分。同时,是一种弱的“拥有”关系。体现的是A对象可以包含B对象,但B对象不是A对象的组成部分。具体表现为,如果A由B聚合成,表现为A包含有B的全局对象,但是B对象可以不在A创建的时刻创建。

4. composition(组合关系), 比聚合关系更强的关联关系。
它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。Composition(组合关系)是一种强的“拥有”关系,体现了严格的部分和整体的关系,部分和整体的生命周期一致。如果A由B组成,表现为A包含有B的全局对象,并且B对象在A创建的时刻创建。

4. Dependency(依赖关系),类与类之间的连接,表示一个类依赖于另一个类的定义,其中一个类的变化将影响另外一个类。
例如如果A依赖于B,则B体现为局部变量,方法的参数、或静态方法的调用。

///////////////////////////////////////////////////////////////////////////////////////
所以,根据你的简单描述A和B(A use B),可以排除:
Generalization(泛化关系),因为A和B不是继承关系;
Composition(组合关系),因为有时你并不需要类B;

可能的关系为Aggregation(聚合关系),如果你把B作为A的全局变量(instance variable)
也有可能是普通的Dependency(依赖关系),这是最普通的关系。可能你只在某些方法中需要使用B的方法和属性。(但是因为一个大的工程项目的UML图一般不可能做到这样的细节,所以再UML中建议忽略,除非有特别的原因)。

【热门文章】
【热门文章】