(1)用例图(Use Case Diagram):主要用于描述系统的行为及各种功能之间的关系,是描述参与者(Actor)与用例(Use Case)以及用例与用例之间关系的图。
用例图 = 参与者 + 用例 + 关系 。
参与者(Actor):参与者可以是人或其他外界系统。参与者是用例的启动者,但它并不是系统的一部分。每个参与者可以参与一个或多个用例。
用例(Use Case):用例是一组系统功能需求(业务流程)的描述,产生一个可观察的结果, 用例反映用户的需求。
(2)用例图中的四种关系 。
关联:参与者与用例之间通常用关联关系来描述,带箭头的实线指向用例。
包含:一个用例(基础用例)的行为包含了另一个用例(包含用例)的行为。基础用例可以看到包含用例,并依赖于包含用例的执行结果。但是二者不能访问对方的属性。 虚线箭头+<
扩展:把新行为插入到已有用例的方法,即对特殊情况的扩展处理。虚线箭头+<
泛化:一个基本用例(或参与者)可以被特殊化为一个或多个子用例(或参与者)。
(1)UML将类分为实体类,边界(/接口)类,控制类。
① 实体类(Entity Class):用于对必须存储的信息和相关行为,进行持久化数据存储的类,如事件、人人或一些现实生活中的对象。
② 边界(/接口)类(Boundry Class):描述外部参与者与系统之间的交互,如显示...,点击...,跟新...。
③ 控制类(Control Class):系统内部进行逻辑处理的类。
(2)类图中的四种关系。
依赖:一种使用关系。一个事物的变化可能影响到使用它的另一个事物。带箭头的虚线表示。
泛化:与继承类似。用子类指向父类的一个实线的三角箭头来表示。
关联:分为普通关联、聚合关系和组合关系。
① 普通关系:两对象之间语义上的连接关系。
② 聚合关系:生命周期不同,即整体消亡,部分依旧存在。
③ 组合关系:生命周期相同,即整体消亡,部分也随之消亡。
多重度:指一个类的实例能够与另一个类的多少个实例相关联。使用“..”来表示, 0..* (或 *)表示0个或多个,1..* 表示1个或多个,n..m 表示有n到m个实例 ,0..1表示0个或1个,3表示3个。双向考虑多重度 。
实现:是一种类与接口的关系,表示类是接口所有特征和行为的实现。箭头指向:带空心三角箭头的虚线,箭头指向接口。
注:在类图中空心三角△/黑体实心箭头也可能是泛化关系。
关系强弱比较:泛化=实现>组合>聚合>关联>依赖。
(1)状态图
状态图(State Diagram)是一种行为图,用来描述一个特定对象在其生命周期中的各种状态以及状态之间的转换。这些对象可以是类、接口等等。
状态:指对象在其生命周期中的一种状况,处于某个特定状态中的对象必然会满足某些条件、执行某些动作或者是等待某些事件。一个状态的生命周期是一个有限的时间阶段。
转移:指两个不同状态之间的一种关系,表明对象在第一个状态中执行一定的动作,并且在满足某个特定条件下由某个事件触发进入第二个状态。
(2)通信图
强调对象之间在交互时的关联。显示一系列的对象和在这些对象之间的联系以及对象间发送和接收的消息。
通信图的消息发生顺序用图中的消息编号的方法来表示。表达式:通信图 = 交互的参与者 + 通信链 + 消息 。
通信图的表示方法:
① 交互的参与者:交互的参与者用一个对象符号来表示,在矩形框中放置交互的参与者,显示交互的参与者的名称和它所属的类:对象名 :类名
②链接:表示两个对象间的连接路径,沿着这条路径,消息可以流动。UML用直线表示链接、
③消息:用依附于链接的带标记的箭头和带顺序号的消息表达式表示。
(1)简要解释用例之间的include、extend和generalize关系的内涵。
包含(include):一个用例包含另一个用例,当基本用例执行时,被包含用例一定会执行。包含关系由基本用例指向被包含用例,关系是一条带箭头的虚线,虚线上包含<
扩展(extend):当一个用例执行时,可能会出现特殊情况和可选情况,这个时候就会执行扩展用例。扩展关系由扩展(特殊)用例指向基本用例,关系是一条带箭头的虚线,虚线上包含<
泛化(generalize):父用例泛化子用例,子用例继承父用例的所有属性和行为,并且父用例可以出现的地方,子用例都可以将其替换。
(2)根据说明,写出某个类的必要属性
答∶类名的属性∶说明中的属性全写上
(3)用例描述
基本事件流∶用例的完整执行流程1、2、3...。
备选事件流∶异常可选情况1a、1b、3a ...。
( 参与者∶xxx 前置条件∶xxx 后置条件∶xxx )
(4)设计模式:问题目中对应的设计模式及其意图和使用场所(近几年不常考)。
策略模式、观察者模式、组合模式、状态模式....。
注:仅为个人见解,如有不足请指正。