uml第8章定义属性与服务

上传人:tian****1990 文档编号:71756935 上传时间:2019-01-21 格式:PPT 页数:62 大小:228KB
返回 下载 相关 举报
uml第8章定义属性与服务_第1页
第1页 / 共62页
uml第8章定义属性与服务_第2页
第2页 / 共62页
uml第8章定义属性与服务_第3页
第3页 / 共62页
uml第8章定义属性与服务_第4页
第4页 / 共62页
uml第8章定义属性与服务_第5页
第5页 / 共62页
点击查看更多>>
资源描述

《uml第8章定义属性与服务》由会员分享,可在线阅读,更多相关《uml第8章定义属性与服务(62页珍藏版)》请在金锄头文库上搜索。

1、第8章 定义属性与服务,8.1 对象的属性和服务 8.2 表示法 8.3 定义属性 8.4 定义服务 8.5 建立类图的特征层 8.6 电梯例子,本章将介绍如何通过分析和识别事物的内部特征来定义对象的属性和服务,并建立类图的特征层。,8.1 对象的属性和服务,早在面向对象方法刚刚起步时,N.Wirth曾有一句名言“程序=算法+数据结构”。面向对象程序设计的不同之处只是在于:以对象为基本单位来组织系统中的数据和操作,形成对问题域中事物的直接映射。,属性的定义是:属性是描述对象静态特征的一个数据项。 服务的定义是:服务是描述对象动态特征(行为)的一个操作序列。,类属性的定义是:类属性是描述类的所有

2、对象的共同特征的一个数据项,对于任何对象实例,它的属性值都是相同的。这样的属性对一个类的全部对象实例只是一份共同的数据空间,所以对任何对象而言,该属性的值总是相同的。,主动服务是不需要接收消息就能主动执行的服务,它在程序实现中是一个主动的程序成分;被动服务是只有接收到消息才执行的服务,它在编程实现中是一个被动的程序成分。,8.2 表示法,服务的表示法,是在类符号的下部填写每个服务的名字;对于主动服务,须在服务名之前加一个标记“”。图8-1是属性和服务表示法示意图。,图8-1,8.3 定义属性,首先考虑借鉴以往的OOA结果,看看已开发的OOA模型中是否存在相同或相似的问题域,尽可能复用其中同类对

3、象的属性定义。,然后,研究当前的问题域和系统责任,针对本系统应该设置的每一类对象,按照问题的实际情况,以系统责任为目标进行正确的抽象,从而找出每一类对象应有的属性。,8.3.1 策略与启发,从常理判断这个对象应该具有哪些属性。 根据当前问题域分析这个对象应该有哪些属性。 从系统责任要求的角度分析这个对象应具有哪些属性。 建立这个对象涉及到系统中所需的哪些信息,包括要保存和管理的信息。,对象有哪些需要区别的状态,是否需增加一个属性来区别这些状态。 对象为了在服务中实现其功能,需要增设哪些属性。 表示整体-部分结构和实例连接需要用什么属性。,8.3.2 审查与筛选,这个属性是否体现了以系统责任为目

4、标的抽象 。 这个属性是不是描述这个对象本身的特征 。 该属性是否破坏了对象特征的“原子性” 。,这个属性是否可以通过继承得到 。 该属性是否可以从其他属性直接导出 。,8.3.3 推迟到OOD考虑的问题,对象标识问题。对象标识是分配给每个对象的永久性标识(又称作“柄”),它符合下述条件: (1)在一定的范围或领域(例如一个应用系统)中是惟一的。 (2)与对象实例的特征、状态及分类(可能是动态的)无关。 (3)在对象存在期间保持一致。,规范化问题。当找出了对象的属性之后,其中可能存在信息冗余。明显的信息冗余,可以在OOA阶段消除。不太明显的信息冗余则暂时不予考虑。,性能问题。为了提高对象服务的

5、执行速度,可以增加一些属性来保持服务的阶段性执行结果。但是执行速度是与机器有关的,所以这个问题也推迟到OOD时考虑。,8.3.4 属性的命名和定位,属性的命名原则: (1)使用名词或带定语的名词 (2)使用规范的、问题域通用的词汇 (3)避免使用无意义的字符的数字 (4)语言文字的选择与类的命名要一致,属性的定位 : (1)注意把属性放置到由它直接描述的那个对象的类符号中。 (2)在一般-特殊结构中通用的属性应放在上层类,专用的属性应放在下层类 (3)一个类的属性必须适合这个类和它的全部特殊类的所有对象,并在此前提下充分地运用继承。,8.3.5 属性的详细说明,属性的说明 属性的数据类型 属性

6、所体现的关系 实现要求及其他,8.4 定义服务,分析员通过分析对象的行为来发现和定义对象的每个服务。但对象的行为规则往往和对象所处的状态有关。,8.4.1 对象的状态与状态转换图,对象状态 (1)对象或者类的所有属性的当前值。 (2)对象或者类的整体行为的某些规则所能适应的状况、情况、条件、形式或生存周期阶段。,【例8-1】通信控制系统中的传真机对象。 为了分析“接收”和“发送”等服务的行为规则,应该注意的对象状态是传真机设备的关闭、就绪(开启并空闲)、忙、故障等状态,为此可在其他属性之外专门定义一个“状态”属性。该属性有以上几种属性值,每一个属性值就是一种状态。,【例8-2】“栈”对象。 假

