欢迎来到天天文库
浏览记录
ID:39988985
大小:228.00 KB
页数:62页
时间:2019-07-16
《uml第8章定义属性与服务》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第8章定义属性与服务8.1对象的属性和服务8.2表示法8.3定义属性8.4定义服务8.5建立类图的特征层8.6电梯例子本章将介绍如何通过分析和识别事物的内部特征来定义对象的属性和服务,并建立类图的特征层。8.1对象的属性和服务早在面向对象方法刚刚起步时,N.Wirth曾有一句名言“程序=算法+数据结构”。面向对象程序设计的不同之处只是在于:以对象为基本单位来组织系统中的数据和操作,形成对问题域中事物的直接映射。属性的定义是:属性是描述对象静态特征的一个数据项。服务的定义是:服务是描述对象动态特征(行为)的一个操作序列。类属性的定义是:类
2、属性是描述类的所有对象的共同特征的一个数据项,对于任何对象实例,它的属性值都是相同的。这样的属性对一个类的全部对象实例只是一份共同的数据空间,所以对任何对象而言,该属性的值总是相同的。主动服务是不需要接收消息就能主动执行的服务,它在程序实现中是一个主动的程序成分;被动服务是只有接收到消息才执行的服务,它在编程实现中是一个被动的程序成分。8.2表示法服务的表示法,是在类符号的下部填写每个服务的名字;对于主动服务,须在服务名之前加一个标记“@”。图8-1是属性和服务表示法示意图。图8-18.3定义属性首先考虑借鉴以往的OOA结果,看看已开发
3、的OOA模型中是否存在相同或相似的问题域,尽可能复用其中同类对象的属性定义。然后,研究当前的问题域和系统责任,针对本系统应该设置的每一类对象,按照问题的实际情况,以系统责任为目标进行正确的抽象,从而找出每一类对象应有的属性。8.3.1策略与启发从常理判断这个对象应该具有哪些属性。根据当前问题域分析这个对象应该有哪些属性。从系统责任要求的角度分析这个对象应具有哪些属性。建立这个对象涉及到系统中所需的哪些信息,包括要保存和管理的信息。对象有哪些需要区别的状态,是否需增加一个属性来区别这些状态。对象为了在服务中实现其功能,需要增设哪些属性。表
4、示整体-部分结构和实例连接需要用什么属性。8.3.2审查与筛选这个属性是否体现了以系统责任为目标的抽象。这个属性是不是描述这个对象本身的特征。该属性是否破坏了对象特征的“原子性”。这个属性是否可以通过继承得到。该属性是否可以从其他属性直接导出。8.3.3推迟到OOD考虑的问题对象标识问题。对象标识是分配给每个对象的永久性标识(又称作“柄”),它符合下述条件:(1)在一定的范围或领域(例如一个应用系统)中是惟一的。(2)与对象实例的特征、状态及分类(可能是动态的)无关。(3)在对象存在期间保持一致。规范化问题。当找出了对象的属性之后,其中
5、可能存在信息冗余。明显的信息冗余,可以在OOA阶段消除。不太明显的信息冗余则暂时不予考虑。性能问题。为了提高对象服务的执行速度,可以增加一些属性来保持服务的阶段性执行结果。但是执行速度是与机器有关的,所以这个问题也推迟到OOD时考虑。8.3.4属性的命名和定位属性的命名原则:(1)使用名词或带定语的名词(2)使用规范的、问题域通用的词汇(3)避免使用无意义的字符的数字(4)语言文字的选择与类的命名要一致属性的定位:(1)注意把属性放置到由它直接描述的那个对象的类符号中。(2)在一般-特殊结构中通用的属性应放在上层类,专用的属性应放在下层
6、类(3)一个类的属性必须适合这个类和它的全部特殊类的所有对象,并在此前提下充分地运用继承。8.3.5属性的详细说明属性的说明属性的数据类型属性所体现的关系实现要求及其他8.4定义服务分析员通过分析对象的行为来发现和定义对象的每个服务。但对象的行为规则往往和对象所处的状态有关。8.4.1对象的状态与状态转换图对象状态(1)对象或者类的所有属性的当前值。(2)对象或者类的整体行为的某些规则所能适应的状况、情况、条件、形式或生存周期阶段。【例8-1】通信控制系统中的传真机对象。为了分析“接收”和“发送”等服务的行为规则,应该注意的对象状态是传
7、真机设备的关闭、就绪(开启并空闲)、忙、故障等状态,为此可在其他属性之外专门定义一个“状态”属性。该属性有以上几种属性值,每一个属性值就是一种状态。【例8-2】“栈”对象。假如它的属性是100个存储单元和一个栈顶指针;服务是“压入”和“弹出”。它有多少状态呢?经分析,只需认识三种状态,即空(指针值=0)、满(指针值=100)、半满(0〈指针值〈100)。状态转换图。图8-2是“栈”对象的状态转换图。(1)找出对象的各种状态。(2)分析在不同的状态下,对象的行为规则有何不同。(3)分析从一种状态可以转换到哪几种其他状态以及该对象的什么行为
8、会引起这种转换。图8-28.4.2行为分类系统行为对象自身的行为——算法简单的服务对象自身的行为——算法复杂的服务8.4.3发现服务的策略与启发考虑问题域考虑系统责任分析对象的状态(1)对象从一种状态转换赋
此文档下载收益归作者所有