UML的构造快包含3种:
(1) 事物(4种):结构事物,行为事物,分组事物,注释事物
(2) 关系(4种):泛化关系,实现关系,依赖关系,关联关系
(3) 图(10种):用例图,类图,对象图,包图,组件图,部署图,状态图,活动图,序列图,协作图
事物是对模型中最具代表性的成分的抽象;关系把事物结合在一起;图聚集了相关的事物。
UML中有四种关系:
泛化generalization、实现realization、关联association、依赖dependency。
1.泛化关系generalization:
即继承关系。是一种特殊/一般关系,特殊元素的对象可代替一般元素的对象。继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系之一;通过关键字extends明确标识。
图示:实线+空心三角
举例:employee和manager、engineer。engineer和manager都是雇员。
一个类实现了一个接口。通过关键字implements明确标识。
图示:虚线+空心箭头
举例:
描述了两个或多个类之间的结构性关系。
图示:直线
举例:一个person属于一个company,一个company有多个person。
一般关联:
关联可以使用单箭头表示单向关联,使用双箭头或不使用箭头表示双向关联,不建议使用双向关联。关联有两个端点,在每个端点可以有一个基数,表示这个关联的类可以有几个实例。
常见的基数及含义:
0..1:0或1个实例;
0..*:对实例的数目没有限制;
1:只能有一个实例;
1..*:至少有一个实例。
他体现的是两个类、或者类与接口之间语义级别的一种强依赖关系,比如我和我的朋友;这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的,表现在代码层面,为被关联类B以类属性的形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量;在java语言中关联关系是使用实例变量实现的。
是关联关系的一种,是一种强关联关系。聚合关系是整体和部分之间的关系。他体现的是整体与部分、拥有的关系,即has-a的关系,聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。
图示:空心菱形+实线+箭头
举例:汽车与轮胎、引擎
也是关联关系的一种,但他是比聚合关系更强的关系。要求聚合关系中代表整体的对象要负责代表个体的对象的整个生命周期。如果代表整体的对象被销毁或破坏,那么代表个体/部分的对象也一定会被销毁或破坏,而聚在合关系中,代表个体/部分的对象则有可能被多个代表整体的对象所共享,而不一定会随着某个代表整体的对象被销毁或破坏而被销毁或破坏;是整体与部分的关系,但部分不能离开整体而单独存在。他体现的是一种contains-a的关系.
图示:实心菱形+实线+箭头
举例:人和肢
一个类或者包依赖另一个类或者包。
图示:虚线加箭头。箭头指向的是被依赖的那一方。
举例:client类依赖supplier类,client类中的一个参数是是supplier类。是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖。
代码表现:局部变量、方法的参数或者对静态方法的调用。