生活中,我们既是独立的个体,又通过联系形成各种关系,比如说:朋友,恋人,父子,同学……于是乎,出现了神乎其神的六人定律。那么在UML中又存在什么样的关系呢?下面我们来梳理一下。
关联(Association)
描述了两个或多个类之间的结构性关系。
图示:直线或直线+箭头
双向关联:
指双方都知道对方的存在,都可以调用对方的公共属性和方法。
箭头及指向:双向的关联可以有两个箭头或者没有箭头
例1:公司和人
将来在Person类中会有属性名为employer,类型为Company ;在Company类中会有一个属性为Employee,类型为Person
例2:教师和学生
单向关联:
指一方可以调用对方的属性和方法。
箭头及指向:单向关联是带普通箭头的实心线,指向被拥有者。
例3:学生和某课程
一名学生可能要上多门课程,课程是个抽象的东西他不拥有学生
自身关联(反身关联):
自己引用自己,带着一个自己的引用。就是在自己的内部有着一个自身的引用。
聚合关系:
是整体与部分的关系,且部分可以离开整体而单独存在。
箭头及指向:带空心菱形的实心线,菱形指向整体
例4:车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在
组合关系:
是整体与部分的关系,但部分不能离开整体而单独存在。
箭头及指向:带实心菱形的实线,菱形指向整体
例5:公司和部门是整体和部分的关系,没有公司就不存在部门。
依赖(Dependency)
依赖关系是一种使用关系,特定事物的改变有可能会影响到使用该事物的事物,反之不成立。通常情况下,依赖关系体现在某个类的方法使用另一个类作为参数
图示:虚线+箭头
例6:动物与氧气和水的关系
泛化(Generalization)
泛化关系是一种继承关系,是一种特殊/一般关系,特殊元素(子元素)的对象可替代一般元素(父元素)的对象。用这种方法,子元素共享了父元素的结构和行为。
图示:实线+空心三角
例7:动物与猎豹和狼的关系
实现(Realization):
实现是类元之间的语义关系,在该关系中一个类元描述了另一个类元保证实现的契约。一个类实现了一个接口。
图示:虚线+空心三角(箭头指向接口)
例8:遥控器类实现了电视剧的换台接口
各种关系的强弱顺序:
泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖
用一个通俗易懂的UML图来回顾一下这几种关系
现在对UML的学习只是刚刚开始,对知识的理解还不够充分,如果有错误的地方,还望大牛能够指点一二,万分感谢!
原文地址:http://blog.csdn.net/haovip123/article/details/24735721