面向对象的分析设计方法_第1页
面向对象的分析设计方法_第2页
面向对象的分析设计方法_第3页
面向对象的分析设计方法_第4页
面向对象的分析设计方法_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第9章 面向对象的分析设计方法,内容提要: 面向对象技术及其发展历史 面向对象技术的一些基本概念 面向对象的分析 面向对象的设计 面向对象的实现,连接成员的机制(静态联结与动态关联),生产软件产品,9.0 面向对象技术及其发展历史,1. 什么是面向对象技术,以面向对象方法学为基础的软件系统组织和结构设计的工程技术,内部组成 层次结构,机器语言 助记符语言 汇编语言 面向机器 直接控制机器的运行,9.0 面向对象技术及其发展历史,2. 从“软件工程” 的发展史看面向对象技术出现的必然性,面向机器,FORTRAN BASIC 面向过程 描述解题过程,C PASCAL 结构化 程序设计 以控制结构表示程序的物理层次结构,C+ Java 面向对象 程序设计 程序设计过程与人类的认知过程统一,面向过程,结构化 程序设计,面向对象 程序设计,9.0 面向对象技术及其发展历史,3. 面向对象方法学基本内涵,客观世界的事物由各种各样的实体(对象)构成 每个对象都有各自的内部状态和运动(状态)规律 根据对象的属性和运动规律的相似性可以将对象分类 复杂对象由相对简单的对象组成 不同对象的组合及其间的相互作用和联系构成了系统 对象间的相互作用通过消息传递,对象根据所接收到的消息做出自身的反应,9.0 面向对象技术及其发展历史,4. 认知规律,归 纳: 从特殊到一般的思维过程 演 绎: 从一般到特殊的思维过程 形象思维: 从一公理体系出发,根据定理、定律等使用归纳及演绎进行推理,从而解决给定问题。 逻辑思维: 从多个具有共性的解决问题的过程,发现解决这类问题的通用方法 认知深度: 先一般、总体,后特殊、具体 认知广度: 根据事物之间的联系,将认识的焦点从一个事物转移到另一个事物,从而扩大视野 认知连续性: 认识的深入具有连续性,在继承已有知识的基础上进行新认识。,1 将问题划分为不同对象。 2 通过类比发现对象间存在的相似性,从而得到类、子类、父类等。 3 对属于同一个类的对象定义一组数据用以刻画该类对象的整体特征;定义一组“方法”(函数)用以描述能够对该类对象进行的操作(行为)。 4 建立对象间的联系以反映不同对象之间的相互作用。,符合人类认知规律的软件开发过程,划分,将复杂问题(复杂对象)划分为一系列简单的组成部分(简单对象),分类,按照对象间的各种相似性将对象分类,认识各类对象自身属性及行为,认识对象及类之间关系,全部事物的完整认识,9.1 面向对象技术的基本概念,1、什么是对象,对象的含义是什么? 对象Object 在不同场合具有不同的含义: 对象是封装了数据结构及可以施加在这些数据结构上的操作的封装体,这个封装体有可以唯一地标识它的名字,而且对外界提供一组服务(即公有的操作)。,(1)对象数据封装,对象的形态与静态特征,问题空间对象,人、学生、学校、班级、处、电视、汽车等都可以被看作对象,对象数据封装,Class CBook char* m_pczName; int m_nPages; int m_nEdition; CBook b;,解空间对象,人类认识世界的认知规律之一: 根据对象的属性和运动规律的相似性分类认识和描述相似属性和功能的对象,这些构成对象类 任何一个具体的对象都是相应对象类的一个实例 类与对象的不同类的实例化,(2)对象类和对象实例,将客观事物之间的复杂的相互作用抽象为对象之间通过消息传递,对象对所接收消息的反应,(3)对象间相互作用,对象之间的相互作用抽象模型:,对象间相互作用,对象的动态特征,动态对象包含两个含义: 对每个对象而言,其内部状态是变化的,对象上发生的事件可能导致对象内部状态值的改变,这种变化与事件发生时对象所处的状态有关,与所发生的具体事件有关 不同事件之间往往会构成一个时间、因果链条,它们从另一个角度描绘出对象状态随时间变化的规律。,2、 对象继承,人类对事物分类后,从某种角度观察,不同类之间具有一定的联系。 人类认识事物从对象个体、类的认识,通过事务间关联,进一步深入去认识其它事物,通过对不同事物间关系的描述建立系统的层次结构。 人类对某一新事物的认知经常建立在已经获取的一些认知结论的基础上,类似的情形同样常发生在对事物的描述中,比如对一个新事物的描述通常都将尝试应用业已存在的理论或方法。 对于人类的这种行为以及类之间关系的描述,面向对象技术给予充分的技术支持。,(1)父类和子类,一般特殊结构,人类对事物进行分类后,在概念上,一些种类的事物之间存在着联系,一些类之间在行为、属性等方面具有部分相似性,其间存在一般与特殊的对应关系:汽车与轿车、学生与班委会 这种关系不存在于具体对象实例之间,而存在于对象类之间。 一般性寓于特殊性之中,体现在一般类对象所具有的属性和操作包含于特殊类对象之中。,父类和子类,父类子类(继承、派生),特殊类的每个对象都为一般类的实例,因此特殊类的对象必将具有相应的一般类的属性和操作特殊类这种获取属性和方法的方式称为继承,由于特殊类(对象)具有一般类的所有属性和操作,所以特殊类的任何一个对象必定是相应一般类的对象,因此这种关系又常称为IS_A_KIND_OF关系,如果类A具有类B的全部属性和操作,并且具有一些自己独特的属性和操作,那么A称作B的特殊类,B称作A的一般类,通过在已有类的基础上添加一些特殊的属性和操作形成新类的方式称为派生,2、多重继承,单一继承多重继承,一些事物同时具有其它多类事物的属性和行为,在面向对象技术中采用多重继承描述:父母与孩子、在职研究生与教师和研究生类等,3、多态性,人类思维和描述中经常使用同一个名字代表不同的事物,客观事物也往往具有多重身份,在不同的场合显现出不同的形态。如:+、操作(函数)等。面向对象中使用多态性表述这种习惯。 多态性的含义:一个标识符标识多个语义。 例如:Display()在CCircle类和CRectangle类中.,CRectangle:Display(),CCircle:Display(),CRectangle a; a.Display(),CCircle c; c.Display(),与运算符相似,9.2 面向对象分析方法,OOA三种模型 对象模型用类和关系来描述系统的静态结构 动态模型用事件和对象状态来描述系统的动态特性 功能模型按照对象的操作来描述如何从输入给出输出结果(数据流图),分析模型 设计模型 实现模型,1、对象模型,对象模型符号表示: 类 关联 I.一般关联: 1对1 :,国家,政府,有,. 关联关系的多重性,公司,雇员,有,1对多:,作家,小说,写,多对多:,电脑,鼠标,装有,1对多:,班,学生,有,1对多:,计算机,屏幕,有,1对多:,80,+1,0或1,. 继承关系 父-子关系,父,子,子,子,人,工人,农民,商人,.集约关系整体-部分关系,脸,嘴,眼,鼻,. 消息关系,O1,O2,O3,动作,例: 每个为公司工作的人都可以领到一份薪水和一项工作。老板评价每个工人的工作表现。,2、动态模型,(1) 对象生命周期,对象的动态行为包括两个方面的内容:,单个对象自身生命周期演化; 整个对象系统中对象间消息传递及相互作用,状态转换图,2、动态模型,状态转换图示例: 电梯运行过程的状态转换图,事件踪迹图,对象间消息传递及相互作用使用事件踪迹图表示 例:打印服务器事件踪迹图,例:电话线通话过程状态图,例:通话事件踪迹图,3、功能模型(数据流图),处理 数据变换或操作,表明数据流入经处理后被变换为输出,数据流 对象或处理的输入输出与另一对象或处理的输入输出之间的连接,表明计算中的中间数据,数据拷贝,聚集数据分解,功能模型(数据流图),施动者 通过产生或使用数据驱动数据流图的主动对象,与数据流图的输入输出联系在一起。,数据存储 数据流图中为后继访问而存储数据的被动对象。与施动者不同,它不产生任何操作,仅对存储和访问数据的请求响应。,功能模型(数据流图),举例 窗口图标显示数据流图,9.3 面向对象设计概述,系统设计 对象设计,面向对象设计阶段在分析模型基础上进行未来软件的系统设计、对象设计,从而得到设计模型,该模型包含了解决问题的方案和策略。是确定问题具体解决方案的过程,1、系统设计,(1)系统层次结构设计,系统设计是以软件方式实现系统功能而进行软件的系统结构设计及 程序实现中的总体的、策略性的解决方案的制定,对软件系统进行的整体划分。水平方向代表系统的不同抽象级别与层次;纵向表明每个层次所提供的功能模块,系统设计,(2)系统数据存储设计,系统中各种数据对象的存储方式设计:内存数据结构、文件、数据库等 如分布环境中对象的存储结构与单机环境下不同、持久对象等,(3)系统资源访问设计,确定需要使用的资源,包括访问机制和访问安全性机制等 如:访问队列等,(4) 网络与分布设计,如何将问题划分给不同节点进行分布式运算,需考虑网络流量、节点计算能力、系统效率,系统设计,(6)互操作设计,(5)并发性设计,并发性控制,多进程、多线程等 文件并行访问,使用临界区、事件、互斥量、信号灯等,相对于Client/Server而言。多个进程之间可能需要为对方提供服务。 可能比较复杂,因为有可能存在平台异构问题。,例外、边界也许要处理,2、对象设计,(1)静态结构设计,根据具体实现策略对分析模型进行扩充,逐步使对象的描述接近软件的最终实现。添加人机交互、数据库及资源访问、网络访问方面的支持。,为软件实现的方便对对象模型所给出的结构进行重构,将一些对象合并或拆分。考虑复用、可维护性等。,(2) 动态行为设计,9.4 经典分析和设计方法介绍,OMT OOD RDD OOAD OOSE,采用面向对象技术进行分析和设计的软件开发方法很多,各种方法都有各自的特点。,1 OMT分析综述,OMT,在关系数据库设计的实体关系模型的基础上扩展了类、继承和行为等概念得到。,需求的描述,而不是问题的解决。 哪些特性可选、哪些必需 从模糊的设计和实现需求中分离出正确的需求,2 问题描述,目的: 描述需求,解决做什么,而不是怎样做的问题。 任务: 描述问题范围、需求(将实现的功能)、特性,设计一个支持银行网络系统的软件,这个网络,包括出纳员和ATM自动取款机,由联营银行共享。每个银行提供各自的计算机来维护它的帐务和处理面临的事物。出纳工作站属于各银行,且直接与银行的计算机通信。人工出纳员输入帐务和处理数据。自动取款机与中央计算机通信,中央计算机分理事物到相应的银行。自动取款机接受现金卡,与用户交互,与中央系统通信并完成事物处理,分配现金和打印收据。系统需要恰当的记录和安全保证。系统必须正确控制并发访问同一账号,银行将提供自己的计算机软件;请为ATM和网络设计软件。共享系统的费用根据现金卡客户的数量由各银行分担。,3 类的识别,与类对应的经常是问题描述中的名词,保留正确类,冗 余 类: 对描述同一信息的多个类只保留一个。如:客户与用户 无 关 类: 删除与所述问题无关的类。如费用的分担不在ATM事物处理范围内 模 糊 类: 边界不明显或范围过宽。如系统、 属 性: 用于描述对象性质的名词为属性。应具体分析,如:房间 操 作: 带有动词性质的名词有时为动作,应描述为操作。如:传呼 角 色: 类名应反映事物固有性质,而不是关联中的角色。如:拥有者、驾驶员 实现结构: 脱离实际的结构在分析模型中删除。如:子程序、数据库结构、数组等,制定数据字典,银行 计算机,中央 计算机,账户,现金卡,ATM,出纳员,业务,客户,出纳 工作站,联营,银行,账户: 银行中的一个户头,与交易中使用的账户类似。账户可能有许多不同的类型,至少有支票账户和储蓄账户两类。一位客户可以拥有不止一个账户 ATM: 允许客户用现金卡做为身分证明进入自己的账户的一种机器。ATM与客户交互,通过收集业务处理信息,并把该信息送至中心计算机和方式证明客户的合法性后进行处理,把现金分配给客户。 银行: 一个金融机构,它代管客户帐目,发行现金卡给客户并授权客户可以通过ATM网络进入自己的账户,存取现金等 出纳员: 应行雇员。被授权把业务信息输入出纳工作站. 业务: 客户对账目的一个单一而完整的操作要求. .,4 关联的识别,关联常对应于静态动词或动词短语 常见的有:,实 际 位 置 : 下接,其中一部分, 包含在,在.之上 引 导 动 作 : 驱动,驾驶 通 信: 与.交谈 拥 有: 有,其中一部分 满足的条件: 为.工作,与.结婚 通信、拥有、,与类的识别过程类似,识别关联时首先将问题描述中的所有可能的关联(动词短语)列表,然后逐条删去不正确的关联,保留正确的。,银行网络包括出纳员和ATM 联营共享ATM 银行提供银行计算机 ATM与中央计算机通信 银行有出纳工作站 出纳工作站与银行计算机通信 银行雇佣出纳员 . ,建立关联,由.组成,持有,通信,拥有,通信,通信,拥有,雇佣,涉及,存取,有,被授权,进入,被进入,拥有,进入,银行,联营,中央 计算机,ATM,远程业务,出纳业务,现金卡,银行代码,出纳 工作站,出纳员,银行 计算机,发 行,帐户,拥有,客户,涉及,建立关联,由.组成,持有,通信,拥有,通信,通信,拥有,雇佣,涉及,存取,有,被授权,进入,被授权,拥有,进入,银行,联营,中央 计算机,ATM,远程业务,出纳业务,现金卡,银行代码,出纳 工作站,出纳员,银行 计算机,发 行,帐户,拥有,客户,涉及,5 识别属性,属性通常对应于所有格短语修饰的名字,汽车的颜色是蓝色的,光标的位置是.,xxx的出生年月,xxx的身高是.,属性众多,只需考虑与特殊应用直接相关的属性,其他待以后添

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论