UML用例图与类图

1、用例图

用例图是被称为参与者的外部用户所能观察到的系统功能的模型图。 (《UML参考手册》)

用例图列出系统中的用例和系统外的参与者,并显示哪个参与者参与了哪个用例的执行(或称为发起了哪个用例)。

用例图多用于静态建模阶段(主要是业务建模和需求建模)。

1.1用例图中的事物

1.1参与者(Actor)

在系统外部与系统直接交互的人或事物(如另一个计算机系统或一些可运行的进程)。
1.参与者是角色(role)而不是具体的人,它代表了参与者在与系统打交道的过程中所扮演的角色。所以在系统的实际运作中,一个实际用户可能对应系统的多个参与者。不同的用户也可以只对应于一个参与者,从而代表同一参与者的不同实例。

2.参与者作为外部用户(而不是内部)与系统发生交互作用,是它的主要特征。

3.在后面的顺序图等中出现的“参与者”,与此概念相同,但具体指代的含义,视具体情况而定。

UML表示:
UML用例图与类图

1.2用例(Use Case)

系统外部可见的一个系统功能单元。系统的功能由系统单元所提供,并通过一系列系统单元与一个或多个参与者之间交换的消息所表达 。

UML表示:
UML用例图与类图

1.2用例图中的关系

1.2.1关联关系(参与者与用例之间)

表示参与者与用例之间的交互,通信途径。
(关联有时候也用带箭头的实线来表示,这样的表示能够显示地表明发起用例的是参与者。)

UML表示:
UML用例图与类图

1.2.2包含关系(用例与用例之间)

箭头指向的用例被包含的用例,称为包含用例箭头出发的用例基用例。包含用例是必选的,如果缺少包含用例,基用例就不完整;包含用例必须被执行,不需要满足某种条件;其执行并不会改变基用例的行为。

UML表示:
UML用例图与类图

1.2.3扩展关系(用例与用例之间)

箭头出发的用例被扩展的用例,称为扩展用例箭头指向的用例基用例。扩展用例是可选的,如果缺少扩展用例,不会影响到基用例的完整性;扩展用例在一定条件下才会执行,并且其执行会改变基用例的行为。

UML表示:
UML用例图与类图

1.2.4泛化关系(参与者与参与者之间)

发出箭头的事物“is a”箭头指向的事物。泛化关系是一般和特殊关系,发出箭头的一方代表特殊的一方,箭头指向的一方代表一般一方。特殊一方继承了一般方的特性并增加了新的特性。

UML表示:
UML用例图与类图

这里来做个用例图的小例子。

例1 参与者之间的泛化关系
参与者:经理,安全主管,保安
用例:管理人事,批准预算,批准安全证书,监视周边

在参与者之间不存在泛化关系的情况下,各个参与者参与 用例的情况分别是:经理参与用例管理人事和批准预算;安全主管参与用例批准安全证书;保安参与用例监视周边。由于安全主管与经理,安全主管与保安之间泛化关系的存在,意味着安全主管可以担任经理和保安的角色,就能够参与经理和保安参与的用例。这样,安全主管就可以参与全部4个用例。但经理或者保安却不能担任安全主管的角色,也就不能参与用例批准安全证书。

首先,打开StarUML。

UML用例图与类图

同时右键删掉Main

右键Model。

UML用例图与类图

同样可以修改用例图的文件名。

这时候仍然右键Model,添加参与者用例

UML用例图与类图

修改参与者与用例的名称,并拖动到用例图中。

UML用例图与类图

最后添加参与者与参与者,用例与参与者之间的关系。

UML用例图与类图

以此类推,找到参与者与用例相对应的关系,最后完成效果如下。

UML用例图与类图

2、类图

类图以反映类的结构(属性、操作)以及类之间的关系为主要目的,描述了软件系统的结构,是一种静态建模方法
类图中的“类”与面向对象语言中的“类”的概念是对应的,是对现实世界中的事物的抽象。

2.1类图中的事物

2.1.1类

  1. 从上到下分为三部分,分别是类名属性操作。类名是必须有的。

  2. 类如果有属性,则每一个属性都必须有一个名字,另外还可以有其它的描述信息,如可见性、数据类型、缺省值等。

  3. 类如果有操作,则每一个操作也都有一个名字,其它可选的信息包括可见性、参数的名字、参数类型、参数缺省值和操作的返回值的类型等。

UML用例图与类图

2.1.2接口

一组操作的集合,只有操作的声明而没有实现。

UML用例图与类图

2.1.3 抽象类

不能被实例化的类,一般至少包含一个抽象操作。

UML用例图与类图

2.1.4 模版类

一种参数化的类,在编译时把模版参数绑定到不同的数据类型,从而产生不同的类。

UML用例图与类图

2.2类图中的关系

2.2.1关联关系

描述了类的结构之间的关系。具有方向、名字、角色和多重性等信息。一般的关 联关系语义较弱。也有两种语义较强,分别是聚合关系与组合关系。

其中包括单向关联(Derected Association)双向关联(Association)

UML表示法:

单向关联(Derected Association)

UML用例图与类图

关联关系本质就是依赖关系

但是这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的。

故箭头指向被依赖的一方。

UML用例图与类图

2.2.2聚合关系(Aggregration)

特殊关联关系,指明一个聚集(整体)和组成部分之间的关系

UML用例图与类图

箭头指向整体

2.2.3组合关系(Composition)

语义更强的聚合,部分和整体具有相同的生命周期

UML用例图与类图

箭头指向整体

2.2.4依赖关系(Dependency)

定义两个类,一个A类,一个B类,然后A类引用了B类,这种关系称之为偶然性或者临时性。同时当我们的B类发生变化的时候,那么影响到A类,这个关系称之为依赖关系

UML用例图与类图

箭头指向被依赖者

2.2.5实现关系(Realization)

对应于类和接口之间的关系。

UML用例图与类图

箭头指向接口

2.2.6泛化关系(Generalization)

在面向对象中一般称为继承关系,存在于父类与子类、父接口与子接口之间。

UML用例图与类图

箭头指向父类