UML用例图、类图、状态图、时序图

1、用例图


用例图包括:参与者、用例、关系;


1.参与者(actor ,有些书翻译成“角色”)

①参与者是系统外部的一个实体(可以是任何的事物或人),它以某种方式参与了用例的执行过程。

②参与者可以是真实的人,即用户;其他的系统;一些可以运行的进程,如时间。


2.UseCase: 用例(UseCase):

是对一组序列动作的描述,系统执行这些动作将对用例的参与者产生可以观察的结果。是参与者可以感受到的系统服务或功能单元。在图形上,用例用实线的椭圆表示。

用例是对系统的用户需求(主要是功能需求)的描述,用例表达了系统的功能和所提供的服务。

识别用例最好的办法就是从分析系统的参与者开始,考虑每个参与者是怎样使用系统的。用例建模的过程就是迭代和逐步精华的过程。

1.用例应描述系统该做什么,而不是如何做
2.用例应采取参与者的视点 
3.用例应对参与者有价值 
4.用例描述的时间流应是一个完整场景 
5.所有的参与者、用例都应有相应的关联用例或关联参与者 
6.计算用例的数量,控制用例的数目 

3.关系

1>关联关系

2>泛化关系(继承关系Generalization)

 一个用例可以被特别列举为一个或多个子用例,这被称为用例泛化。子用例表示父用例的特殊形式,子用例从父用例处继承行为和属性,还可以添加行为或覆盖、改变已继承的行为。

3>包含关系(Include)

包含指的是其中一个用例(称作基础用例)的行为包含了另一个用例(称作包含用例)的行为。基础用例可以看到包含用例,并依赖于包含用例的执行结果。但是二者不能访问对方的属性。

4>扩展关系

 一个用例也可以被定义为基础用例的增量扩展,这称作扩展关系。

      ps:与包含关系不同的是,扩展关系的基础用例没有扩展也是完整的。

包含用例与扩展用例的区别
1.相对于基础用例,扩展用例是可选的;包含用例则不是。
2.如果缺少扩展用例,基础用例还是完整的;缺少包含用例,则基础用例就不完整了。
3.扩展用例的执行需要满足某种条件;包含用例不需要。
4.扩展用例的执行会改变基础用例的行为;包含用例不会。
性质:因为基本用例的行为被包含用例或扩展用例的行为延伸了,所以基本用例的行为依赖于包含用例或扩展用例的行为。所以,包含关系和扩展关系都是依赖关系的特例

2、类图

类图要素有:类、接口、类之间关系

1.类

首先,看动物矩形框,它代表一个类(Class)。类图分三层,第一层显示类的名称,如果是抽象类,则就用斜体显示。第二层是类的特性,通常就是字段和属性。第三层是类的操作,通常是方法或行为。前面的符号,表示public表示private表示protected

2.接口

右下角的飞翔,它表示一个接口图,与类图的区别主要是顶端的<<interface>>显示。第一行是接口名称,第二行是接口方法。

 3.类之间关系

1>继承

接下来的是类与类,类与接口之间的关系了。首先注意动物、鸟、鸭、唐老鸭之间的关系符号。它们都是继承的关系,继承关系用空心三角形 + 实线来表示的。

2>关联

企鹅和气候两个类,企鹅是很特别的鸟,会游不会飞。更重要的是,它与气候有很大的关联。我们不去讨论为什么北极没有企鹅,为什么它们要每年长途跋涉。总之,企鹅需要知道气候的变化,需要了解气候规律。当一个类知道另一个类时,可以用关联(association)。关联关系用实线箭头来表示

3>依赖

  动物的几大特征,比如有新陈代谢,能繁殖。而动物要有生命力,需要氧气、水以及食物等。也就是说,动物依赖于氧气和水。他们之间是依赖关系(Dependency),用虚线箭头来表示。

4>聚合(弱的拥有关系)

再来看大雁和雁群这两个类,大雁是群居动物,每只大雁都是属于一个雁群,一个雁群可以有多只大雁。所以它们之间就满足聚合(Aggregation)关系。聚合表示一种弱的拥有关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分。聚合关系用空心的菱形 + 实线箭头来表示。

 5>组合

 组合(Composition)是一种强的拥有关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样。在这里鸟和其翅膀就是组合关系,因为它们是部分和整体的关系,并且翅膀和鸟的生命周期是相同的。组合关系用实习的菱形 + 实线箭头来表示。另外,你会注意到合成关系的连线两端还有一个数字1和数字2,这被称为基数。表明这一端的类可以有几个实例,很显然,一个鸟应该有两只翅膀。如果一个类可能有无数个实例,则就是n来表示。关系关系、聚合关系也可以有基数的。

 3.状态图

状态图由状态、转移、事件、活动和动作五部分组成

1>状态

状态由一个带圆角的矩形表示,状态的描述应该包括:名称、入口和出口动作、内部转换和嵌套状态。

  初始状态:每个状态图都应该有一个初始状态,它代表状态图的起始位置。
一个状态图只能有一个初始状态,用一个实心的圆表示。
  终止状态:终止状态是一个状态图的终点,一个状态图可以拥有一个或者多个终止状态。对象可以保持在终止状态,但是终止状态不可能有任何形式的触发转换,它的目的就是为了激发封装状态上的完成转换。
  判定:实际就是工作流在此处按监护条件的取值发生分支,在UML中判定用空心菱形表示。

2>转换(Transition)

转换用于表示一个状态机的两个状态之间的一种关系,即一个在某初始状态的对象通过执行指定的动作并符合一定的条件下进入第二种状态。

3>判定(choice)

4>同步(Synchronization)

同步条是为了说明并发工作流的分支与汇合。状态图和活动图中都可能用到同步。在UML中,同步用一条线段来表示。

5>事件

<6>状态图构建

1. 确定状态图的实体

2. 确定状态图中实体的状态


对于一个学生账号来说,它的状态主要包括:
  初始状态
  终止状态
  可选课状态
  不可选课状态
  账号被删除状态

3. 创建相关事件完成状态图

四、序列图

序列图由对象、生命线、激活、消息组成

先来个示例:

 

1、 角色(actor)
系统角色可以是人,或者其他系统。上述例子中的的角色就是人。

2、对象(object)
对象位于时序图的顶部,用一个方框标识。

3、生命线(lifeline)
时序图中每个对象底部中心都会绘制一条向下的垂直虚线,这就是对象的生命线。代表对象在一段时间内存在。

4、控制焦点(activation)
控制焦点标识时序图中的执行一项操作的时期,在时序图中每条生命线上以比较窄的巨星代表活动期。

5、消息(message)
消息是对象直接交互的信息流,存在于时序图的两条生命线之间,用带箭头的线标识,箭头方向代表消息的传送方向。实线代表传送的消息(命令),虚线代表对象反馈的消息(返回值)。
 

猜你喜欢

转载自blog.csdn.net/lyhizjj/article/details/130392481