UML
来源:互联网 发布:贝克汉姆曼联数据 编辑:程序博客网 时间:2024/06/06 10:03
区分 UML 类图中的几种关系
UML 类图中的 ”关联关系(association) “、”聚合关系(aggregation) “、”合成关系 (compostion)“ 和”依赖关系 (dependency)“ 不是很容易区分清楚,《UML distilled》 对这几个关系也没有解释的特别清楚。近日翻阅《Java 与模式》,发现其中对这些关系有较为清晰的描述,特摘录如下:
1、关联关系 (association):
1、关联关系是类与类之间的联结,它使一个类知道另一个类的属性和方法。
2、关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。
3、在 Java 或 c++ 中,关联关系是通过使用成员变量来实现的。
1
class
徒弟
2
{
3
};
4
5
class
唐僧
6
{
7
protected
:
8
list<徒弟> tdlist;
9
};
2、聚合关系 (aggregation):
1、聚合关系是关联关系的一种,是强的关联关系。
2、聚合是整体和部分之间的关系,例如汽车由引擎、轮胎以及其它零件组成。
3、聚合关系也是通过成员变量来实现的。但是,关联关系所涉及的两个类处在同一个层次上,而聚合关系中,两个类处于不同的层次上,一个代表整体,一个代表部分。
4、关联与聚合仅仅从 Java 或 C++ 语法上是无法分辨的,必须考察所涉及的类之间的逻辑关系。
01
class
引擎
02
{
03
};
04
05
class
轮胎
06
{
07
};
08
09
class
汽车
10
{
11
protected
:
12
引擎 engine;
13
轮胎 tyre[4];
14
};
3、合成关系 (composition):
1、合成关系是关联关系的一种,是比聚合关系还要强的关系。
2、它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。
1
class
肢
2
{
3
};
4
5
class
人
6
{
7
protected
:
8
肢 limb[4];
9
};
4、依赖关系 (dependency):
1、依赖关系也是类与类之间的联结
2、依赖总是单向的。
3、依赖关系在 Java 或 C++ 语言中体现为局部变量、方法的参数或者对静态方法的调用。
1
public
class
Person
2
{
3
public
void
buy(Car car)
4
{
5
...
6
}
7
}
5、总结:
1、不同的关系采用不同的 UML 图例
2、对于聚合关系、合成关系,由于都是关联关系的一种,因此在不确定的情况下,可以以关联关系来描述它们。
- UML
- UML
- UML
- uml
- UML
- UML
- UML
- UML
- uml
- UML
- UML
- UML
- UML
- UML
- UML
- UML
- UML
- uml
- MySQL 外键创建表失败 ERROR 1005 (HY000): Can't Create Table....(errno: 150)
- yii框架,命令行应用程序设计
- 具有选择功能对话框
- php socket
- 支撑软件开发人员的三种精神
- UML
- oracle表介绍--簇表
- DOS下进程管理(备忘)
- 通过 SQL Server 2005 索引视图提高性能
- 用JS+DIV实现类似confirm的提示框
- iphone push notification 消息推送
- 如何对pHPwin进行二次开发!
- Linq to xml 读取xml文件
- 我到底想要什么