




已阅读5页,还剩224页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
江苏大学计算机工程系 面向对象技术 第3讲 类与对象关系建模 面 向 对 象 技 术 内容提要 概念数据建模概述 类图与对象图 类的确定 类间关系确定 建模方法与实例 面 向 对 象 技 术 概念数据建模概述 在完成用例建模之后,便可以进行其他系 统分析活动,而概念数据建模是最重要的 分析活动之一。 概念数据建模是对组织数据的描绘,它以 一种独立于实现的方式说明了数据的结构 和数据之间的相互关系,为后续的分析设 计提供了基础。 面 向 对 象 技 术 概念数据建模概述 概念数据建模的过程 面 向 对 象 技 术 概念数据建模概述 概念数据建模在系统分析中的作用 面 向 对 象 技 术 概念数据建模概述 如何进行概念数据建模? n必须包括以数据为中心的问题和调查,而不是 以过程、逻辑或用户界面为中心,从对业务性 质的透彻理解导出数据模型,也可以通过审查 系统内部处理的特定业务文档计算机显示 、报表和业务表单来收集。 n开发准确而完整的数据模型要考虑的问题 w类:业务的主题/客体是什么?什么类型的人、地点 、事物和材料被用于这个业务或者和这个业务交互 ?每个对象可能存在多少实例? 面 向 对 象 技 术 概念数据建模概述 如何进行概念数据建模? n开发准确而完整的数据模型要考虑的问题(续) w属性:需要维护关于对象的什么数据?什么特征描述各个对象 ?对象在什么基础上被引用、选择、限定、整理和分类?对象 的一个特性能有多少个值?对给定的一个对象,特性是必须的 还是可选的? w标识符:什么独有特性区分相同类型的各个对象?这个区别特 性是随着时间变化还是持久的?即使在我们知道一个对象存在 的时候,该对象的这个特性可以缺少吗?对象可以通过一个数 字序列标识吗? w关联、聚合和组合:对象之间存在什么关系?一个关系是部分 整体的那种吗?如果是,一个对象可以在没有另一个时存在吗 ?一个关系中涉及了多个对象吗?关系是同类对象之间的吗? 参与一个关系的对象的基数是什么? 面 向 对 象 技 术 概念数据建模概述 如何进行概念数据建模? n开发准确而完整的数据模型要考虑的问题(续 ) w泛化:一个对象是“一种”或另一个对象的“一种”吗 ?对象形成一个比较一般到比较特殊的层次吗? 面 向 对 象 技 术 概念数据建模概述 Mark咖啡机控制软件设计 n加热器,开关 n保温盘,开关 n保温盘传感器 n加热传感器 n冲煮按钮 n减压阀门 面 向 对 象 技 术 概念数据建模概述 Mark咖啡机控制软件设计 n基本接口 namespace CoffeeMaker public enum WarmerPlateStatus /保温盘 WARMER_EMPTY,POT_EMPTY,POT_NOT_EMPTY public enum BoilerStatus /加热器 EMPTY,NOT_EMPTY public enum BrewButtonStatus /冲煮按钮 PUSHED,NOT_PUSHED public enum WarmerState /保温 ON,OFF public enum IndicatorState /指示灯 ON,OFF public enum ReliefValveState /减压阀 OPEN,CLOSED 面 向 对 象 技 术 概念数据建模概述 Mark咖啡机控制软件设计 n基本接口 namespace CoffeeMaker public interface CoffeeMakerAPI WarmerPlateStatus GetWarmerPlateStatus(); BoilerStatus GetBoilerStatus(); BrewButtonStatus GetBrewButtonStatus(); void SetBoilerState(BoilerState s); void SetWarmerState(WarmerState s); void SetIndicatorState(IndicatorState s); void SetReliefValvelState(ReliefValvelState s); 面 向 对 象 技 术 概念数据建模概述 Mark咖啡机控制软件设计 n类设计 面 向 对 象 技 术 概念数据建模概述 Mark咖啡机控制软件设计 n存在问题 w如何实现这些类,只是一个函数调用的转换器,水蒸气类 public class Light public void On() CoffeeMaker.api.SetIndicatorState(IndicatorState.ON); public void Off() CoffeeMaker.api.SetIndicatorState(IndicatorState.OFF); 面 向 对 象 技 术 概念数据建模概述 Mark咖啡机控制软件设计 n存在问题 w虚构的抽象 public interface Heater void TurnOn(); void TurnOff(); public interface Sensor int Sensor(); 面 向 对 象 技 术 概念数据建模概述 Mark咖啡机控制软件设计 n如何改进:根据功能抽象 面 向 对 象 技 术 概念数据建模概述 Mark咖啡机控制软件设计 n如何改进:追加用户界面 面 向 对 象 技 术 类图的概念 对象是指与应用问题有一定关联的某个事 物,或者说是对某个事物的抽象描述。 类是对一类具有相同特性的对象的描述, 或者说是类属事物或系统的表示形式。类 可以具有状态(通过使用自己的特性数据 来描述),并且可以提供功能(通过使用 其操作或方法来表示) 面 向 对 象 技 术 类图的概念 类图描述类、接口、协作及它们之间关系 的图。 类图显示系统中各个类的静态结构。 面 向 对 象 技 术 类图的概念 类图中的图示元素: n类(Class) n接口(Interface) n协作(Collaboration) n依赖关系(Dependency) n泛化关系(Generalization) n关联关系(Association) n实现关系(Realization) 面 向 对 象 技 术 类 面向对象系统组织结构的核心。 对一组具有相同属性、操作、关系和语义 的对象的抽象。 包括名称部分、属性部分和操作部分。 面 向 对 象 技 术 类 Dialer类 Public class Dialer private string digits; private int nDigits; public void Digit(int n); protected bool RecordDigit(int n); 面 向 对 象 技 术 类 类的名称 n应该来自系统的问题域。 n应该是一个名词,且不应该有前缀或后缀。 n分为简单名称和路径名称。 面 向 对 象 技 术 类 属性 n描述了类在软件系统中代表的事物(即对象) 所具备的特性。 n类可以有任意数目的属性,也可以没有属性。 n在UML中,类属性的语法为: 可见性 属性名 :类型 =初始值 属 性字符串 面 向 对 象 技 术 类 属性 n可见性 w公有(Public) “” w私有(Private)“” w受保护(Protected)“” 面 向 对 象 技 术 类 属性 n属性名 w每个属性都必须有一个名字以区别于类中的其他属 性。 w属性名由描述所属类的特性的名词或名词短语组成 。 w单字属性名小写,如果属性名包含了多个单词,这 些单词要合并,且除了第一个单词外其余单词的首 字母要大写。 面 向 对 象 技 术 类 属性 n类型 w简单类型: n整型 n布尔型 n实型 n枚举类型 w系统中的其他类 面 向 对 象 技 术 类 属性 n初始值 w目的: n保护系统的完整性,防止漏掉取值或被非法的值破坏系统 的完整性。 n为用户提供易用性。 面 向 对 象 技 术 类 属性 n属性字符串 w指定关于属性的其他信息,往往是约束条件。 w任何希望添加在属性定义字符串值但又没有合适地 方可以加入的规则,都可以放在属性字符串里。 n实例 Name:string readonly 面 向 对 象 技 术 类 操作 n对类的对象所能做的事务的抽象。 n一个类可以有任意数量的操作或者根本没有操 作。 n返回类型、名称和参数一起被称为操作签名。 n在UML中,类操作的语法为: 可见性 操作名 (参数表) :返回类型 属性字符串 面 向 对 象 技 术 类 操作 n可见性 w公有(Public) “” w私有(Private) “” w受保护(Protected) “” w包内公有(Package) “” 面 向 对 象 技 术 类 操作 n操作名 w用来描述所属类的行为的动词或动词短语。 w单字操作名小写,如果操作名包含了多个单词,这 些单词要合并,并且除了第一个单词外其余单词的 首字母要大写。 面 向 对 象 技 术 类 操作 n参数表 w一些按顺序排列的属性定义了操作的输入。 w是可选的,即操作不一定必须有参数才行。 w定义方式:“方向 名称:类型默认值”。 w若存在多个参数,将各个参数用逗号隔开。 w参数可以具有默认值。 面 向 对 象 技 术 类 操作 n返回类型 w是可选的,即操作不一定必须有返回类型。 w绝大部分编程语言只支持一个返回值。 w具体的编程语言一般要加一个关键字void来表示无 返回值。 面 向 对 象 技 术 类 操作 n属性字符串 w在操作的定义中加入一些除了预定义元素之外的信 息。 w往往也是定义约束 面 向 对 象 技 术 类 职责 n类或其他元素的契约或义务。 n以自由形式的文本形式存在,即非形式化的方 法来描述。 职责内容 面 向 对 象 技 术 类 约束 n指定了类所要满足的一个或多个规则。 n形式化的方法。 面 向 对 象 技 术 类 注释 n注释可以包含图形也可以包含文本。 面 向 对 象 技 术 类 范例 面 向 对 象 技 术 接口与抽象类 接口 n在没有给出对象的实现和状态的情况下对对象 行为的描述。 n包含操作但不包含属性。 n一个类可以实现一个或多个接口。 面 向 对 象 技 术 接口与抽象类 接口类: 面 向 对 象 技 术 接口与抽象类 抽象类 n是一种不能够被直接实例化的类,也就是说不能够创 建一个属于抽象类的对象 面 向 对 象 技 术 接口与抽象类 抽象类 n实例 面 向 对 象 技 术 类之间的关系 依赖关系 泛化关系 关联关系 实现关系 面 向 对 象 技 术 类之间的关系 依赖关系 n表示两个或多个模型元素之间语义上的关系。 n客户以某种形式依赖于提供者。 n关联、实现和泛化都是依赖关系。 面 向 对 象 技 术 类之间的关系 依赖关系 n如果两个类的对象之间存在着下面的情形,且两个类 之间不存在结构方面的联系(例如:供应类以成员变 量的形式作为客户类的一部分),就可以建模成为具 有依赖关系,这些情形是: (1)客户类访问定义在供应类内部的值(常量或 变量)。 (2)客户类的操作启动了定义在供应类内的操作。 (3)客户类的返回类或参数是供应类的实例。 n序列图中的两个对象,如果存在着消息的发送。且它 们之间又没有结构方面的连接,就可以在类图上用依 赖关系对它们建模。 面 向 对 象 技 术 类之间的关系 泛化关系 n存在于一般元素和特殊元素间的分类关系。 n可以用于类、用例以及其他模型元素。 n描述了一种“is a kind of” 的关系。 面 向 对 象 技 术 类之间的关系 泛化关系 n范例 public class Employee public class SalariedEmployee: Employee 面 向 对 象 技 术 类之间的关系 泛化关系 n泛化主要用途: w多态 :后代的实例可以用于任何祖先被声明使用的 地方,从而使多态操作成为可能,即操作的实现方 法由实际对象的类来确定 w继承 :共享祖先描述,并允许对元素进行增量描述 n单继承 n多重继承 面 向 对 象 技 术 类之间的关系 泛化关系 n泛化主要用途: 面 向 对 象 技 术 类之间的关系 泛化关系 n泛化主要用途: 面 向 对 象 技 术 类之间的关系 泛化关系 n泛化主要用途: 基类 Shape origin move() resize() display() Rectangle corner : Point Circle radius : Float Polygon points : List display() Square 泛化关系 叶子类 面 向 对 象 技 术 类之间的关系 关联关系 n一种结构关系。 n指明事物的对象之间的联系。 n最普通的关联是二元关联。 面 向 对 象 技 术 类之间的关系 关联关系 n范例 public class phone private Button itsButtons15 面 向 对 象 技 术 类之间的关系 关联关系 n关联关系并不是仅仅一个抽象的概念,它在实 现为程序设计语言源代码时,会有对应的映射 。 n通常,当把两个有关联关系的类映射为特定的 程序设计语言代码时,每一个类都会被定义为 一个可以引用对方的类的对象的成员变量,这 个成员变量视对关联关系的修饰的不同,可能 会采取不同的形式,如:它可以指向对方的类 的指针,也可能是对方类的对象。 面 向 对 象 技 术 类之间的关系 关联关系 面 向 对 象 技 术 类之间的关系 关联关系 n名称(Name) n角色(Role) n多重性(Multiplicity) n聚合关系(Aggregation) n组合关系(Composition) n导航性(Navigation) 面 向 对 象 技 术 类之间的关系 关联关系 n名称(Name) w使用一个动词或动词短语来命名关联。 w清晰而简洁地说明对象间关系。 w关联的名称并不是必需的。 w可以前缀或后缀一个指引阅读方向的方向指示符, 以消除歧义。 面 向 对 象 技 术 类之间的关系 关联关系 n角色(Role) w关联关系中一个类对另一个类所表现出来的职责。 w角色的名称应该是名词或名词短语,以解释对象是 如何参与关系的。 面 向 对 象 技 术 类之间的关系 关联关系 n多重性(Multiplicity) w指有多少对象可以参与该关联。 w可以表达一个取值范围、特定值、无限定的范围或 一组离散值。 w格式:“minimummaximum” (均为Int型)。 w赋给一个端点的多重性表示该端点可以有多少个对 象与另一个端点的一个对象关联。 面 向 对 象 技 术 类之间的关系 关联关系 n聚合关系(Aggregation) w一种特殊类型的关联。 w表示整体与部分关系的关联。 w描述了“has a”的关系。 面 向 对 象 技 术 类之间的关系 关联关系 n组合关系(Composition) w聚合关系中的一种特殊情况,是更强形式的聚合, 又称强聚合。 w成员对象的生命周期取决于聚合的生命周期。 w聚合不仅控制着成员对象的行为,而且控制着成员 对象的创建和解构。 面 向 对 象 技 术 类之间的关系 关联关系 n导航性(Navigation) w描述一个对象通过链进行导航访问另一个对象。 w使用导航性可以降低类间的耦合度。 w包括:单向关联和双向关联。 面 向 对 象 技 术 类之间的关系 关联关系 面 向 对 象 技 术 类之间的关系 关联关系 inventory partproduct 0* 11 0* flywheel cog afterburner sticker manufacture repair assembler repairman FCC inventoryclerk 2*1 13 1 mBox Disp error 面 向 对 象 技 术 时序图 范例1 n添加消息和条件(流程3) Web interface teacher Database wrapper Stu infoStu grades Req stu info Get stu data Load stu Return stu info failure mBox Disp error Load grades No grades found for stu 面 向 对 象 技 术 时序图 范例2 面 向 对 象 技 术 时序图 范例3 n系统管理员添加书籍的时序图 面 向 对 象 技 术 时序图 范例3 n图书管理员处理借书的时序图 (不包括预留书籍的情况) 面 向 对 象 技 术 时序图 范例3 n系统管理员删除书目的时序图 面 向 对 象 技 术 时序图 范例3 n借阅者预留书籍的时序图 面 向 对 象 技 术 时序图 范例4 n分析Select Course用例中的对象、角色之间 交互的消息。主要有以下交互: (1)学生通过界面发送选课命令。 (2)界面向控制对象请求课程信息。 (3)控制对象向数据库发送查询数据消息。 (4)控制对象暂存数据库的查询结果。 (5)界面对象从控制对象中取得所有的课程信息。 (6)在界面上显示所有的课程信息。 面 向 对 象 技 术 时序图 范例4 n分析Select Course用例中的对象、角色之间 交互的消息。主要有以下交互: (7)界面对象发送命令要求控制对象删除课程信息 。 (8)学生选择课程。 (9)界面对象要求学生输入学号。 (10)界面对象向控制对象发送信息,查询该生是 否可以选择选定的课程。 (11)控制对象从数据库中查询关联信息。 (12)控制对象判断是否可以选课。 (13)如果可以选课,则向数据库中添加关联信息 。 (14)向界面对象返回信息。 面 向 对 象 技 术 时序图 范例4 面 向 对 象 技 术 协作图 概念 n协作图描述的是和对象结构相关的信息。 n协作图的用途是表示一个类操作的实现。 n协作图对交互中有意义的对象和对象之间的链 建模。 n在UML中,协作图用几何排列来表示交互作用 中的对象和链,附在链的箭头代表消息,消息 的发生顺序用消息箭头处的编号来说明。 面 向 对 象 技 术 协作图 概念 面 向 对 象 技 术 协作图 协作图包含了3个元素: n对象(Object) n链(Link) n消息(Message) 面 向 对 象 技 术 协作图 对象(Object) n协作图与时序图中的对象的概念是一样,只不 过在协作图中,无法表示对象的创建和撤销, 所以对于对象在图中的位置没有限制。 面 向 对 象 技 术 协作图 链(Link) n协作图中链的符号和对象图中链所用的符号是 一样的,即一条连接两个类角色的实线。 n为了说明一个对象如何与另一个对象连接,可 以在链的末路上附上一个路径构造型。 面 向 对 象 技 术 协作图 消息(Message) n协作图中的消息类型与时序图中的相同,只不 过为了说明交互过程中消息的时间顺序,需要 给消息添加顺序号。 n顺序号是消息的一个数字前缀,是一个整数, 由1开始递增,每个消息都必须由唯一的顺序 号。可以通过点表示法代表控制的嵌套关系。 n嵌套可以具有任意深度。与时序图相比,协作 图可以显示更为复杂的分支。 面 向 对 象 技 术 协作图 关联角色 :是一种协作角色,用来说明协作 图中两个分类器角色之间的关系。它由两 个类角色元素之间的路径表示,并且可以 包括带下划线的相应关联的名称。在协作 图上下文中,关联角色通常指链接。 面 向 对 象 技 术 协作图 时序图与协作图的互换 n时序图与协作图都表示对象之间的交互作用, 只是它们的侧重点有所不同: w时序图描述了交互过程中的时间顺序,但没有明确 地表达对象之间的关系。 w协作图描述了对象之间的关系,但时间顺序必须从 顺序号获得。 n两种图的语义是等价的,可以从一种形式的图 转换成另一种形式的图,而不丢失任何信息。 例如rose中就提供了直接由时序图生成协作图 的功能。 面 向 对 象 技 术 协作图 协作图建模技术 n设置交互的语境。 n通过识别对象在交互中扮演的角色,设置交互的场景 。 n对每个对象设置初始特性。 n描述对象之间可能有信息沿着它传递的链。 n从引起交互的消息开始,适当地设置其顺序号,然后 将随后的每个消息附到适当的链上。 n如果需要说明时间或空间约束,可以用时间标记修饰 这个消息,并附上合适的时间和空间约束。 n如果需要更形式化地说明这个控制流,可以为每个消 息附上前置和后置条件。 面 向 对 象 技 术 协作图 绘制协作图的步骤 n创建协作图 n协作图工具栏按钮简介 n添加对象 n添加消息 n添加数据流 面 向 对 象 技 术 协作图 范例1 n系统管理员添加书籍的协作图 面 向 对 象 技 术 协作图 范例1 n图书管理员处理借书的协作图 面 向 对 象 技 术 协作图 范例1 n图书管理员处理还书的协作图 面 向 对 象 技 术 协作图 范例1 n系统管理员删除书籍的协作图 面 向 对 象 技 术 协作图 范例1 n借阅者预留书籍的协作图 面 向 对 象 技 术 协作图 范例2 nSelect Course用例对象之间的交互包括: w学生通过界面发送选课命令; w界面向控制对象请求课程信息; w控制对象向数据库发送查询数据消息; w控制对象暂存数据库的查询结果; w界面对象从控制对象中取得所有的课程信息; w在界面上显示所有的课程信息; w界面对象发送命令要求控制对象删除课程信息; 面 向 对 象 技 术 协作图 范例2 nSelect Course用例对象之间的交互包括: w学生选择课程; w界面对象要求学生输入学号; w界面对象向控制对象发送信息,查询该生是否可以 选择选定的课程; w 控制对象从数据库中查询关联信息; w 控制对象判断是否可以选课; w 如果可以选课,则向数据库中添加关联信息; w 向界面对象返回信息。 面 向 对 象 技 术 协作图 范例2 面 向 对 象 技 术 交互图 面向对象分析步骤 用例建模概念建模交互建模分析类建模 面 向 对 象 技 术 交互图 顺序图绘制注意事项 n参与者只能与边界对象通信 n边界对象只能与控制器和参与者通信 n实体对象只能与控制器通信 n控制器可以与边界对象和实体对象通信,但不 能与参与者通信,控制器还可以与其他控制器 通信。 面 向 对 象 技 术 类图作业 单人骰子游戏 n游戏者通过系统可以进行骰子游戏,即先后掷 两个骰子,如果点数之和大于7则游戏者胜。 n游戏者可以查询从游戏开始到当前自己胜的次 数,输的次数。 n画出用例图、概念类图、时序图、类图、以及 用代码实现。 面 向 对 象 技 术 类图作业 单人骰子游戏 面 向 对 象 技 术 类图作业 单人骰子游戏 面 向 对 象 技 术 类图作业 单人骰子游戏 面 向 对 象 技 术 状态图 状态机概念 n状态机是展示状态与状态转换的图。 n状态机包含了一个类的对象在其生命期间所有 状态的序列以及对象对接受到的事件所产生的 反应。 n利用状态机可以精确地描述对象的行为。 面 向 对 象 技 术 状态图 状态图概念 n一个状态图表示一个状态机。 n状态图表现从一个状态到另一个状态的控制流 。 n状态图由表示状态的节点和表示状态之间转换 的带箭头的直线组成。 面 向 对 象 技 术 状态图 状态图组成: n状态(State) n转换(Transition) n初始状态(Start State) n终结状态(End State) n判定(Decision) 面 向 对 象 技 术 状态图 范例 面 向 对 象 技 术 状态图 状态 n状态图中的状态一般是给定类对象中的一组属 性值,这组属性值是对象所有属性的子集。 n在对系统建模时,我们可以只关心那些明显影 响对象行为的属性以及由他们表达的对象状态 ,而不用理睬那些于对象行为无关的状态。 面 向 对 象 技 术 状态图 状态 n状态种类: w简单状态(Simple State) w组成状态(Composite State) n状态组成: w状态名(Name) w活动(Activity) w入口动作(Entry Action) w出口动作(Exit Action 面 向 对 象 技 术 状态图 状态 n状态由一个带圆角的矩形表示。 n状态图标可以分为三部分: w名称 w内部转换 w嵌套状态 面 向 对 象 技 术 状态图 状态 n状态名 w状态名表示状态的名字,通常用字符串表示。 w一个状态的名称在状态图所在的上下文中应该是唯 一的。不过,状态允许匿名。 w状态的名字通常放在状态图标的顶部 面 向 对 象 技 术 状态图 状态 n内部转换 w内部转换只有一个源状态而没有目标状态,因此转 换激发的结果并不改变状态本身。 w如果一个内部转换带有动作,动作也要被执行,但 是由于没有状态改变发生,因此不需要执行入口和 出口动作。 w内部转换和自转换不同,虽然两者都不改变状态本 身,但是自转换会激发入口动作和出口动作的执行 ,而内部转换却不会。 面 向 对 象 技 术 状态图 状态 n入口动作与出口动作 w入口动作和出口动作表示进入或退出这个状态所要 执行的动作。 w入口动作用“entry/要执行的动作”表达,而出口动 作用“exit/要执行的动作”表达 面 向 对 象 技 术 状态图 状态 n简单状态 w简单状态是指不包含其他状态的状态。 w简单状态没有子结构,但它可以具有内部转换、入 口动作和出口动作等。 面 向 对 象 技 术 状态图 状态 n组成状态 w组成状态是可以包含一些嵌套的子状态的状态。 w组成状态可以使用“与”关系分解为并发子状态,或 者通过“或”关系分解为互相排斥的顺序子状态。 w组成状态的一个入转换代表对其嵌套子状态区域内 的初始状态的入转换;对嵌套子状态区域内的终结 状态的转换代表包含它的终止状态的相应活动的完 成。 面 向 对 象 技 术 状态图 初始状态 n初始状态代表状态图的起始位置,只能作为转 换的源,而不能作为转换的目标。 n初始状态在一个状态图中只允许有一个,它用 一个实心的圆表示。 面 向 对 象 技 术 状态图 终止状态 n终止状态是模型元素的最后状态,是一个状态 图的终止点。 n终止状态只能作为转换的目标,而不能作为转 换的源。 n终止状态在一个状态图中可以有多个,它用一 个套有一个实心圆的空心圆表示。 面 向 对 象 技 术 状态图 事件 n事件表示在某一特定的时间或空间出现的能够 引发状态改变的一种运动变化。 n事件是一个激励的出现,它定义一个触发子以 触发对象改变其状态,任何影响对象的事物都 可以是事件。 面 向 对 象 技 术 状态图 事件 n事件种类: w入口事件 n入口事件表示一个入口的动作序列,它在进入状态时执行 。 n入口事件的动作是原子的,并且先于人和内部活动或转换 。 面 向 对 象 技 术 状态图 事件 n事件种类: w出口事件 n出口事件表示一个出口的动作序列,它在退出状态时执行 。 n出口事件也是原子的,它跟在所有的内部活动之后,但是 先于所有的出口转换。 面 向 对 象 技 术 状态图 事件 n事件种类: w动作事件 n动作事件也称为“do事件”,它表示对一个嵌套状态机的调 用。 n与动作事件相关的活动必定引用嵌套状态机,而非引用包 含它的对象的操作。 面 向 对 象 技 术 状态图 转换 n转换表示当一个特定事件发生或者某些条件得 到满足时,一个源状态下的对象在完成一定的 动作后将发生状态转变,转向另一个称之为目 标状态的状态。 n转换进入的状态为活动状态,转换离开的状态 变为非活动状态。 面 向 对 象 技 术 状态图 转换 n转换用带箭头的直线表示,一端连接源状态即 转出的状态,箭头一端连接目标状态即转入的 状态。 n转换可以标注与此转换相关的选项如事件、动 作和监护条件。 面 向 对 象 技 术 状态图 触发事件 n触发事件是能够引起状态转换的事件。 n触发事件可以是信号、调用、时间段等。 面 向 对 象 技 术 状态图 监护条件 n监护条件是触发转换必须满足的条件,它是一 个布尔表达式。 n监护条件只能在触发事件发生时被赋值一次, 如果在转换发生后监护条件才由假变为真,那 么转换也不会被触发。 n从一个状态引出的多个转换可以有同样的触发 器事件,但是每个转换必须具有不同的监护条 件。 面 向 对 象 技 术 状态图 动作 n动作是一组可执行语句或者计算处理过程。 n动作可以包括发送消息给另一个对象、操作调 用、设置返回值、创建和销毁对象等。 n动作是原子的,不可中断的,动作或动作序列 的执行不会被同时发生的其他动作影响或终止 。 n整个系统可以在同一时间执行多个动作。 面 向 对 象 技 术 状态图 判定 n判定在状态图中的位置:工作流在此处按监护 条件的取值而发生分支。 n判定用空心小菱形表示。 面 向 对 象 技 术 状态图 判定 n因为监护条件为布尔表达式,所以通常条件下 的判定只有一个入转换和两个出转换。 n根据监护条件的真假可以触发不同的分支转换 。 面 向 对 象 技 术 状态图 状态图建模技术 n建模步骤: w找出适合用模型描述其行为的类。 w确定对象可能存在的状态。 w确定引起状态转换的事件。 w确定转换进行时对象执行的相应动作。 w对建模的结果进行相应的精化和细化。 面 向 对 象 技 术 状态图 课程对象的状态变化过程实例 面 向 对 象 技 术 状态图 图书状态实例(带嵌套) 已借出 过期则发通知 购置书 弃置书 借出书 还书 普通书 新书 在新书架展示 放进普通书架 过两周后 登记书 面 向 对 象 技 术 状态图 书的状态图 面 向 对 象 技 术 状态图 借阅凭证的状态图 面 向 对 象 技 术 状态图 范例 n寻找主要状态:对于航班机票预订系统而言, 显然包括的状态主要有 - 在刚确定飞机计划时,显然是没有任何预 订的,并且在有人预订机票之前都将处于这种 “无预订”状态 - 对订座而言显然有“部分预订”和“预订完” 两种状态 - 而当航班快要起飞时,显然要“预订关闭” 总结一下,主要有四种状态:无预订、部分预 订、预订完以及预订关闭 面 向 对 象 技 术 状态图 范例 n确定状态间转换 面 向 对 象 技 术 状态图 范例 n细化状态内的活动与转换 面 向 对 象 技 术 状态图 范例 n使用复合状态 面 向 对 象 技 术 状态图 状态图的实现 面 向 对 象 技 术 状态图 状态图的实现 面 向 对 象 技 术 状态图 状态图的实现 源态态目标态标态事件监护监护过过程 waitlockCandle removedDoor closedReveal lock lockopenKey turnedCandle inOpen safe lockfinalKey turnedCandle outRelease killer rabbit openwaitSafe closed 面 向 对 象 技 术 状态图 在画状态图时要考虑的主要因素 n对象有哪些有意义的状态 n如何决定对象可能状态 n对象的状态图和其他模型之间如何进行映射 n系统设计中,并不需要给每个对象画出状态图 ,只要把注意力集中在整个系统或主要对象上 。 面 向 对 象 技 术 活动图 概述 n活动是某件事情正在进行的状态。 n活动在状态机中表现为一个由一系列动作组成 的非原子的执行过程。 n活动图是一种描述系统行为的图,它用于展现 参与行为的类所进行的各种活动的顺序关系。 n活动图与状态图都是状态机的表现形式。 面 向 对 象 技 术 活动图 建模活动图原因 n进一步规划用例 n表示用例的前后条件 n发现新用例 面 向 对 象 技 术 活动图 活动图的图形表示 n在UML中,活动表示成圆角矩形。 n如果一个活动引发下一个活动,两个活动的图 标之间用带箭头的直线连接。 n活动图也有起点和终点,表示法和状态图中相 同。 n活动图中还包括分支与合并、分叉与汇合等模 型元素。分支与合并的图标和状态图中的判定 的图标相同,而分叉与汇合则用一条加粗的线 段表示。 面 向 对 象 技 术 活动图 活动图的图形表示 面 向 对 象 技 术 活动图 活动图的图形表示 面 向 对 象 技 术 活动图 活动图与流程图的区别 n流程图着重描述处理过程,它的主要控制结构 是顺序、分支和循环,各个处理之间有严格的 顺序和时间关系; n而活动图描述的则是对象活动的顺序关系所遵 循的规则,它着重表现的是系统的行为,而非 系统的处理过程。 n活动图能够表示并发活动的情形,而流程图做 不到。 n活动图是面向对象的,而流程图是面向过程的 。 面 向 对 象 技 术 活动图 组成UML的图形元素: n动作状态(Action State) n活动状态(Activity State) n动作流(Action Flow) n分支(Branch)与合并(Merge) n分叉(Fork)与汇合(Join) n泳道(Swimlane) n对象流(Object Flow) 面 向 对 象 技 术 活动图 动作状态 n动作状态是指执行原子的、不可中断的动作, 并在此动作完成后通过完成转换转向另一个状 态的状态。 n动作状态使用平滑的圆角矩形表示,动作状态 所表示的动作写在圆角矩形内部。 面 向 对 象 技 术 活动图 动作状态的特点: n动作状态是原子的,它是构造活动图的最小单位,已 经无法分解为更小的部分。 n动作状态是不可中断的状态,它一旦开始运行就不能 中断,一直运行到结束。 n动作状态是瞬时的行为,它所占用的处理事件极短, 有时甚至可以忽略。 n动作状态可以有入转换,入转换既可以是动作流,也 可以是对象流。动作状态至少有一条出转换,这条转 换以内部动作的完成为起点,与外部事件无关。 n动作状态和状态图中的状态不同,它不能有入口动作 和出口动作,更不能有内部转移。 n在一张活动图中,动作状态允许多处出现。 面 向 对 象 技 术 活动图 活动状态 n活动状态用于表达状态机中的一个非原子的运 行。 n活动状态的表示图标也是平滑的圆角矩形,并 可以在图标中给出入口动作和出口动作等信息 。 面 向 对 象 技 术 活动图 活动状态的特点: n活动状态可以分解成其他子活动或动作状态, 由于它是一组不可中断的动作或操作的组合, 所以可以被中断。 n活动状态的内部活动可以用另一个活动图来表 示。 n和动作状态不同,活动状态可以有入口动作和 出口动作,也可以有内部转移。 n动作状态是活动状态的一个特例,如果某个活 动状态只包括一个动作,那么它就是一个动作 状态。 面 向 对 象 技 术 活动图 动作流 n所有动作状态之间的转换流称之为动作流。 n与状态图的转换相同,活动图的转换也用带箭 头的直线表示,箭头的方向指向转入的方向。 面 向 对 象 技 术 活动图 范例 Record Grades teacher Select student Ready to record grades Grades recorded Save greadesEnter grades 面 向 对 象 技 术 活动图 分支与合并 n分支一般用于表示对象类所具有的条件行为。 n条件行为用分支和合并表达。 n在活动图中分支与合并用空心小菱形表示。 n一个分支有一个入转换和两个带条件的出转换 ,出转换的条件应当是互斥的,这样可以保证 只有一条出转换能够被触发。 n一个合并有两个带条件的入转换和一个出转换 ,合并表示从对应的分支开始的条件行为的结 束。 面 向 对 象 技 术 活动图 分支与合并 面 向 对 象 技 术 活动图 分叉与汇合 n分叉用于将动作流分为两个或者多个并发运行的分支 ,而汇合则用于同步这些并发分支,以达到共同完成 一项事务的目的。 n分叉可以用来描述并发线程,每个分叉可以有一个输 入转换和两个或多个输出转换,每个转换都可以是独 立的控制流。 n汇合代表两个或多个并发控制流同步发生,当所有的 控制流都达到汇合点后,控制才能继续往下进行。每 个汇合可以有两个或多个输入转换和一个输出转换。 n分叉和汇合都使用加粗的水平线段表示。 面 向 对 象 技 术 活动图 分叉与汇合 面 向 对 象 技 术 活动图 泳道 n泳道将活动图中的活动化分为若干组,并把每一组指 定给负责这组活动的业务组织即对象。 n泳道区分了负责活动的对象,明确地表示了哪些活动 是由哪些对象进行的。 n每个活动只能明确地属于一个泳道。 n泳道用垂直实线绘出,垂直线分隔的区域就是泳道。 在泳道上方可以给出泳道的名字或对象(对象类
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 污泥脱水机施工方案
- 无锡彩钢板厂房施工方案
- 第22课《寓言四则-蚊子和狮子》说课稿 统编版语文七年级上册
- 第四单元学习项目一 音乐中的“高难度”(一)说课稿 人教版(简谱)(2024)初中音乐七年级下册
- pvc-u直通施工方案
- 冰雪旅游发展项目合同
- 纯粹数学合同
- 5.1.2 等式的性质 说课稿 2024-2025学年人教版数学七年级上册
- 宠物美容合同
- 20.4 性别和性别决定说课稿-2024-2025学年北师大版生物八年级上册
- 2025贵州金控集团特需人才引进4人(第二批次)笔试历年参考题库附带答案详解
- 2026中国电建集团成都勘测设计研究院有限公司招聘笔试备考试题及答案解析
- 2025-2026学年高二物理上学期第一次月考卷(原卷及解析)【测试范围:第1~3章】(考试版A4)(广东专用)
- 2025年电工考试题库(内附答案)
- 朝鲜族朝鲜语考试题及答案
- 2025年成考专升本政治时政练习题及答案
- 人事培训专员培训课件
- 励志主题课件
- 2025年【电工证】模拟考试题及答案
- 教师竞聘报告模板
- 体育课急救知识
评论
0/150
提交评论