您好,匿名用户
随意问技术百科期待您的加入

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

0 投票

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

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

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

用户头像 提问 2014年 1月2日 @ Leona 上等兵 (279 威望)
分享到:

1个回答

0 投票

参考: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中建议忽略,除非有特别的原因)。

用户头像 回复 2013年 12月29日 @ Nocturne 上等兵 (262 威望)
提一个问题:

相关问题

0 投票
0 回复 16 阅读
用户头像 提问 2012年 12月1日 @ Shen 上等兵 (318 威望)
0 投票
1 回复 33 阅读
用户头像 提问 2013年 9月17日 @ Gangplank 上等兵 (314 威望)
0 投票
1 回复 29 阅读
用户头像 提问 2013年 11月16日 @ Ashe 上等兵 (336 威望)
0 投票
1 回复 41 阅读
0 投票
1 回复 4 阅读
用户头像 提问 2014年 5月29日 @ 我和小伙伴们都惊呆了 上等兵 (156 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...