题型及分值分布:
一、 填空题(共12分,每题1分)
二、 单选题(共20分,每题1分)
三、 判断题(共20分,每题2分)
四、 简答题(共24分,每题8分)
五、 设计题 (共24分,每题8分)
重点复习
uml概述
uml的特点(理解)[选择、填空]
uml的特点:
- (1)统一标准
- 提供标准的面向对象的模型元素的定义和表示。
- (2)面向对象
- 西区面向对象技术领域其他流派的长处。剔除了他们的缺点。
- (3)可视化、表示能力强
- 表示系统的逻辑模型或实现模型,用于复杂软件系统的建模。
- (4)独立于过程
- 独立于特定的软件开发过程。
- (5)易掌握、易用
- UML概念明确建模表示法简洁明了,易于掌握使用。
uml构造块中的关系类型包括关联、依赖、泛化、实现
UML中事物是模型中基本元素的抽象,关系把事物结合在一起,图聚集了相关事物。
uml的基本构造块:
- 事物: 语言描述的基本要素
- 事物是UML语言的基本构成要素,包括:
- 结构事物: 语言的静态构成要素,有7种
- 行为事物: 语言的动态构成要素,表示事物的变化和状态
- 分组事物: 对模型中事物分组组织的要素
- 注记事物: 对模型中事物标注和解释
- 结构事物: 语言的静态构成要素,有7种
- 事物是UML语言的基本构成要素,包括:
- 关系: 语言要素之间的关系
- 关联
- 本指事物之间存在的固有的牵连关系,在UML中,是对具有共同结构特征、关系和语义的对象之间相互链接的描述。
- 泛化
- 在UML中,描述事物之间的一般和特殊关系。特殊事物具有并继承一般事物的特性。
- 依赖
- 两个要素之间的因果关系,其中一个要素(独立要素)发生变化会影响另外一个要素(依赖要素)的语义。
- 实现
- 描述类元之间的语义关系。一种是接口与实现它的类和构件;另一种是用例和实现它们的协作。
- 关联
- 图: 语言所能够提供的图形类型
uml的4类公共(通用)机制是规格说明、修饰、通用划分、扩展机制
uml的公共机制有:
- 规格说明
- UML允许对每一个用图形符号表示的模型元素给出详细的文字语义说明。使可视化视图和文字视图分离。
- 售书处理用例的说明↓
- 修饰
- 表示 : 将图形修饰附加到UML图形的模型元素上,通常写在相关元素旁边
- 作用 : 为图形中的元素增加语义
- 例:当一个元素代表一个类型时, 名称用粗体表示;
代表一个类型的实例时, 名称用下划线表示;
代表接口时,名称用斜体表示。
- 通用划分
- 类型-实例
- 定义 : 描述了一个通用描述符与单个元素之间的对应关系。通用描述符成为型元素(相当于类),单个元素是实例元素(相当于类的实例)。
- 表示 : 使用相同的表示, 但名称的表示不同。实例元素名称有下划线,且名称后加上冒号和通用描述符。
- 例 : 类与对象相当于一种型-实例划分, 数据类型与数据值
- 接口-实现
- 强制规范与实现的约定,接口声明了一个规定了服务的约定,实例负责执行接口的全部语义定义并实现该项服务。
- 类型-实例
- 扩展机制
- ① 版型:用来扩展UML的词汇,使用户可以从已经存在的模型元素中派生出新模型元素。
- ② 标记值:用来扩充模型元素的属性
- ③ 约束:约束扩充模型的元素的语义,使用户可以添加新规则或修改已存在的规则
uml的扩展机制(版型、标记值、约束)
uml的扩展机制:
- ① 版型
- 用来扩展UML的词汇,使用户可以从已经存在的模型元素中派生出新模型元素。
- 例1,把“包” 构造为“子系统”类型。
- 例2,参与者是一个版型化的类。
- ② 标记值
- 标记值用来扩充模型元素的属性。
- 例如,{location=client}指出类student驻留在客户机结点上。
- ③ 约束
- 约束扩充模型的元素的语义,使用户可以添加新规则或修改已存在的规则。约束用{ }描述。
- 例如,{subset}指出领导是成员的子集。
uml的4+1视图的使用者及作用。
UML1.x共定义了9种图,UML2.0扩展为14种:
●用例图 ●状态图
●类图 ●活动图
●对象图 ●组合结构图
●顺序图 ●构件图
●协作图 ●部署图
●时序图 ●包图
●交互概览图
视图(views) :
一个系统应从不同的角度进行描述,从一个角度观察到的系统称为一个视图(view)。
视图由多个图(Diagrams)构成,它不是一个图表(Graph),而是在某一个抽象层上,对系统的抽象表示。
如果要为系统建立一个完整的模型图,需定义一定数量的视图,每个视图表示系统的一个特殊的方面。另外,视图还把建模语言和系统开发时选择的方法或过程连接起来。
用例视图(Use Case View)
使用者 : 全部人员
作用 : 描述用户需要的系统功能。用例模型列出系统中的用例和参与者, 显示哪个参与者执行哪个用例
核心 : 用例视图是其它四种视图的核心, 其作用是驱动其它视图开发
逻辑视图(Logical View)
使用者 : 设计人员, 开发人员
实现需求 : 系统功能
作用 : 揭示系统的内部设计和协作情况, 表示系统静态结构和动态行为。
主要用来描述系统的功能需求,反应出系统内部是如何组织和协作来实现功能的,不涉及具体的编译即输出和部署。
静态结构 : 描述类, 对象, 关系
动态行为 : 描述对象之间通过发送消息产生的动态协作
实现视图(Implementation View)
使用者 : 程序员
作用 : 描述软件的静态结构, 显示代码之间的组织方式, 通过系统输入输出关系的模型图和子系统图,来描述实现模块之间的依赖关系.
进程视图(Process View)
使用者 : 系统集成.
作用 : 显示系统并发性, 解决在并发系统中存在的通信和同步问题。该视图显示进程, 线程, 对象等运行时状态, 以及相关同步, 并发, 通信等问题
进程视图与实现视图关系 : 实现视图显示的是编译时的静态关系, 进程视图显示的是编译完之后运行时的对象、线程、进程之间的交互问题
部署视图(Deployment View)
使用者 : 运维
作用 : 软件到硬件的映射,把目标程序及其依赖的运行库和系统软件部署到物理机器上,以及说明部署机器对系统环境的要求。部署视图综合考虑软件系统和整个IT系统相互影响的架构视图。
部署视图与进程视图关系 : 进程视图关注程序的动态执行情况,部署视图关注程序的静态位置
uml的应用领域不仅限于软件系统建模,也可以应用在其他领域系统的建模。
用例图
用例图的概念(主要描述系统的功能及功能间的关系,是整个开发过程的开发依据,用例是与实现无关的关于系统功能的描述。是一种功能分解的技术,并没有使用面向对象思想。
用例图用来描述软件需求模型中的系统功能,通过一组用例可以描述软件系统能够给用户提供的功能。
用例图可以作为整个系统开发过程中的开发依据,指导和驱动其他模型。
参与者与用例间的关系。
每个参与者可以参与一个或多个用例。
一个用例可以由多个参与者使用。
用例图中的关系的类型及分析判断及图例(泛化、包含和扩展)
包含关系:
- 两个用例之间,一个用例(基本用例)的行为要用到另外一个用例(包含用例)的行为。
- 将若干用例的相同动作,提取出来单独构成一个用例。这个用例可以重用
- 特点:由基本用例决定是否调用,包含用例对调用对象一无所知,且不参与其中的选择判断。
- 使用场景 :
- 公用用例 : 为了复用用例, 当多个用例有重复的功能,可以将重复的功能分解到另一个用例中,将这个分解出来的用例与原来的多个用例建立包含关系。
- 分解用例 : 为了简化用例, 当一个用例包含的功能太多的时候,需要将用例分解成一个个子用例,用例之间建立包含关系。
- 图形表示:
扩展关系:
- 扩展关系表示基本用例在扩展点要增加新的行为或功能,以扩展到新用例。
- 当在某个现有用例中插入“可选”行为或“异常”行为时,使用扩展关系
- 扩展用例总是在一个或多个扩展点处来扩展基本用例,或处于特定条件下, 才扩展基本用例。
- 使用情形 :
- a.两个用例相似但不完全相同时
- b.当要对多个额外情况逐一建模时,使用扩展关系,用一个独立的用例替代每个额外的情况
- c.如果用例涵盖了所有的情况变化,则该用例将会变得十分复杂,应该考虑使用扩展关系
包含关系与扩展关系的区别:
①两个关系箭头方向相反.包含关系的箭头由基用例指向包含用例;扩展关系的箭头由扩展用例指向基用例。
②在基用例执行的过程中,被包含的用例一定要被执行;扩展关系如果条件不为真,扩展用例可以不执行。
③包含关系中的基用例必须依赖被包含的用例,它不能独立存在;扩展关系中的基用例可独立存在。
泛化关系:
- 泛化代表一般与特殊的关系。子用例表示父用例的特殊形式。
- 父用例表示通用行为序列,通过插入额外的步骤,子用例特化父用例。
- 表示方法↓
关系的比较:
用例图的绘制
绘制用例图的注意事项:
- (1)用主动语态描述用例
强调动作的施加对象
- (2)利用事件/响应描述用例
体现参与者与系统的交互
- (3)用例文档中可以使用其他UML图
顺序图和协作图
交互图通常用于描述一个用例的行为,显示该用例中所涉及的对象和这些对象之间的消息传递情况
顺序图是显示对象之间交互的图,描述了对象之间传送消息的时间顺序。
顺序图中的消息类型(简单、异步、同步、返回、返身,阻止、超时)含义,图形表示。
顺序图包含4个元素:
- 对象(Object)
- 生命线(Lifeline)
- 消息(Message)
- 控制焦点(激活)(Activation)
消息的种类:
简单消息
- 表示普通的控制流。只表示控制如何从一个对象传递给另一个对象,而没有描述通信的任何细节。
- 主要用于通信细节未知或者无需考虑通信细节的场合。即主要用于不知道消息是同步还是异步的场合,但通常表示异步消息
- 图形表示
异步消息
- 发送者将该消息发送给接收者后,无需等待接收者消息处理的完成而继续执行。异步消息的接收者和发送者是并发工作的。
同步消息(调用消息)
- 调用消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息接收者放弃或返回控制。
- 调用对象的接收者必须是一个被动对象。应该有一个配对的返回消息,但为了图的简洁,可以省略。
- 图形表示
返回消息
- 是接收对象接收到消息之后,给发送对象返回的消息,通过该应答消息告诉接收对象,已经成功接收到发送的消息。
反身消息
- 消息发送方和消息接受方是同一个对象
阻止消息
- 消息发送者发出消息给消息接收者,如果接收者无法立即接受消息,则发送者放弃这个消息
超时消息
- 消息发送者发出消息给消息接收者并按指定时间等待,如果接收者无法在指定时间内接受消息,则发送者放弃这个消息
协作图中链是关联的实例,当一个类与另一个类之间有关联时,这两个类的实例之间就有链,一个对象就能向另一个对象发送消息。要在协作图中增加消息,必须先建立对象之间的链接。消息显示在链的旁边,一个链可以有多个消息
协作图用于强调发送和接受消息的对象之间的结构组织的交互图,显示对象、对象之间的链接以及对象之间的消息。
顺序图一般完成一个任务,执行用例的一条路径,而协作图可以完成多个任务,执行多条路径。
建立协作图的步骤(8步)
建立协作图的步骤:
- (1)确定交互过程的上下文。
- (2)识别参与交互过程的对象。
- (3)如果需要,为每个对象设置初始特性。
- (4)确定对象之间的链,以及沿着链的消息。
- (5)从引发这个交互过程的初始消息开始,将随后的每个消息附到相应的链上。
- (6)如果需要表示消息的嵌套,则用Dewey十进制数表示法。
- (7)如果需要说明时间约束,则在消息旁边加上约束说明。
- (8)如果需要,可以为每个消息附上前置条件和后置条件。
类图和对象图
类的定义,各个部分(名称、属性、操作)的命名规则及含义。
类的元素:
- 1 名称
- ① 名词或名词短语(动词或动词短语表示控制类)
例如:人,桌子,图形,汇总
- ② 尽可能用明确、简短,业务领域中事物的名称,
避免使用抽象、无意义的名词例如:帐户,订单,事物
- ③ 用英文,第1个字母大写
例如:Shape, Person, CheckingAccdount
- ④ 可分为简单类名,带限定名的类名
例如: CheckingAccdount Banking::CheckingAccdount
- ① 名词或名词短语(动词或动词短语表示控制类)
- 2 属性
- 用来描述该类的对象所具有的静态特征。
- 一个类可以拥有三种类型的信息:
- 对象必须了解自己,即他有自己的结构和当前的状态
- 对象必须了解与其它对象的关系
- 对象有时还要监视特定的信息
- 类可以有任意数目的属性,也可以没有属性。
- 在UML中,类属性的语法为:
- [可见性] 属性名 [:类型] [多重性] [=初始值] [{特性}]
- (1) 可见性
- (2) 属性名
- (3) 类型
- (4)多重性
- (5)初始值
- (6)特性
- (7)类作用域的属性
- 3 操作
- 用于修改、检索类的属性或执行某些动作。
- 一个类可以有任意数量的操作或者根本没有操作
- 返回类型、名称和参数一起被称为特征标记。
- 在同一个类中,操作的名称不必是惟一的,但特征标记必须是惟一的。
- 在UML中,类操作的语法为:
[可见性] 操作名 [(参数列表)] [:返回类型] [{特性}] - (1) 可见性
- (2) 操作名
- (3) 参数表
- (4) 返回类型
- (5) 特性
- (6) 类作用域的操作
- 4 职责
- 5 约束
- 6 注释
类之间的关系(关联、聚集、组合、依赖、实现)概念含义,区别,及应用
类之间的关系:
1 关联关系
- 模型元素间的一种语义联系,是对具有共同的结构特性、行为特性、关系和语义的链的描述
- 一个完整的关联包含三部分:类之间的关联直线和两个关联端点。端点是一个元类,有自己的属性(多重性、约束、角色)。
- (1) 名称(Name)
- (2) 角色(Role)
- (3) 多重性(Multiplicity)
- (4) 关联类(Association Class)
- (5)关联的约束
- (6)限定关联
- 限定符是关联的属性,而不是类的属性
- 限定符概念在进行软件设计时非常有用,如果一个系统需要根据关键字对数据集进行查询,则经常用到限定关联。
- 引入限定符的一个目的是把多重性从n降为1或0..1,这样如果做查询操作,则返回的对象最多是一个,而不是集合
- (7)关联的种类
- 自反关联(一元关联)
- 二元关联
- N元关联(多元关联)
- 自反关联(一元关联)
- (8) 导航性
- 一个类的属性中有另一个类。
2 聚集关系
- 一种特殊类型的关联。
表示整体与部分关系的关联。
需求分析中的“包含”、“组成”、“分为……部分”
作为整体方的类的重数不是1,则作为聚集
- 一种特殊类型的关联。
3 组合关系
- 聚合关系中的一种特殊情况,是更强形式的聚合,又称强聚合
整体拥有各个组成部分,部分与整体共存,整体不存在,则部分随之消失。
整体不仅控制着部分对象的行为,而且控制着部分对象的创建和结构。
- 聚合关系中的一种特殊情况,是更强形式的聚合,又称强聚合
4 泛化关系
- 泛化具有抽象、概括和超越的意思。
泛化指抽取事物的共性特征,形成超越特殊事物而具有普遍意义的一般事物的方法。
泛化的反面是特化,意思是对一般事物的具体化、特殊化和细化。
泛化和特化反映事物之间的特殊与一般关系。可以用于类、用例以及其他模型元素。
- 泛化具有抽象、概括和超越的意思。
5 依赖关系
表示一个模型元素在其语义或结构上依赖于另外一个元素。
一个模型元素是独立的,另一个不是独立的。非独立的模型元素依赖于独立模型元素,独立模型改变将影响依赖于其的非独立模型。
应用场合:
一个类向另一个类发送消息
一个类是另一个类的数据成员
一个类作为另一个类中操作的参数
关联、实现和泛化在语义上都是依赖关系。如果类A和类B之间有关联关系,那么A和B之间就有依赖关系了,但如果两个类间有关联关系,那么一般只表示出关联关系即可,不用再表示依赖关系。
依赖关系不生成专门的代码。
与泛化关系类似,依赖关系也不仅仅用于类间关系,其他建模元素如用例间也有依赖关系。关联关系与依赖关系区别:
6 实现关系
- 规格说明和其实现之间的关系。类和接口之间的关系是实现关系,表示类实现接口提供的操作。显示一个类引用另一个类。
客户必须至少支持提供者的所有操作。
泛化和实现都可以将一般描述与具体描述联系起来:
泛化将同一语义层上的元素连接起来,并且通常在同一模型内。
实现将不同语义层内的元素连接起来,并且通常建立在不同的模型内。
- 规格说明和其实现之间的关系。类和接口之间的关系是实现关系,表示类实现接口提供的操作。显示一个类引用另一个类。
聚集关系与组合关系区别
聚集关系也称“has-a”关系,组合关系也称“contains-a”关系。
聚集关系表示事物的整体/部分关系的较弱的情况,组合关系表示事物的整体/部分关系较强的情况。
在聚集关系中,代表部分事物的对象可以属于聚集对象,也可以为多个聚集对象所共有,而且可以随时改变他所从属的聚集对象。代表部分的事物与聚集事物对象的生存期无关。在组合关系中,代表整体事物的对象负责创建和删除代表部分事物的对象,代表事物的对象只属于一个组合对象,一旦删除组合对象,也就删除了相应代表部分事物的对象。
类间关系的总结
聚集和组合关系表达整体和部分关系
泛化关系表达一般和特殊关系
依赖、关联表示语义关系
在描述语义上相互有联系的类之间的关系时,首先考虑泛化关系和关联关系,当类之间的关系不宜于这两种关系,考虑依赖关系。
理解掌握关联关系(名称、角色、多重性、关联类、限定关联,关联的种类)
关联关系
模型元素间的一种语义联系,是对具有共同的结构特性、行为特性、关系和语义的链的描述
一个完整的关联包含三部分:类之间的关联直线和两个关联端点。端点是一个元类,有自己的属性(多重性、约束、角色)。
(1) 名称(Name)
(2) 角色(Role)
(3) 多重性(Multiplicity)
(4) 关联类(Association Class)
(5)关联的约束
(6)限定关联
限定符是关联的属性,而不是类的属性
限定符概念在进行软件设计时非常有用,如果一个系统需要根据关键字对数据集进行查询,则经常用到限定关联。
引入限定符的一个目的是把多重性从n降为1或0..1,这样如果做查询操作,则返回的对象最多是一个,而不是集合
(7)关联的种类
派生属性与派生关联概念识别应用
是指可以从其他属性和关联计算推演得到的属性和关联。
使用他们是为了增强类图的性能,方便于在复杂的类图中寻找所需信息。
表示:加上“/”
在生成代码时,派生属性和派生关联不产生代码
边界类、控制类、实体类的定义和图形表示。
边界类
系统与外界交互的类,如窗体、对话框、报表、表示通讯协议的类。
边界类是系统内对象与系统外参与者的联系媒介。
图形表示:
通过用例图可以确定边界类
每个actor/use case对至少要有一个边界类,但并非每个actor/use case对都要生成唯一边界类,例如多个actor启动同一个use case时,可以用同一个边界类与系统通信。
实体类
定义:实体类保存要放进持久存储体的信息。是问题域中的核心类,从客观世界的实体对象抽象出来的。
控制类
用于协调边界类和实体类之间的交互。
其他类并不向控制类发送很多消息,而是由控制类发出很多消息。
类图和对象图的区别
类图的绘制,(类定义,属性,操作,关系的应用)
状态图和活动图
状态图标包含两部分内容名称+内部转移(入口动作、出口动作、内部转移)
状态图标一般分为两个部分:
- 名称
- 内部转移
- 入口动作
- 出口动作
- 内部转移
状态图的初态与终态
初态:
- 初态标志出对象的创建状态,它是一个伪状态,因为它不具备真实状态所具有的特征,但它使得状态图更加清晰
初始状态代表状态图的起始位置,只能作为转换的源,而不能作为转换的目标。
初始状态在一个状态图中只允许有一个。
终态:
- 表示对象生命周期的终点。在该点对象的状态不再发生迁移。
终止状态是模型元素的最后状态,是一个状态图的终止点。
终止状态只能作为转换的目标,而不能作为转换的源。
终止状态在一个状态图中可以有多个。
一个状态图只能有一个初态,但可以有多个终态或没有终态.
状态图的绘制
建模步骤:
- 找出适合用模型描述其行为的类。
确定对象可能存在的状态。
确定引起状态转换的事件。
确定转换进行时对象执行的相应动作。
对建模的结果进行相应的精化和细化。
活动图的转换不需要特定事件的激发,一个动作状态执行完后自动转换到另外一个状态。
理解泳道的概念。
泳道将活动图中的活动化分为若干组,并把每一组指定给负责这组活动的业务组织,通常为对象。
泳道区分了负责活动的对象,明确地表示了哪些活动是由哪些对象进行的。
每个活动只能明确地属于一个泳道。
泳道用垂直实线绘出,垂直线分隔的区域就是泳道。在泳道上方可以给出泳道的名字或对象(对象类)的名字,该对象(对象类)负责泳道内的全部活动。
泳道没有顺序,不同泳道中的活动既可以顺序进行也可以并发进行,动作流和对象流允许穿越分隔线。
活动图的作用。
活动图的作用:
- 对系统工作流程建模
- 工作流:是一个良好定义的动作序列,执行时将产生一个可观察的值,或者产生一个个体或实体的对象。
- 对算法流程建模
- 描述算法的每一个步骤
活动图用于描述系统的工作流程和并发行为。
活动图用于简化描述一个过程或操作的工作步骤。例如,对软件开发过程建模;对求Fibnacci数列的操作进行建模。
活动图可看作状态图的特殊形式。一个活动结束后立即进入下一个活动而不需要事件触发活动的转移。
活动图的绘制
构件图、部署图(不考画图)
构件是系统中遵从一组接口并提供其实现的物理的、可替换的部分,是定义了良好接口的软件模块,如源代码、二进制代码、可执行文件以及动态连接库等。
构件类型理解并能进行判断(部署构架、工作产品构件、执行构件)
部署构件
DLL文件、exe文件、COM+文件、CORBA对象、EJB、动态Web页、数据库表.
工作产品构件
源代码文件、数据文件
执行构件
系统执行后得到的构件