您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 7面向对象软件设计及UML应用
1第7章面向对象设计及UML应用7.1面向对象分析7.2建立对象模型7.3建立动态模型7.4建立功能模型7.5定义服务7.6基于UML的面向对象分析7.7面向对象设计概述7.8面向对象方法7.9基于UML的面向对象设计7.10面向对象实现27.1面向对象分析OOA通常要建立三个模型对象模型:描述系统组成动态模型:描述系统控制结构功能模型:描述系统功能的。这三种模型都涉及都到数据、控制和操作等共同的概念,只不过每种模型描述的侧重点不同,三种模型综合起来则全面地反映了对目标系统的需求。3解决的问题不同,这三个模型的重要程度也不同:几乎解决任何一个问题,都需要从客观世界实体及实体间相互关系抽象出极有价值的对象模型;当问题涉及交互作用和时序时(例如,用户界面及过程控制等),动态模型是重要的;解决运算量很大的问题(例如,高级语言编译、科学与工程计算等),则涉及其中的功能模型。动态模型和功能模型中都包含了对象模型中对象的操作。47.2建立对象模型一、对象模型的结构二、对象模型的建立5一、对象模型的结构主题层(Subjectlayer)主题类—&—对象层(Class&objectlayer)结构层(Structurelayer)属性层(Attributelayer)服务层(Servicelayer)61、类—&—对象层“类—&—对象”是指“一个类及属于该类的实例(对象)”。类名属性服务类名类名属性72、结构层结构层表示了问题域中实体间结构关系的抽象。问题域中实体之间的结构关系有:一般-特殊关系聚集关系关联关系。81)一般——特殊关系“一般——特殊”关系,也称为泛化关系、继承关系、归纳关系等。它反映了一个类与若干个互不相容的子类之间的分类关系。特殊类的对象拥有一般类的全部属性和服务,称为特殊类对一般类的继承。特殊类中只需要定义它自己特有的属性和服务。继承具有传递性。员工临时工正式工一般类特殊类1特殊类29继承分单继承和多继承员工临时工正式工在职研究生研究生职工102)聚集关系聚集关系就是组合关系、“整体——部分”关系,它反映了对象之间的构成关系。聚集关系具有传递性部分类整体类车厢车轮4,6汽车1,n封面前言1,m教材目录章节习题1,t113)关联关系类的关联关系反映对象之间相互依赖、相互作用的关系。现实世界中,实体之间存在着互相约束,组合关系就是实体之间的一种特殊的约束关系,除了组合关系,还存在其它限制条件或事务规则。例如,银行系统的一次取款事务必定跟某个储户有关,没有储户,也就不存在取款事务。类1mn类112阶阶数(重数):参与关联的对象数量一对一(1:1)一对多(1:1+)多对多(1+:1+)学生毕业设计教师毕业设计m教师学生mn13链属性链属性就是关联链的性质类1mn类1连接属性14关联关系-链属性毕业设计题目答辩时间成绩教师学生mn工作工资职务个人名字身份证号公司名字地址1m15限定:利用限定词通常能有效地减少关联的次数。用以对关联的含义作某种约束,利用限定词通常能有效地减少关联的阶数目录+文件名产生一个文件目录文件文件名163、主题层对于大型系统,由于对象模型的结构庞大而复杂,为了便于人们在一个时间内考虑和理解所提出的对象,可以将有关的类归类到各个主题。主题可以看作对象模型的子模型或子系统。主题名17主题的特点主题是由一组类构成的集合,但其本身不是一个类一个主题内部的对象具有某种意义上的内在联系主题的划分具有一定的灵活性。强调的重点不同可以得到不同的主题划分。184、属性层属性层包括两个方面:对象的属性对象之间的关系(关联)。195、服务层服务层也包括两个方面:对象的服务以及对象之间的消息通信。对象之间连接的有向箭头表示对象之间的消息连接关系。发送者接收者20例子:员工姓名地址身份证号码工资公司名字电话号码主要产品地址雇用解雇项目项目名预算优先级产品产品名成本重量工人经理部门mn参加t主持部门名m生产管理0,1为之工作职务21二、对象模型的建立对象模型的五个层次对应着建立对象模型的五项活动:识别类—&—对象识别结构识别主题定义属性和关联关系定义服务和消息连接。22例子“银行计算机储蓄系统”,简称“储蓄系统”某银行总行下设几个分行,每个分行设有下属的遍布市内各处的储蓄所。银行拟开发一个“银行计算机储蓄系统”,它是一个由中央计算机、分行计算机及柜员终端组成的网络系统。中央计算机由总行投资购买。分行负责提供分行计算机和柜员终端。柜员终端设在分行下属的储蓄所内。该系统的软件开发成本由各分行分摊。储户凭存折向银行柜员要求进行存款或取款,取款时还必须提供密码。柜员负责把储户提交的存款或取款信息输进柜员终端,接收储户交来的现金或支票,或付给储户现金。柜员终端与相应的分行计算机通信,分行计算机具体处理针对某个帐户的事务并且维护帐户。如果是初次存款,则系统开立一个新帐户,并记录存款人姓名、住址、身份证号码、存款日期、存款金额、密码等信息,并给用户一个存折。帐户中的余额至少要留10元钱,如果全部取完,则系统撤销该帐户。231、识别类—&—对象类—&—对象的选择是最关键的一步。类—&—对象选择的好,一方面可以便于程序的扩充,另一方面还可以为以后的其它应用提供基础。查找侯选对象筛选对象对象命名及“类—&—对象”层的建立241)查找侯选对象主要是从问题域、系统边界来考虑各种能启发自己发现对象的因素,找出可能有用的侯选对象。问题域中启发分析员发现对象的因素包括:人员、组织、物品、设备、事件、表格、结构等。系统边界域中启发分析员发现对象的因素包括:人员、设备、外系统最简单的方法是阅读需求陈述,从中找出名词。25例如认真阅读“储蓄系统”的需求陈述,从中找出如下名词:某银行总行下设几个分行,每个分行设有下属的遍布市内各处的储蓄所。银行拟开发一个“银行计算机储蓄系统”,它是一个由中央计算机、分行计算机及柜员终端组成的网络系统。中央计算机由总行投资购买。分行负责提供分行计算机和柜员终端。柜员终端设在分行下属的储蓄所内。该系统的软件开发成本由各分行分摊。储户凭存折向银行柜员要求进行存款或取款,取款时还必须提供密码。柜员负责把储户提交的存款或取款信息输进柜员终端,接收储户交来的现金或支票,或付给储户现金。26柜员终端与相应的分行计算机通信,分行计算机具体处理针对某个帐户的事务并且维护帐户。如果是初次存款,则系统开立一个新帐户,并记录存款人姓名、住址、身份证号码、存款日期、存款金额、密码等信息,并给用户一个存折。帐户中的余额至少要留10元钱,如果全部取完,则系统撤销该帐户。隐含:事务日志、通信链路,存款事务,取款事务27从“储蓄系统”的需求陈述中找出的名词银行总行分行市储蓄所系统中央计算机分行计算机网络柜员终端软件成本储户柜员存折密码信息现金支票通信帐户事务姓名住址身份证号码存款日期存款金额余额事务日志通信链路存款事务取款事务282)筛选对象简单的方法所确定的侯选者是非常不准确的,其中往往包含大量不正确的或不必要的事物,还必须经过更进一步的严格筛选。筛选时主要依据下列标准,删除不正确或不必要的对象:冗余无关笼统属性操作实现29(1)冗余如果两个类表达了同样的信息,则应该保留在此问题中最富于描述力的名称。例如,“储蓄系统”中,存折与帐户,分别描述了相同的二类信息,因此,应该去掉“存折”冗余类,仅保留“帐户”类。银行总行分行市储蓄所系统中央计算机分行计算机网络柜员终端软件成本储户柜员存折密码信息现金支票通信帐户事务姓名住址身份证号码存款日期存款金额余额事务日志通信链路存款事务取款事务30(2)无关对照系统责任所要求的每一项功能,如系统安装、配置、信息备份、浏览等,查看是否可以由现有的对象完成这些功能。如果发现某些功能在现有的任何对象中都不能提供,则可启发发现问题域中某些遗漏的对象。如何围绕系统责任这个目标去进行抽象?首先要舍弃那些与系统责任无关的事物,只注意与系统责任有关的事物;其次,对于与系统有关的事物,也不是把它们的任何特征都在相应的对象中表达出来,而要舍弃那些与系统特征无关的特征。31如何判断事物是否与系统责任有关?一是该事物是否围绕系统提供了一些有用的信息,或者它是否需要系统为它保存和管理某些信息;二是它是否向系统提供了某些服务,或者它是否需要系统描述它的某些行为。32例如当开发一个图书馆管理系统时,设立了“书”这个类,同时把每一本书作为该类的一个对象。这样做时正确的,因为系统需要记住每一本书借给了哪个读者。但是在开发一个书店的业务管理系统时,是否要把每一本书作为一个对象呢?实际上,在这个系统中把同一版本的一种书从总体上看作一个对象更合理些。因为该系统只要把每种书看作一项货物,记住它的货源、单价、库存量等信息就够了,不需记录每一本书的信息。33“储蓄系统”的处理“储蓄系统”中,不处理分摊软件开发成本的问题,应该去掉侯选类“成本”。该系统的处理与储蓄所的地点无关,应该去掉侯选类“市”。银行总行分行市储蓄所系统中央计算机分行计算机网络柜员终端软件成本储户柜员存折密码信息现金支票通信帐户事务姓名住址身份证号码存款日期存款金额余额事务日志通信链路存款事务取款事务34(3)笼统笼统的、泛指的名词:要么系统无须记忆有关它们的信息,要么在需求陈述中有更明确更具体的名词对应它们所暗示的事务。因此,通常把这些笼统的或模糊的类去掉。以储蓄系统为例,“银行”实际指总行或分行,“信息”的具体内容在需求陈述中随后就指明了。其他:“网络”、“系统”、“软件”、“事务”等侯选类。银行总行分行市储蓄所系统中央计算机分行计算机网络柜员终端软件成本储户柜员存折密码信息现金支票通信帐户事务姓名住址身份证号码存款日期存款金额余额事务日志通信链路存款事务取款事务35(4)属性某些名词描述的是其它对象的属性,如储蓄系统中“现金”、“支票”、“存款金额”、“余额”、“密码”、“姓名”、“住址”、“身份证号码”、“存款日期”等,实际上都应该作为属性对待。当然,如果某个性质具有很强的独立性,则应把它作为类而不是作为属性。银行总行分行市储蓄所系统中央计算机分行计算机网络柜员终端软件成本储户柜员存折密码信息现金支票通信帐户事务姓名住址身份证号码存款日期存款金额余额事务日志通信链路存款事务取款事务36(5)操作在需求陈述中可能使用一些既可作为名词,又可作为动词的词,应该慎重考虑它们在本问题中的含义,以便正确地决定把它们作为类还是作为类中定义的操作。例如,谈到电话时通常把“拨号”当作动词,当构造电话模型时确实把它作为一个操作,而不是一个类。但是,在开发电话的自动记帐系统时,“拨号”需要有自己的属性(例如日期、时间、受话地点等),因此把它作为一个类。总之,本身具有属性需独立存在的操作,应该作为类—&—对象,反之,则作为对象的操作。37分析储蓄系统中可以去掉“通信”。银行总行分行市储蓄所系统中央计算机分行计算机网络柜员终端软件成本储户柜员存折密码信息现金支票通信帐户事务姓名住址身份证号码存款日期存款金额余额事务日志通信链路存款事务取款事务38(6)实现在分析阶段不应该过早地考虑怎样实现目标系统,因此应该去掉仅和实现有关的侯选类。在“储蓄系统”中,“事务日志”无非是对一系列事务的记录,它的确切表示方式是面向对象设计的议题;“通信链路”在逻辑上是一种联系,在系统实现时它是关联链的物理实现。银行总行分行市储蓄所系统中央计算机分行计算机网络柜员终端软件成本储户柜员存折密码信息现金支票通信帐户事务姓名住址身份证号码存款日期存款金额余额事务日志通信链路存款事务取款事务393)对象命名及“类—&—对象”层的建立类的命名应该采用恰好符合这个类所包含每一个对象的名词或带有定语的名词,要使用专家及用户惯常使用的规范的词汇。中国的软件开发者为国内用户开发的软件,在OOA与OOD文档中使用中文无疑最有利于表达和交流,但类及属性和服务的命名使用英文有利于与程序的对象。40储蓄系统对象模型类—&—对象层储户帐户总行分行中央计算机储蓄所分行计算机柜员存款事务存款事务银行总行分行市储蓄所系统中央计算机分行计算机网络柜员终端软件成本储户柜员存折密码
本文标题:7面向对象软件设计及UML应用
链接地址:https://www.777doc.com/doc-3441236 .html