首先需要先了解一下对象之间的关系,以及它们对应的符号
通常对象之间的关系可以分为以下几类:
- 泛化关系
- 实现关系
- 依赖关系
- 关联关系
- 聚合关系
- 组合关系
对于继承(泛化)、实现(实现)这两种关系比较简单,它们体现的是一种类与类、或者类与接口之间的纵向关系。 其他的四种关系则体现的是类与类、或者类与接口之间的引用/横向关系。这四种关系所表现的强弱程度来看,从强到弱依次为:组合>聚合>关联>依赖。
![]()
1、泛化/继承(Generalization):实线+三角形空心
相当于类继承,父参与者可以是抽象的,即不能创建一个父参与者的直接实例,这就要求属于抽象父参与者的外部对象一定能够属于其子参与者之一。
![](https://img.haomeiwen.com/i20730097/583f9a8231bbee89.png)
2、关联关系(association) :实线箭头
关联关系:指的是类与类之间的联接,它使一个类知道另一个类的属性和方法(实例变量体现)。A类依赖于B对象,并且把B作为A的一个成员变量, 则A和B存在关联关系.
关联可以是双向的,也可以是单向的。两个类之前是一个层次的,不存在部分跟整体之间的关系。
单向:只能从A通过属性导航到B,B不能导航到A。
双向:A可以通过属性导航到B,B也可以通过属性导航到(双向即为嵌套)
对于两个相对独立的对象,当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间为关联关系
举例:比如老师和学生,老师知道班里的学生信息,学生不知道老师的信息,老师和学生就是一种单向的关联关系.老师知道学生信息,学生知道老师信息,两者之间就是双向关联关系.老师知道同行老师的信息,老师和老师就是自关联关系
![](https://img.haomeiwen.com/i20730097/b50f09097a2d0875.png)
3、聚合关系(aggregtion)棱形空心+实线
聚合(aggregation)关系是关联关系的一种,是强关联关系,是整合和部分的关系,是has-a的关系.
聚合关系也是通过成员对象来实现,其中成员对象是整体对象的一部分,但是成员对象可以脱离整体对象单独存在.(可替换)
表示一种弱的‘拥有’关系,即has-a的关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分。 两个对象具有各自的生命周期。
每一只大雁都属于一个大雁群,一个大雁群可以有多只大雁。当大雁死去后大雁群并不会消失,两个对象生命周期不同。
![](https://img.haomeiwen.com/i20730097/310fd5209b77943d.png)
4、依赖(Dependency) 虚线+箭头
依赖关系:指的是类与类之间的联接。依赖关系表示一个类依赖于另一个类的定义。
动物依赖氧气和水。调用新陈代谢方法需要氧气类与水类的实例作为参数
一般而言,依赖关系在Java语言中体现为成员变量、局域变量、方法的形参、方法返回值,或者对静态方法的调用。 表示一个A类依赖于B类的定义,如果A对象离开B对象,A对象就不能正常编译,则A对象依赖于B对象(A类中使用到了B对象);
![](https://img.haomeiwen.com/i20730097/03e8241f098f8117.png)
5、实现关系(realization)虚线三角形空心
实现关系:指的是一个class类实现 interface接口(可以实现多个接口)的功能;实现是类与接口之间最常见的关系;
在Java中此关系通过关键字implements明确标识。
![](https://img.haomeiwen.com/i20730097/7216c21ccd2599f2.png)
6,组合关系(composition)
组合是一种强的‘拥有’关系,是一种contains-a的关系,体现了严格的部分和整体关系,部分和整体的生命周期一样。
示例:
鸟和翅膀就是组合关系,因为它们是部分和整体的关系,并且翅膀和鸟的生命周期是相同的。
![](https://img.haomeiwen.com/i20730097/49cbb3e7de680002.png)
用例图指哪个参与者参与了哪个用例的执行,一般图形不会很复杂。
Rational Rose中若符号不够用的话,可打开Views→Toolbars→Configure添加新的符号
![](https://img.haomeiwen.com/i20730097/3d8345c52e3c37f2.png)
参与者:用以表示和系统进行交互的参与者角色,不一定是人也可以是物或者系统。并且参与者不是指人或事物本身,而是表示人或事物当时所扮演的角色。
用例:外部可见的系统功能,对系统提供的服务进行描述。
边界: 指系统与系统之间的界限。把系统边界以外的同系统相关联的其他部分称为系统环境。
关联:参与者和用例之间的关系用箭头表示,箭头表示在这一关系中哪一方是交互的主动发起者,箭头所指方是交互的被动接受者;
![](https://img.haomeiwen.com/i20730097/d661ff1b0ae1d69f.png)
类图:用来显示系统中的类、接口、协作以及他们之间的静态结构和关系的一种静态模型.(主要是展现类与类之间的关系,偏向于实现)
类图的组合关系图标需要先使用聚合图标;选中此关系,右击->open specification->roleA Detail->Containment of schedule中的By value选中即可
![]()
![](https://img.haomeiwen.com/i20730097/b71061e3461e1ccd.png)
接口(Interface)
接口是一种特殊的类,具有类的结构但不可被实例化,只可以被实现(继承)。在UML中,接口使用一个带有名称的小圆圈来进行表示。
![](https://img.haomeiwen.com/i20730097/8096c50df09dd27d.png)
一张完整的类图:
![](https://img.haomeiwen.com/i20730097/2e4660a881779653.png)
网友评论