UML第8章定义属性与服务.ppt

上传人:sh****n 文档编号:8627581 上传时间:2020-03-30 格式:PPT 页数:62 大小:228KB
返回 下载 相关 举报
UML第8章定义属性与服务.ppt_第1页
第1页 / 共62页
UML第8章定义属性与服务.ppt_第2页
第2页 / 共62页
UML第8章定义属性与服务.ppt_第3页
第3页 / 共62页
点击查看更多>>
资源描述
第8章定义属性与服务 8 1对象的属性和服务8 2表示法8 3定义属性8 4定义服务8 5建立类图的特征层8 6电梯例子 本章将介绍如何通过分析和识别事物的内部特征来定义对象的属性和服务 并建立类图的特征层 8 1对象的属性和服务 早在面向对象方法刚刚起步时 N Wirth曾有一句名言 程序 算法 数据结构 面向对象程序设计的不同之处只是在于 以对象为基本单位来组织系统中的数据和操作 形成对问题域中事物的直接映射 属性的定义是 属性是描述对象静态特征的一个数据项 服务的定义是 服务是描述对象动态特征 行为 的一个操作序列 类属性的定义是 类属性是描述类的所有对象的共同特征的一个数据项 对于任何对象实例 它的属性值都是相同的 这样的属性对一个类的全部对象实例只是一份共同的数据空间 所以对任何对象而言 该属性的值总是相同的 主动服务是不需要接收消息就能主动执行的服务 它在程序实现中是一个主动的程序成分 被动服务是只有接收到消息才执行的服务 它在编程实现中是一个被动的程序成分 8 2表示法 服务的表示法 是在类符号的下部填写每个服务的名字 对于主动服务 须在服务名之前加一个标记 图8 1是属性和服务表示法示意图 图8 1 8 3定义属性 首先考虑借鉴以往的OOA结果 看看已开发的OOA模型中是否存在相同或相似的问题域 尽可能复用其中同类对象的属性定义 然后 研究当前的问题域和系统责任 针对本系统应该设置的每一类对象 按照问题的实际情况 以系统责任为目标进行正确的抽象 从而找出每一类对象应有的属性 8 3 1策略与启发 从常理判断这个对象应该具有哪些属性 根据当前问题域分析这个对象应该有哪些属性 从系统责任要求的角度分析这个对象应具有哪些属性 建立这个对象涉及到系统中所需的哪些信息 包括要保存和管理的信息 对象有哪些需要区别的状态 是否需增加一个属性来区别这些状态 对象为了在服务中实现其功能 需要增设哪些属性 表示整体 部分结构和实例连接需要用什么属性 8 3 2审查与筛选 这个属性是否体现了以系统责任为目标的抽象 这个属性是不是描述这个对象本身的特征 该属性是否破坏了对象特征的 原子性 这个属性是否可以通过继承得到 该属性是否可以从其他属性直接导出 8 3 3推迟到OOD考虑的问题 对象标识问题 对象标识是分配给每个对象的永久性标识 又称作 柄 它符合下述条件 1 在一定的范围或领域 例如一个应用系统 中是惟一的 2 与对象实例的特征 状态及分类 可能是动态的 无关 3 在对象存在期间保持一致 规范化问题 当找出了对象的属性之后 其中可能存在信息冗余 明显的信息冗余 可以在OOA阶段消除 不太明显的信息冗余则暂时不予考虑 性能问题 为了提高对象服务的执行速度 可以增加一些属性来保持服务的阶段性执行结果 但是执行速度是与机器有关的 所以这个问题也推迟到OOD时考虑 8 3 4属性的命名和定位 属性的命名原则 1 使用名词或带定语的名词 2 使用规范的 问题域通用的词汇 3 避免使用无意义的字符的数字 4 语言文字的选择与类的命名要一致 属性的定位 1 注意把属性放置到由它直接描述的那个对象的类符号中 2 在一般 特殊结构中通用的属性应放在上层类 专用的属性应放在下层类 3 一个类的属性必须适合这个类和它的全部特殊类的所有对象 并在此前提下充分地运用继承 8 3 5属性的详细说明 属性的说明属性的数据类型属性所体现的关系实现要求及其他 8 4定义服务 分析员通过分析对象的行为来发现和定义对象的每个服务 但对象的行为规则往往和对象所处的状态有关 8 4 1对象的状态与状态转换图 对象状态 1 对象或者类的所有属性的当前值 2 对象或者类的整体行为的某些规则所能适应的状况 情况 条件 形式或生存周期阶段 例8 1 通信控制系统中的传真机对象 为了分析 接收 和 发送 等服务的行为规则 应该注意的对象状态是传真机设备的关闭 就绪 开启并空闲 忙 故障等状态 为此可在其他属性之外专门定义一个 状态 属性 该属性有以上几种属性值 每一个属性值就是一种状态 例8 2 栈 对象 假如它的属性是100个存储单元和一个栈顶指针 服务是 压入 和 弹出 它有多少状态呢 经分析 只需认识三种状态 即空 指针值 0 满 指针值 100 半满 0 指针值 100 状态转换图 图8 2是 栈 对象的状态转换图 1 找出对象的各种状态 2 分析在不同的状态下 对象的行为规则有何不同 3 分析从一种状态可以转换到哪几种其他状态以及该对象的什么行为会引起这种转换 图8 2 8 4 2行为分类 系统行为对象自身的行为 算法简单的服务对象自身的行为 算法复杂的服务 8 4 3发现服务的策略与启发 考虑问题域考虑系统责任 分析对象的状态 1 对象从一种状态转换赋予另一种状态是由什么操作引起的 是否已经设立了相应的服务 2 在每一种状态下对象可以发生什么行为 应该由什么服务来描述 追踪服务的执行路线 在上述问题思考完毕后能够发现的服务都已发现 模拟每个服务的执行并追踪其执行路线 可以帮助分析员发现遗漏的服务 8 4 4审查与调整 检查每个服务在系统中是否真正需要检查每个服务是不是高内聚的 8 4 5认识对象的主动行为 考虑问题域考虑与系统边界以外的活动者直接进行交互的对象考虑系统功能的构成层次中完成最外层功能的对象服务是否应定义为主动服务进行服务执行路线的逆向追踪 8 4 6服务的命名和定位 服务的命名 1 服务的名称应由动词和名词组成 2 一般采用动宾结构 3 服务名应尽可能准确地反映该服务的职能 服务的定位 1 服务放置在哪个对象 应和问题域中拥有这种行为的实际事物相一致 2 在一般 特殊结构中 通用的服务放在一般类 专用的服务放在特殊类 8 4 7服务的详细说明 服务的详细说明中应包括的主要内容 1 服务解释 2 消息协议 3 消息发送 4 约束条件 5 服务流程图 服务流程图表示了服务将如何执行 分析员应在服务的详细说明中给出其流程图 需要说明两点 1 OO方法是支持渐进式开发的 一旦有了更深入的认识都可随时回到这个对象 继续补充 修改或细化它的服务详细说明 2 不管OOA文档还是OOD文档 都不强调十分细化的服务流程图 对流程图的详细程度要把握适当的分寸 主要是能够表达清楚以下几点 1 在每个陈述框中能够概括服务这一部分应做的主要工作 2 给出主要的分支点 循环 判断条件及控制路线 3 标明在哪些位置有对外消息 以及消息的名称 8 5建立类图的特征层 把每个对象的属性和服务都填写到相应的类符号中 就构成了类图的特征层 对特征层的详细说明 即对每个属性和每个服务的详细说明是在类描述模板中进行的 服务的详细说明不仅有文字 而且有图形 即服务流程图 类图是对整个系统的描述 称之为OOA基本模型 状态转换图的描述范围是一个对象 所以它位于类描述模板的对象级 服务流程图仅描述一个服务 位于类描述模板的最低级别 8 6电梯例子 本节对电梯控制系统进行定义对象属性与服务的活动 以建立其OOA模型的特征层 8 6 1电梯系统的属性描述 类ARRIVALEVENT 1 arrival floor 2 arrival id 3 elevator id 类ARRIVALPANEL 1 arrival panel id 2 elevator id 类ELEVATOR 1 current direction 2 current floor 3 current state 4 elevator id 5 status direction 类DESTINATIONEVENT 1 destination floor 2 destination id 3 elevator id 类DESTINATIONPANEL 1 destinations panel id 2 destination pending 3 elevator id 类SUMMONS PANEL 1 elevator id 2 summons panel id 3 summons pending down 4 summons pending up 类FLOOR 1 elevator id 2 floor id 类ELEVATORMOTOR 1 elevator motor id 类OVERWEIGHTSENSOR 1 overweight sensor id 2 overweight status 类SUMMONSEVENT 1 summons floor 2 summons id 3 Summons type 8 6 2电梯系统的服务定义 Control Elevator 封装在ELEVATOR类中 Control Elevator Motor 封装在ELEVATORMOTOR类中 Poll Neighbor 封装在FLOOR类中 Process Elevator Arrival 封装在FLOOR类中 Process Elevator Ready 封装在FLOOR类中 RECOGNIZE DESTINATION REQUEST 封装在DESTINATIONEVENT类中 RECOGNIZE ELEVATOR ARRIVAL 封装在ARRIVALEVENT类中 RECOGNIZE SUMMONS REQUEST 封装在SUMMONSEVENT类中 Recognize Elevator Ready 封装在ELEVATOR类中 Recognize Not Overweight 封装在OVERWEIGHTSENSOR类中 Recognize Overweight 封装在OVERWEIGHTSENSOR类中 Report Arrival Event 封装在ARRIVALEVENT类中 Report Current Location 封装在ELEVATOR类中 Report Current Status 封装在ELEVATOR类中 Report Destination Event 封装在DESTINATIONEVENT类中 Report Destination Pending 封装在DESTINATIONPANEL类中 Report Direction 封装在ELEVATOR类中 Report Overweight Status 封装在OVERWEIGHTSENSOR类中 Report Summons Event 封装在SUMMONSEVENT类中 Report Summons Pending 封装在SUMMONSPANEL类中 Update Arrival Panel 封装在ARRIVALPANEL类中 Update Destination Panel 封装在DESTINATIONPANEL类中 Update Direction 封装在ELEVATOR类中 Update Floor Arrival 封装在ELEVATOR类中 Update Floor Ready 封装在ELEVATOR类中 Update Summons Panel 封装在SUMMONSPANEL类中 8 6 3电梯系统的特征层 通过前面的分析 基本明确了每个对象所需的属性与服务 现在应该在每个对象类的表示符号中填写它们 至此可以画出该系统OOA模型的特征层 如图8 3所示 图8 3 小结 本章主要介绍如何定义属性与服务 包括如何发现对象和服务及它们的表示法 如何建立类图的特征层
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!