UML —— 类图中的关系
来源:互联网 发布:淘宝上活动技巧 编辑:程序博客网 时间:2024/05/16 08:22
泛化关系(Generalization)
依赖关系(Dependency)
一般而言,依赖关系在Java语言中体现为局部变量、方法的参数,以及对静态方法的调用。换言之,一个类A的某一个局部变量的类型是另一个类B,那么类A就依赖于B。如果一个方法的参数是另一个类B的实例,那么这个方法所在类A依赖于类B。如果一个类A调用另一个类B的实例,那么类A依赖于类了。
如果类B出现在类A的实例变量中,那么类A与类B的关系就超载了依赖关系,而变成了某一种关联关系。每一个依赖关系都可以有一个名字。在上面的例子里,两个依赖关系的名字就是Buys。
关联关系(Association)
在Java语言里,关联关系是使用实例变量实现的。比如在上面的Driver类中,就出现了一个类型为Car的实例变量,这个变量实现了这两个类之间的关联关系。每一个关联都有一个名字,在上面的例子里,关联的名字是drive。
每一个关联都有两个端口,每一个端点都可以有一个角色名,显示出关联的本质。一个关联可以有一个方法箭头,表明遍历或者查询的方向。
在每个关联的端口,还可以有一个基数(Multiplicity),表明这一端的类可以有几个实例。比如,唐僧和他的徒弟形成了一个关联关系,在这个关系里面,唐僧只有一个,而徒弟可以有好几个。如下图所示:
聚合关系(Aggregation)
与关联关系一样,聚合关系也是通过实例变量实现的。Car类中应当有一个类型为Engine的属性和一个类型为Tire的数组属性。但是,关联关系所涉及的两个类是处在同一层次上的,而在聚合关系中,两个类是处在不平等的层次上的,一个代表整体,另一个代表部分。
如果不是很确定一个关系是不是聚合关系,可以将之设置为关联关系。
组合关系(Composition)
从美猴王(MonkeyKing)以及他的四肢(Limb)和他的金箍棒(GoldRingedStaff)之间的关系,可以看出,MonkeyKing与GoldRingedStaff之间是聚合的关系;而MonkeyKing与Limb之间的关系要比前者更强,是组合关系,因为美猴王的四肢完全由美猴王自己负责,并且不能共享。
如果不是很确定一个关系是不是组关系,可以将之设置为聚合关系,甚至关联关系。
注意:
一般而言,每一个类图都应该有类、关联关系、基数。而关联关系的方向和关系中的角色是可选的。
- UML —— 类图中的关系
- UML中的类图关系——依赖
- UML类图中的关系
- UML类图中的关系
- UML类图中的关系
- UML类图中的关系
- UML类图中的关系
- UML类图中的关系
- UML类图中的关系
- UML类图中的关系
- UML类图中的关系
- uml中的关系-类图关系
- uml图中的关系
- UML类图中的类之间关系
- UML类图中的四种类关系
- UML类图中的几种关系
- UML中的类图关系剖析
- UML类图中的6种关系
- Fragment之三:根据屏幕尺寸加载不同的Fragment
- 将eclipse编码格式改为utf-8的方法
- MFC——ComBox用法大全
- hdoj-1407 水~
- MapReduce SecondarySort
- UML —— 类图中的关系
- Java泛型编程
- 继承-java-箴言
- Project Euler problem19
- PHP 上传文件故障排除
- Java内存管理-Permanent Space
- Android4.1中会被系统拦截的InputEent
- oracle数据库启动错误 SP2-1503:无法初始化oracle调用界面
- opncv学习-imgprocess- Laplacian算子