UML模块中的任何事物都不是独立存在的,他们之间存在着一定的关系。下面就对这些关系,分类了解一下。
一.概念
【关联】Association
两个类存在某种语义上的联系,关联有单向关联和双向关联。
【聚合】Aggregation
类之间是整体和部分的关系。”聚”表示聚在一起的意思,也表示“部分”可以独立”整体”存在。描述“has-a”的关系。
【组合】Composition
整体有管理部分的特有的职责并且他们有一致的生命期,部分不能脱离整体存在。描述“contains-a”的关系。
【泛化】Generalization
泛化是一般事物和该事物特殊种类之间的关系,描述类之间“Is a kind of”的关系。子类继承父类,又分为单继承和多继承,由名字可知:子类继承单个父类的属性和操作就是单继承。
泛化的通过修改父类而修改子类共同的属性和方法,实现代码的重用,也有利于系统维护。
【依赖】Dependency
是两个事物之间的使用关系。A依赖于B。当B发生改变的时候A也会改变。
【实现】Realization
用来规定接口和实现接口的类或组件之间的关系,不继承结构只继承行为。一个接口的实现,要先实现对应的类,一个类可以有多个接口。实现使用的情况:1.在接口与实现接口的类间。2.在用例以及实现该用例的协作间
二、实例
【关联】一个人为一家公司工作
【聚合】书架上放着书
【组合】鸟和翅膀
【泛化】人类,分为男人和女人
【依赖】系统和单个窗体
【实现】篮球得分的方式。扣篮,投篮,罚球
三、Rational Rose表示
【关联】
1.关联用横实线表示 2.employee表示person类扮演的角色 3.n和1表示多重性关系。一个公司有许多员工
【聚合】
1.聚合用带空心菱形头的实线表示 2.菱形头指向整体。
【组合】
在聚合的基础上把空心的变成实心的。
【泛化】
1.带空心箭头的实线表示 2.由子类指向父类 3.此图表示单继承
【依赖】
1.带箭头的虚线表示 2.A依赖于B,则A指向B
【实现】
1.带空心箭头的虚线表示 2.一个类可以有多个接口 3.类指向接口
四、对比分析
1.聚合和组合是特殊的关联。某种意义上说,关联,泛化和实现都属于依赖关系的一种。
2.聚合和组合都表示部分和整体的关系。但是聚合表示部分能够脱离整体而存在。例如汽车和轮胎。而组合表示部分不能脱离整体存在。当整体不存在了,部分也就没有存在的意义。例如鸟和翅膀。不过同一个部分和整体在不同的环境中,表示也可能不同。例如对于汽车制造商来说,汽车和轮胎是聚合关系。而对于汽车销售商来说,汽车和轮胎就是组合的关系了。
3.这几种关系是语义级别的不同。按照关系表现的强弱依次是:泛化=实现>组合>聚合>关联>依赖
五、总结
通过学习UML中的六种关系,掌握每一种关系所表示的意义,在实际系统中能够对类之间的关系进行区分,同时能够用Rational Rose工具将这六种关系正确的表示出来。