UML中的关系
UML中的关系(Relationships)主要包括5种:关联关系、聚合关系、依赖关系、泛化关系和实现关系。
关联(Association)关系
关联关系是一种结构化关系,指一种对象和另一种对象有联系。注重的是对象之间的结构。关联关系用一条实线表示。现实生活中所有的两个事物之间都有联系,可以把它们统叫做关联关系,但要细分的话就产生了后四种关系。
用一条没有箭头的实线表示。
聚合关系
聚合也称为聚集,是关联的特例。聚合表示类与类之间的关系是整体与部分的关系,即一个表示整体的模型元素可能由几个表示部分的模型元素聚合而成。(一个整体由多个部分组成)
聚合关系有以下2种情况,在不同的情况下有特定的叫法。
(1) 如果部分对象同时参与了多个整体对象的构成,则叫做共享聚合。
(2) 如果部分类完全隶属于整体类,部分与整体共存,整体不存在了部分也会随之消失,则叫做复合聚合(简称为组成)。
聚合关系用一端带有空心小菱形的直线表示,小菱形端连接表示整体事物的模型元素,另一端连接表示部分事物的模型元素。如图:
此图表示歌唱大赛由专业评委等对象组成(具体细分为共享聚合,因为专业评委可能同时参加多个歌唱大赛)。
还有一种更紧密的聚合关系——组合关系(很少使用)。组合关系是在聚合关系之上的更紧密的耦合关系,它同样是描述元素之间部分与整体的关系,但部分类需要整体类才能存在,当整体类被销毁时,部分类将同时被销毁。组合关系用一端带有实心小菱形的直线表示,小菱形端连接表示整体事物的模型元素,另一端连接表示部分事物的模型元素。
依赖(Dependency)关系
描述两个模型元素(类、用例)之间的语义关系:其中一个模型元素是独立的,另一个模型元素不是独立的,它依赖于独立的模型元素,如果独立的模型元素改变,将影响依赖于它的元素。
依赖关系中在具体一点分为包括关系(include)和扩展关系(extend)。
包含关系:指的是其中一个用例(称作基础用例)的行为包含了另一个用例(称作包含用例)的行为。基础用例可以看到包含用例,并依赖于包含用例的执行结果。但是二者不能访问对方的属性。包括关系用一条带箭头的虚线加《include》字样表示,箭头指向是被包含的对象。
此图说明了,在修改用户信息前需要先查出要修改的那一条记录。修改的行为包含了查询行为。
扩展关系:一个用例也可以被定义为基础用例的增量扩展,这称作扩展关系。扩展关系是把新行为插入到已有用例的放。在UML中,扩展关系表示为虚线箭头加《extend》字样,箭头指向被扩展的用例。
图中描述了向图书馆归还图书时,如果逾期了就会产生缴纳罚款的行为。归还图书的行为扩展出缴纳罚款行为,箭头是指向归还图书的。
泛化(Generalization)关系
UML中的泛化关系定义了一般元素和特殊元素之间的分类关系,与C++及Java中的继承关系有些类似。泛化可分为普通泛化和受限泛化。
1.普通泛化
就是没有给泛化添加约束。普通泛化关系用一条带有空心箭头的实线来表示,箭头指向更抽象程度高的对象。
图中表示【汽车】是【交通工具】的一种。
2.受限泛化
可以给泛化关系附加约束条件,说名该泛化关系的使用方法或扩充方法,称为受限泛化。预定义的约束有4种:多重、不相交、完全和不完全。这些约束都是语义约束。
实现(Realization)关系
实现关系将一种模型元素(如类)与另一种模型元素(如接口)连接起来,其中接口只是行为的说明而不是结构或者实现。真正的实现由使用接口的模型元素来完成。
通常在两种地方会遇到实现关系:
(1)一种是在接口和实现它们的类或构件之间;
(2)另一种是用例和实现它们的协作之间。
在UML图中,实现关系一般用一条带有空心箭头的虚线来表示,,箭头指向接口。
该图表示的是一种实现关系,类【car】实现了接口【runable】。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)