《《面向对象方法》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《面向对象方法》PPT课件.ppt(75页珍藏版)》请在三一办公上搜索。
1、4.6面向对象方法,子 系 统 设 计,类及对象设计,消息设计,责任设计,面向对象设计的四个层次:,4.6.1 将OO分析模型转换到OO设计模型,用例,对象-关 系模型,CRC索引卡片,属性、,子 系 统 设 计,类及对象设计,消息设计,责任设计,分析模型,设计模型,操作、,协作者,对象-行为模型,将分析模型转换为软件设计,数据字典,数据流图,E-R图,状态变迁图,加,工,规,约,控制规约,数,据,对,描 述,象,数 据 设 计,体系结构设计,接口设计,过程设计,分析模型,设计模型,结构化设计的四个层次,数 据 设 计,体系结构设计,接口设计,过程设计,子 系 统 设 计,类及对象设计,消息设
2、计,责任设计,面向对象设计的四个层次,由OO分析模型转换到OO设计模型,用例图类 图交互图状态图,包图,方法描述:if A then Calculate Sales Tax Calculate Total Amount End if,设计带方法的类图,系统内部,保险单,包图示例,客户,保险单填写界面,数据库界面(abstract),Oracle界面,Sybase界面,客户支持系统,客户维护子系统,包图示例,库存管理子系统,订单输入子系统,目录维护子系统,订单执行子系统,客户支持系统,包括设计类的包图示例,客户维护子系统,订单输入子系统,目录维护子系统,订单执行子系统,客户,目录,包,订单条目,
3、订单交易,订单,退货条目,发运人,运输,Fichman和Kemerer提出的10种设计建模成分模块层次的表示数据定义规约过程逻辑的规约端到端处理序列的指明对象状态和变迁的表示类及层次的定义操作到类的赋予详细的操作定义消息连接的规约排它服务的标识,结构化方法所不支持的,OOD的四个层次:子系统层:包含每个子系统的表示类和对象层:包含类层次和每个对象 的设计表示消息层:包含使得每个对象能够和其 协作者通信的细节,建立系 统的外部和内部接口责任层:包含针对每个对象的所有属性 和操作的数据结构和算法的设计,目前流行的OOA方法概述Booch方法Booch的OOD微开发过程概述:系统结构计划战术的设计发
4、布计划,目前流行的OOD方法概述Coad-Yourdon方法Coad-Yourdon的OOD过程概述:问题域部分人机交互部分任务管理部分数据管理部分,目前流行的OOD方法概述Rumbaugh方法(简称OMT)Rumbaugh的OOD过程概述:进行系统设计进行对象设计实现在系统设计中定义的控制机制调整类结构以加强继承性设计消息序列以实现对象关系(关联)包装类和对象为模块,统一的OOD方法UML被组织进两个主要的设计活动:系统设计 系统设计的主要目标是表示软件体系结构对象设计 对象设计着重于对象及其相互交互的描述,软件体系结构可分为四种不同的体系:概念结构 包括部件、互连、原则和性能等代码结构 包
5、括软件的配置管理、系统建造等模块结构 包括模块界面、模块管理、模块控制和一致性等执行结构 包括性能分析、调度分析、动态配置和不同的执行系统之间的接口等,系统设计 系统设计的主要目标是表示软件体系结构。对面向对象开发而言:概念体系结构涉及静态类模型的结构和该模型的构件间的连接。模块体系结构描述系统被分成子系统或模块的方式以及它们如何通过移入和移出数据而通信。代码体系结构定义程序代码如何被组织为文件和目录以及分组为库。执行体系结构关注于系统的动态方面以及任务和操作执行时构件间的通信。,对象设计 对象设计着重于对象及其相互交互的描述。在对象设计期间:属性数据结构和所有操作的过程的详细规约被创建。所有
6、属性的可见性(公共的、私有的或保护的)被定义,对象间的接口被精化以定义完整的消息模型的细节。,OOA与OOD的本质:OOA是一个分类活动,即分析问题力图确定在开发解决方案时可应用的对象类,同时确定对象关系和行为。OOD使得软件工程师能够确定从类中导出的对象,以及这些对象的相互关联,此外,OOD描述了:对象间的关系如何达到;行为如何实现;对象间通信如何实现。,从OOA到OOD,逐渐扩充模型的过程 OOD分为两个阶段:高层设计(系统设计)低层设计(对象设计),OOD过程流,系统设计,分析,对象设计,OOD导出的系统结构,数据管理,其它系统,文件RDBMSOODBMS,设备,系统交互界面,问题论域,
7、人机交互界面,.,.,窗口,报告,子系统设计过程中必须定义四种重要的设计结构问题域直接负责实现客户需求的子系统人机交互实现用户界面的子系统(包括可复用的GUI子系统)任务管理负责控制和协调并发任务的子 系统,任务可能被包装在一个 子系统中或不同的子系统间;数据管理负责对象的存储和检索的子系统,在对象设计过程中将分析模型转换为设计模型,分析模型 类 属性 方法 关系 行为,设计模型 对象 数据结构 算法 消息传递 控制,4.6.2 对象模型技术(OMT)的OOD方法,系统设计过程:将分析模型划分为子系统确定并发性将子系统分配到处理器和任务选择实现数据管理的基本策略标识全局资源及访问它们所需的控制
8、机制为系统定义合适的控制机制考虑边界条件如何处理,系统分解:,子系统既不是一个对象也不是一个功能,而是类、关联、操作、事件和约束的内聚集合。定义子系统遵循的标准:子系统应有良好的接口除少数“通信类”,子系统中的类应只和 该子系统中的其它类协作子系统数目不应太多可在子系统内划分以降低复杂性,划分分析模型,子系统,第三层数据库服务器,第二层后台库服务器,第一层前台客户机,客户端子系统,端子系统,服务器端子系统,端子系统,请求,请求,请求,合约,合约,子系统间通信,子系统间协作的模型,Yourdon的OOD方法,主体层,类及对象层,结构层,属性层,服务层,问题域 部分(PDC),人机交互部分(HIC
9、),任务管理部分(TMC),数据管理部分(DMC),OOD阶段建立,OOA 阶段模型,OOD由四个活动组成:,OOD模型,4.6.3.1 问题域部分的设计,OOA的模型直接放到OOD的问题域部,OOD阶段对OOA结果进行改动和增补。根据需求变化,对OOA产生模型的类与对象、结构、属性、操作进行组合与分解,增加必要的类、属性和关系。,对OOA结果加以增补要考虑的因素,重用设计把问题域专用类组合在一起通过增添一般类而建立协议调整继承的支持级别改进性能增加低层的类和对象,4.6.3.2 人机交互部分的设计,虽然好的人机交互部分不可能挽救一个功能很差的软件,但性能很差的人机交互部分将使一个功能很强的产
10、品变的不可接受!,传感器图形项目,传感器控制系统人机交互部分设计举例,调用项目,传感器状况窗口,显示菜单调用菜单活动,传感器项目,调用项目,传感器报警窗口,显示菜单调用菜单活动,位置,传感器报警项目,调用项目,传感器窗口,坐标,4.6.3.3 任务管理部分的设计,1.为什么要有任务管理部分 系统中有许多并发行为时,需要按照各个行为的协调和通信关系,划分各种任务(进程),简化并发行为的设计和编码。根据动态模型分析、定义并发性;选择软件实现的控制方法。,2.怎样设计任务管理部分任务管理主要包括任务的选择和调整识别事件驱动任务识别时钟驱动任务识别优先任务和关键任务识别协调者审查每个任务定义每个任务,
11、传感器控制系统任务管理部分设计举例,任务协调器,协调,任务,名字描述优先级服务协调通信,初始化开始准备好结束,1,0,m,传感器任务描述举例,任务1名字:传感器读出。描述:该任务在需要脉冲调幅时负责读 出传感器。包含:传感器.样本。优先级:中等。协调:时钟驱动,100ms的时间间隔。通信:从输入线(传感器)得到值,给雷达邮箱发送值。,4.6.3.4 数据管理部分的设计,数据管理部分提供了数据在数据管系统中存储和检索对象的基本结构,它分离了数据管理方案的影响(不管该方案是普通文件、关系型数据库、面向对象数据库或其它方式.),如何设计数据管理部分(1)数据存放方法设计(2)相应服务的设计 为每个需
12、存储其对象的类增加一个属性和服务,面向对象设计实例:简化的C+类库管理系统需求描述:管理用C+语言定义的类用户能够方便地向类库中添加新类,并建立新类与库中原有类的关系用户能够通过类名从库中查询出指定的类用户能够查看或修改与指定类有关的信息用户能够从类中删除指定的类用户能够在浏览窗中方便、快速地浏览当前类的父类和子类具有“联想”浏览功能用户能查看或修改某个类的指定的成员函数的源代码本系统是一个简化的多用户系统,每个用户都可以建立自己的类库,不同类库之间互不干扰对于用户误操作或错误的输入,能提示并继续稳定运行系统易学,用户界面应是GUID的,OOA阶段建立的类库管理系统对象模型,类库,库名类条目列
13、表,插入类条目删除类条目,1+,0,n1,类条目,类名父类列表,设置类名添加父类,成员函数,函数名访问权虚基类标志,父类,名字访问权虚基类标志,数据成员,数据名访问权数据类型,0,n2,0,n3,0,m,用户,拥有,面向对象设计(简化的C+类库管理系统)设计类库结构 两种可把类条目组织成类库得数据结构:二叉树链表:容易表示多重继承设计问题域子系统对对象模型做补充和细化类条目(ClassEntry)类库(ClassEntryLink)父类(ClassBase)、成员函数(ClassFun)和数据成员(ClassData)类条目缓冲区(ClassEntryBuffer),类条目,类名父类列表成员函
14、数列表数据成员列表,类条目,类名父类链表头指针成员函数链表头指针数据成员链表头指针注释指向下一类条目指针,新增数据成员,新增操作,设置类名添加父类删除父类更改父类添加成员函数删除成员函数更改成员函数添加数据成员删除数据成员更改数据成员查找并取出指定父类信息查找并取出指定成员函数信息查找并取出指定数据成员信息,设置类名添加父类删除父类更改父类添加成员函数删除成员函数更改成员函数添加数据成员删除数据成员更改数据成员,具体化,类库,库名类条目列表,插入类条目删除类条目存储类库读出类库,具体化为,类库,库名类链头指针,插入类条目删除类条目把内存中类链表写到文件读文件并在内存建立链表按类名查找类条目并把
15、内容复制到指定地点,新增操作,具体化,父类,名字访问权虚基类标志,新增数据成员,父类,名字访问权虚基类标志指向下一个父类的指针,成员函数,函数名访问权虚基类标志返回值类型参数代码,新增数据成员,成员函数,函数名访问权虚基类标志返回值类型参数代码指向下一个成员函数的指针,数据成员,数据名访问权数据类型,新增数据成员,数据成员,数据名访问权数据类型指向下一个数据成员的指针,类库(ClassEntryLink)示意图,下一个ClassEntry,ClassEntryLink,ClassEntry,ClassBase,ClassData,ClassFun,下一个ClassBase,下一个ClassFu
16、n,下一个ClassData,类条目缓冲区(ClassEntryBuffer)为便于处理当前类,额外设置类条目缓冲区,它是从ClassEntry类派生出来的类,除继承ClassEntry中的数据成员和成员函数外,主要增加用于域窗口或类链交换数据的成员函数,ClassEntry,ClassEntryBuffer,面向对象设计(简化的C+类库管理系统)设计人机交互子系统窗口登录窗口(用户输入账号、确认/放弃)主窗口(创建/浏览/存储/退出)创建窗口(输入新类名/选择已有类名,三个分组框分别管理父类、成员函数和数据成员,每组框有:添加/编辑/删除)选择浏览方式窗口(按类名浏览/按类关系浏览)类名浏览
17、窗口类关系浏览窗口重用:基于VC开发环境,尽可能重用MFC中类设计其它类,ClassBase,CWinApp,ClassToolsApp,CDocument,ClassEntryLink,ClassEntry,0,M,ClassFun,ClassData,ClassEntryBuffer,0,n1,0,n2,0,n3,OOD得出的类库管理系统对象模型,Create_Data,CDialog,Create_Base,Create_Fun,Browse_Name,Browse_Inherit,Login,Classtools,Create_Class,Create_Select,消息连接,软件体系
18、结构的有关概念,什么是软件体系结构,软件体系结构定义了软件局部和总体计算部件的构成,以及这些部件之间的相互作用关系。从整体看,软件体系结构是由结构和功能各异、相互作用的部件集合,按照层次构成的。它包括了系统基础构成单元、它们之间的作用关系、在构成系统时它们的合成方法以及对合成约束的描述。,软件体系结构的类别,概略型需求型设计型,软件体系结构的重要性,规划阶段需求分析阶段设计阶段实施阶段评估阶段维护升级阶段,软件设计的目标,设计应该是便于维护和升级的,因而应该是模块化的设计应该是便于移植的设计应该具有适应性设计过程应该受到理性化的控制设计应该表现出概念的完整性,软件设计思想,强调信息隐蔽的单元概
19、念应用基于操作和数据封装构成的单元设计技术应用专门的机制可靠地处理并发控制和分布系统问题提出基于模型的系统结构和设计方法明确提出软件体系结构的设计思想,关于软件体系结构的认识发展,1992年,Dewayne Perry和Alex Wolf定义:软件体系结构由具有一定形式的结构化元素组成,包括处理元素、数据元素和连接元素三类。1993年,David Garlan和Mary Shaw提出:软件体系结构是设计过程的一个层次,它处理那些超越算法和数据结构的设计,研究整体结构和描述方法。体系结构还包括大体组织结构、全局控制结构、通信和同步以及数据存取的协议、设计元素的功能、物理分布和合成、设计方案的选择
20、等。,关于软件体系结构的认识发展,1994年,Bass等提出:软件体系结构可以由三个方面描述:功能划分、结构和功能到结构的分配。1995年,Garlan和Perry 提出:软件体系结构包括系统构件的结构、构件的相互关系、以及控制构件设计演化的原则和指导三个方面。1997年,Bass、Clements和Kazman指出:软件体系结构包括部件、部件的外部可见性以及相互关系。,普通部件及其支持的相互作用,软件体系结构可分为四种不同的体系:概念结构 包括部件、互连、原则和性能等代码结构 包括软件的配置管理、系统建造等模块结构 包括模块界面、模块管理、模块控制和一致性等执行结构 包括性能分析、调度分析、
21、动态配置和不同的执行系统之间的接口等,与软件体系结构有关的研究:体系结构风格(Architecture Styles)表示软件系统的一种特别的基本结构,以及相关的构造方法设计模式(Design Patterns)构造型模式、结构型模式、行为型模式框架(Framework)另一种研究和构造软件体系结构的方法,更多的是关于应用领域问题的已建立的系统结构。,软件体系结构的层次结构,软件的构成软件的物质基础软件的结构基础软件的层次结构模型软件体系结构的层次结构模型软件体系结构的体系,软件的构成,软件体系结构需要基础软件体系结构需要层次软件体系结构需要模式,软件的物质基础,软件设计的物质基础是计算机硬件
22、,当前的计算机硬件决定了软件设计和实现的出发点,计算机硬件的发展影响着软件体系结构。,计算机硬件体系结构分类,SISD单指令流单数据流计算机,控制,处理,存储,指令,数据,指令,计算机硬件体系结构分类,SIMD单指令流多数据流计算机,控制,处理2,存储2,指令,数据2,存储1,存储n,处理1,处理n,数据1,数据n,计算机硬件体系结构分类,MISD多指令流单数据流计算机,控制2,处理2,存储2,指令1,存储1,存储n,处理1,处理n,数据,数据,控制1,控制n,指令2,指令n,指令1,指令2,指令n,计算机硬件体系结构分类,MIMD多指令流多数据流计算机,控制2,处理2,存储2,指令1,存储1
23、,存储n,处理1,处理n,控制1,控制n,指令2,指令n,指令1,指令2,指令n,数据2,数据1,数据n,多处理机系统,具有共享存储结构的多处理机,控制,处理,MAP,控制,处理,MAP,存储,存储,互连网络,通道,I/O,通道,I/O,多处理机系统,具有分布存储结构的多处理机,控制,处理,MAP,控制,处理,MAP,互连网络,I/O,存储,存储,分布计算系统,分布计算网络,交换机,交换机,电信网络,网络,软件的结构基础,结构控制流部件连接方式结构化连接模式基本数据类型抽象数据类型进程及运行环境分时并发计算资源共享/并行同步实时系统软件结构的四视图观,软件体系结构的四视图,概念视图,模块视图,
24、代码视图,运行视图,部件连接器配置,模块子系统层,模块限制,新模块分割,部件连接器配置,运行限制,新模块分割,模块,变化成运行实体,运行实体,源代码,硬件和操作系统体系结构,软件的层次结构模型,计算机网络的体系结构计算机操作系统的体系结构,软件体系结构的层次结构模型,第6层:应用层,第5层:系统结构模式层层,第4层:资源和管理调度层,第3层:基础控制描述层,第2层:软化的硬件层,第1层:计算机硬件层,软件体系结构的设计原理,抽象封装信息隐蔽模块化注意点分散(Separation of Concerns)耦合和内聚充分性和原始性策略和实现的分离接口和实现的分离分而制之(Divide-and-conquer)层次化,软件的非功能特性,可变性/可维护性 可变性包括:可维护性 可扩充性 可重构性 可移植性互操作性效率可靠性:容错性 健壮性可测试性可重用性,