7、如它的属性是100个存储单元和一个栈顶指针;服务是“压入”和“弹出”。它有多少状态呢?经分析,只需认识三种状态,即空(指针值=0)、满(指针值=100)、半满(0指针值100)。,状态转换图 。图8-2是“栈”对象的状态转换图。 (1)找出对象的各种状态。 (2)分析在不同的状态下,对象的行为规则有何不同。 (3)分析从一种状态可以转换到哪几种其他状态以及该对象的什么行为会引起这种转换。,图8-2,8.4.2 行为分类,系统行为 对象自身的行为算法简单的服务 对象自身的行为算法复杂的服务,8.4.3 发现服务的策略与启发,考虑问题域 考虑系统责任,分析对象的状态 (1)对象从一种状态转换赋予另

8、一种状态是由什么操作引起的?是否已经设立了相应的服务? (2)在每一种状态下对象可以发生什么行为?应该由什么服务来描述?,追踪服务的执行路线 。在上述问题思考完毕后能够发现的服务都已发现,模拟每个服务的执行并追踪其执行路线,可以帮助分析员发现遗漏的服务。,8.4.4 审查与调整,检查每个服务在系统中是否真正需要 检查每个服务是不是高内聚的,8.4.5 认识对象的主动行为,考虑问题域 考虑与系统边界以外的活动者直接进行交互的对象 考虑系统功能的构成层次中完成最外层功能的对象服务是否应定义为主动服务 进行服务执行路线的逆向追踪,8.4.6 服务的命名和定位,服务的命名 (1)服务的名称应由动词和名

9、词组成 (2)一般采用动宾结构 (3)服务名应尽可能准确地反映该服务的职能,服务的定位 (1)服务放置在哪个对象,应和问题域中拥有这种行为的实际事物相一致 (2)在一般-特殊结构中,通用的服务放在一般类,专用的服务放在特殊类,8.4.7 服务的详细说明,服务的详细说明中应包括的主要内容: (1)服务解释 (2)消息协议 (3)消息发送 (4)约束条件 (5)服务流程图,服务流程图表示了服务将如何执行,分析员应在服务的详细说明中给出其流程图。需要说明两点: (1)OO方法是支持渐进式开发的,一旦有了更深入的认识都可随时回到这个对象,继续补充、修改或细化它的服务详细说明。 (2)不管OOA文档还是

10、OOD文档,都不强调十分细化的服务流程图。,对流程图的详细程度要把握适当的分寸,主要是能够表达清楚以下几点: (1)在每个陈述框中能够概括服务这一部分应做的主要工作。 (2)给出主要的分支点、循环、判断条件及控制路线。 (3)标明在哪些位置有对外消息,以及消息的名称。,8.5 建立类图的特征层,把每个对象的属性和服务都填写到相应的类符号中,就构成了类图的特征层。 对特征层的详细说明,即对每个属性和每个服务的详细说明是在类描述模板中进行的。 服务的详细说明不仅有文字,而且有图形,即服务流程图。,类图是对整个系统的描述,称之为OOA基本模型;状态转换图的描述范围是一个对象,所以它位于类描述模板的对

11、象级;服务流程图仅描述一个服务,位于类描述模板的最低级别。,8.6 电梯例子,本节对电梯控制系统进行定义对象属性与服务的活动,以建立其OOA模型的特征层。,8.6.1 电梯系统的属性描述,类ARRIVAL EVENT (1)arrival_floor (2)arrival_id (3)elevator_id,类ARRIVAL PANEL (1)arrival_panel_id (2)elevator_id,类ELEVATOR (1)current_direction (2)current_floor (3)current_state (4)elevator_id (5)status_direc

12、tion,类DESTINATION EVENT (1)destination_floor (2)destination_id (3)elevator_id,类DESTINATION PANEL (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,类ELEVATOR

13、MOTOR (1)elevator_motor_id,类OVERWEIGHT SENSOR (1)overweight_sensor_id (2)overweight_status,类SUMMONS EVENT (1)summons_floor (2)summons_id (3)Summons_type,8.6.2 电梯系统的服务定义,Control_Elevator(封装在ELEVATOR类中) Control_Elevator_Motor(封装在ELEVATOR MOTOR类中) Poll_Neighbor(封装在FLOOR类中),Process_Elevator_Arrival(封装在F

14、LOOR类中) 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(封装在O

15、VERWEIGHTSENSOR类中) Report_Arrival_Event(封装在ARRIVALEVENT类中),Report_Current_Location(封装在ELEVATOR类中) Report_Current_Status(封装在ELEVATOR类中) Report_Destination_Event(封装在DESTINATION EVENT类中),Report_Destination_Pending(封装在DESTINATIONPANEL类中) Report_Direction(封装在ELEVATOR类中) Report_Overweight_Status(封装在OVERWE

16、IGHT SENSOR类中),Report_Summons_Event(封装在SUMMONS EVENT类中) Report_Summons_Pending(封装在SUMMONS PANEL类中) Update_Arrival_Panel(封装在ARRIVALPANEL类中),Update_Destination_Panel(封装在DESTINATION PANEL类中) Update_Direction(封装在ELEVATOR类中) Update_Floor_Arrival(封装在ELEVATOR类中),Update_Floor_Ready(封装在ELEVATOR类中) Update_Summons_Panel(封装在SUMMONSPANEL类中),8.6.3 电梯系统的特征层,通过前面的分析,基本明确了每个对象所需的属性与服务,现在应该在每个对象类的表示符号中填写它们。至此可以画出该系统OOA模型的特征层,如图8-3所示。,图8-3,小结,本章主要介绍如何定义属性与服务。包括如何发现对象和服

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号