建立基本模型-类图.ppt
《建立基本模型-类图.ppt》由会员分享,可在线阅读,更多相关《建立基本模型-类图.ppt(79页珍藏版)》请在三一办公上搜索。
1、第4章 对系统的结构建模(类图),1,4.1.1 概念与表示法 对象是具有明确语义边界并封装了状态和行为的实体,由一组属性和作用在这组属性上的一组操作构成,是构成系统的一个基本单位,它用于描述客观事物。类是对一组具有相同属性和操作的一组对象的抽象描述。类为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和操作两个主要部分。,4.1 对象与类,2,4.1.1 概念与表示法一个类的所有对象具有相同的属性,是指所有对象的属性的个数、名称、数据类型都相同,各个对象的属性值则可以互不相同,并且随着程序的执行而变化。至于操作,对于一个类的所有对象都是一样的,即所有的对象共同使用它们的类定义中给出的操
2、作。由一个类生成的一个对象可以扮演不同的角色*。当一个对象扮演一个具体角色时,它展现给世界一个外观,与对象交互的客户根据对象在某时所扮演的角色而期望一定的行为*。一个类的一个角色是在特定的语境下该类的对象所呈现的行为。,4.1 对象与类,3,类 名,普通类,表示法:在模型中用类符号来表示一个类,它代表属于该类的全部对象实例。,最上面的那个名称栏包含类名;中间的分栏包含属性列表;最下面的分栏包含操作列表。每个属性和操作各占一行,,对象,4,在使用用况图完成捕获与描述需求后,已经对问题域和系统责任进行了分析,把用户的的需求落实到了各个用况之中。由于用况模型仅描述了系统内外的交互情况,从其中识别出来
3、的对象与类肯定是不够全面的。在识别对象与类时,问题域和系统责任仍是工作的基础。因为二者从不同的角度告诉分析员应该设立哪些对象。,412 识别对象与类,5,6,1、研究问题域 考虑问题域,侧重于客观存在的事物与系统中对象的映射。可以启发分析员发现对象的因素包括:人员、组织机构、物品、设备、事件(如索赔、上访、交易)、表格、日志、报告和结构等。其中的结构可能是多种多样的,例如,在概念类别上,汽车之上有车辆,之下可细分为客车和轿车,左右有摩托车和拖拉机,之内有发动机。它还可作成车队的一个成分。,2考虑系统边界 1)把一些人员和设备看作问题域范畴以内的事物,系统中的对象是对它们的抽象描述。侧重于以系统
4、中的对象模拟现实中的人和设备。2)对系统边界之外与系统进行交互的参与者,系统中需要设立相应的对象处理系统与这些实际的人和设备的交互,侧重于以系统中的对象处理现实中的人和设备与系统的交互。3)在系统中设立一个对象,处理与外系统的接口。,人员,设备,外系统,从不同的角度考虑人员和设备,7,3考虑系统责任 对照系统责任所要求的每一项功能,查看是否可以由现有的对象完成这些功能。如果发现某些功能在现有的任何对象中都不能提供,则可启发我们发现问题域中某些遗漏的对象。如果已经建立了用况模型,考虑执行下列的附加步骤:使用用况产生场景。使用场景寻找已错过的类。4.名词技术 从名词到对象或类通常有一对一的映射。运
5、用名词、代词和名词短语识别对象和类(寻找“现实世界”的对象和类)。用单个的专有名词或代词(Jim、他、她、雇员号5、我的工作站、我的家)以及直接引用的名词(第六个参赛者、第一百万次购买)识别对象。用复数名词(人们、顾客们、开发商们、用户们)以及普通名词(人、顾客、雇员、工作站)来识别类。,8,413 审查与筛选,(1)舍弃无用的对象通过属性判断:是否通过属性记录了某些有用的信息*?通过操作判断:是否通过操作提供了某些有用的功能*?二者都不是无用 通常,对象应该具有多个属性和操作。也存在对象没有属性仅提供操作,或有属性无操作的情况。,9,10,(2)对象的精简只有一个属性的对象,只有一个操作的对
6、象,班级,班主任姓名,1,1,班级班主任姓名,输出设备,格式转换器文件格式转换,输出设备文件格式转换,(3)与实现条件有关的对象,推迟到OOD考虑 系统责任所要求的某些功能例如系统安装、配置、信息备份、浏览可能无法从问题域中找到相应的对象来提供这些功能,可在设计阶段考虑专门为它们增加一些对象,既把它们推迟到设计阶段考虑。系统责任要求的某些功能可能与实现环境有关,也推迟到设计阶段考虑。例如:与图形用户界面(GUI)系统、数据管理系统、硬件和操作系统有关的对象。,11,414 抽象出类,1对象分类 先使用问题域知识从对象中识别出类,然后依据对象和类的定义,使用概括来寻找两个或多个共享相同特征的对象
7、,概括这些共同的方面来形成类。2、对类进行调整(1)类的属性或操作不适合该类的全部对象 例:“汽车”类的“乘客限量”属性,不适合于吊车、铲车。问题:分类不够详细进一步划分特殊类(2)属性及操作相同的类*经过抽象,差别很大的事物可能只保留相同的特征考虑能否合并为一个类,如计算机与吸尘器(3)属性及操作相似的类*考虑能否提升出一个一般类*,或形成整体部分结构。例:轿车、货车,抽象出汽车;机床与鼓风机用电机做成分.(4)同一事物的重复描述例:“职员”和“工作证”取消其中一个,12,415认识对象的主动行为并识别主动对象,主动对象是具有主动行为的对象,在设计阶段是拥有线程或进程并能够启动控制活动的对象
8、。主动类是其实例为主动对象的类。识别主动对象的策略:(1)考虑问题域 哪些对象需呈现主动行为*?-按定义(2)考虑系统责任 根据系统责任观察系统功能的构成层次,重点考虑完成最外层功能的对象是否应定义为主动对象。(3)考虑系统边界 哪些对象与参与者交互?如果一个交互是由参与者发起的,第一个处理该交互的对象是主动对象(4)进行操作执行路线的逆向追踪。,在分析阶段不能完全确定主动对象,13,active 类 名,类 名,主动类,主动对象,类 名,主动类的线框是粗黑的,或在主动类名之前要加一个主动性标记 active;在尚未确定是不是主动对象之前,暂时用普通对象的类符号表示。,14,416 类的命名适
9、合该类及其特殊类的全部对象实例*汽车加摩托车-机动车;还有马车-车辆反映个体而不是群体*书-书籍;船-船舶*使用名词,或带有定语的名词,避免无意义的符号 如线装书考虑使用适当种类的语言文字对类命名。在中国:可用中、英文双重命名*,417 建立类图的对象层 用类符号表示每个对象类填写类描述模板若发现新的属性与操作、关系,可以随时加到类符号中。,15,属性是用来描述对象静态特征的一个数据项 注意:属性是与问题高度相关的*。从技术观点上,属性是一些变量(数据项或状态信息),包含它的每一个对象(实例)都具有自己的值。按照面向对象方法的封装原则,一个对象的属性和操作是紧密结合的,对象的属性只能由这个对象
10、的操作存取。可见性 属性名:类型=初始值 可见性分为+(公有的)、#(受保护的)或-(私有的)、(包,只有在同一包中声明的类能够使用这一属性)。在对象/类中,必须给每一个属性一个唯一的名字。属性的类型可以是常见的基本数据类型,也可以是自己定义的类型。,4.2 定义属性与操作,421 定义属性,16,通过在类范围属性名和类型表达式画下划线的方式,表示类范围的属性,否则属性是实例范围的。,类 名,普通类,属性1属性n,操作1操作m,OO方法中有“实例属性”和“类属性”的概念之分。上面谈到的只是实例属性。类属性是描述类的所有对象共同特征的一个数据项,对于任何对象实例,它的属性值都是相同的。C+中冠以
11、static的成员变量是类属性,这样的属性对一个类的全部对象实例只是一份共同的数据空间,所以对任何对象而言,该属性的值总是相同的。实例属性和类属性各有不同的用途*。,17,识别属性*,按常识这个对象应该有哪些属性?在当前的问题域中,对象应该有哪些属性?根据系统责任,这个对象应具有哪些属性*?如信用卡的使用建立这个对象是为了保存和管理哪些信息?对象为了完成其功能,需要增设哪些属性?对象是否需要通过专设的属性区别其状态*?如设备可利用需求文档中的形容词或所有格短语*。若一个属性的结构较为复杂(即不仅仅是一些简单的数字或文本),可考虑把其作为对象。,18,筛选*是否体现了以系统责任为目标的抽象;例:
12、书的重量*?是否描述对象本身的特征;例:课程电话号码*?一个属性所对应的一个事物性质的粒度要适当。例如人的通信地址,包括国家、省、城市、街道、门牌号码等内容,但这些内容在通信地址这个概念上是不可分的。在定义“人员”对象的属性时,应该使用一个属性“通信地址”,而不应把有关通信地址的各项内容拆散开用多个属性来描述。若一个对象与另一个对象有关系,其属性必须捕获该对象的性质,而不是关系或关系中的其他对象的性质;如属性必须是整个实体的特征,而不是其成分的特征*可以从其它属性直接导出的属性*;与实现有关的因素,推迟到OOD考虑(规范化、对象标识、性能问题),19,属性的命名和定位 命名:原则与类的命名相同
13、定位:针对所描述的对象,适合全部对象实例。,属性的详细说明 把每个属性都填写到相应的类符号中去,并在相应的类描述模板中进行详细说明。,20,21,对象行为分类(1)系统行为例:创建、删除、复制、转存(2)对象自身的行为算法简单的操作例:读、写属性值(3)对象自身的行为算法复杂的操作计算或监控,4.2.2 操作,操作是类的对象被要求执行的服务。可见性 操作名(参数列表):返回类型 可见性的取值为+(公有的)、#(受保护的)、-(私有的)或(包)。内部操作和外部操作,特征标记 类范围操作(静态操作)是用来创造实例或者操纵静态属性的操作。例如C+中的前面冠以static的成员函数,就是类范围操作 表
14、示法 类范围的操作用带下划线的名字和类型表达式串表示。实例范围操作是默认的,对其不用标记。,概念与表示法,22,识别操作 诸如创建(创建并初始化一个新对象)、连接(将一个对象与另一个对象连接)、访问(得到或设置属性值)、断开连接(将一个对象与另一个对象的连接断开)和删除一个对象之类的操作都属于在算法上是简单的操作,在OOA不予以考虑。在OOA中,只对识别那些必须由对象提供的、在算法上复杂的业务操作(如要进行某些计算或监控操作)感兴趣。,23,(1)考虑系统责任有哪些功能要求在本对象提供*?(2)考虑问题域对象在问题域对应的事物有哪些行为*?(3)分析对象状态在每种状态下对象可能发生什么行为?对
15、象状态的转换,是由哪些操作引起的?-状态图讲述(4)追踪操作的执行路线模拟操作的执行,并在整个系统中跟踪*。(5)用动词识别操作(6)查看每一个属性,因为要用对象的操作来对其进行操纵,定义操作的策略与启发,24,25,审查对象的每个操作是否真正有用是否直接提供系统责任所要求的某项功能?或者响应其它操作的请求,间接地完成某种功能的某些局部操作?调整取消无用的操作是不是高内聚的一个操作应该只完成一项单一的、相对完整的功能*调整拆分 或 合并,审查与调整,命名:动词或动宾结构定位:与实际事物一致例:售货员售货*,商品售出*,操作的命名和定位,26,描述操作 把每个对象的操作都填写到相应的类符号中。在
16、类描述模板中,写出:说明操作的职责操作原型(消息的格式)消息发送(指出在这个操作执行时,需要请求哪些别的对象操作,即接收消息的对象类名以及执行这个消息的操作名)约束条件:如果该操作的执行有前置条件、后置条件,以及执行时间的要求等其它需要说明的事项,则在这里加以说明。实现操作的方法(文字、活动图或流程图)。,27,28,类(及其对象)之间的四种关系,分类关系、继承泛化(一般-特殊)generalization(generalization-specialization)构成关系聚合(整体-部分)aggregation(whole-part)静态联系关联(实例连接)association(inst
17、ance connection)使用关系(行为依赖)依赖Dependency这些关系形成了类图的关系层*,4.3 定义关系,29,1、概念 一般类、特殊类、继承、多继承、多态、泛化、“is a kind of”,泛化是较特殊的类和较一般的类之间的直接关系(继承关系),其中较一般的类具有较特殊的类的共同性质,较特殊的类继承较一般的类的性质,且还具有自己的性质,或额外的关联,较特殊的类的对象是较一般的类的对象的子集。,431 泛化,30,31,如果类A具有类B的全部属性和全部操作,而且具有自己特有的某些属性或操作,则A叫做B的特殊类,B叫做A的一般类。,另一定义:如果类A的全部对象都是类B的对象,
18、而且类B中存在不属于类A的对象,则A是B的特殊类,B是A的一般类。可以证明,以上两种定义是等价的,性质:后代将具有祖先的所有的关联。,32,33,把在一个类中没有实现的操作(即没有提供方法),称为抽象操作。抽象操作映射到C+,称作纯虚操作。含有抽象操作的类是不能直接实例化的,在UML中把这种类叫做抽象类。抽象类的作用是为了让其子类继承它的属性和操作等。,继承进一步地可分为单继承和多继承。,2、表示法,人员,股东,职员,顾客,股东职员,例:,抽象操作带有标记“abstract”,或者把操作的特征标记写成斜体来表示它是抽象的。,34,35,3、识别继承(泛化),(1)学习当前领域的分类学知识(2)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 建立 基本 模型 类图
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6280544.html