




已阅读5页,还剩51页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向对象分析与设计 复习提要 软件学院2010 12 25 第一部分面向对象技术的基本概念和基本方法 1 1软件开发方法的发展计算机诞生之后 计算机技术一直处于高速发展状态 计算机科学技术的发展由原来只依靠硬件的发展逐渐变为更多地依靠软件的发展 事实上 软件技术的发展经历了多代历程 第一代 20世纪50 60年代 是以FORTRAN和ALGOL等编程语言为标志的算法技术时代 那时 程序设计全靠人们发挥创造才能 全靠技巧和窍门 基于这种算法技术的软件生产率非常低 程序很难看懂 甚至程序员自己写的程序过一段时间后自己也看不懂 这给软件的修改 维护带来极大的困难 于是60年代末出现了 软件危机 第二代 20世纪70年代末开始到80年代盛行的 以PASCAL COBOL等编程语言和关系数据库管理系统为标志的结构化系统分析和设计技术 为了克服软件危机 人们主要从如下两个方向做了努力 一是从管理的角度改进软件开发方法 提出了软件工程方法 大大改善了软件的质量与可维护性 二是侧重于对软件开发过程中分析与设计方法的研究和改进 这方面的重要成果就是在70年代出现了风靡一时的结构化开发方法 结构化系统分析和设计技术 为了改进基于算法技术的软件开发方法 人们提出了软件工程方法 使软件开发工作从只考虑程序的编写技巧转变到利用软件工程的方法 使软件系统的生产过程遵循一系列的规范化步骤 计划 需求分析 设计 编码 测试 运行维护每个阶段都有其明确的任务 任务完成后都将交付给下一阶段一定规格的文档 作为下一阶段开发的依据 这种开发过程直观上就像一级一级的瀑布 所以系统开发生命周期也称为 瀑布模型 软件工程方法大大改善了软件的质量与可维护性 瀑布模型的缺点 1 在项目各个阶段之间极少有反馈 只有在项目生命周期的后期才能看到结果 2 由于软件开发过程是一个非常复杂的过程 在软件开发的每一阶段都有可能留下隐患和错误 如果等到系统已经开发完毕 在测试阶段发现了重大问题 这时的返工就会造成人力 物力 财力及时间上的巨大浪费 当软件需求不明确或不准确时容易出现问题 其他模型 原型模型增量模型螺旋模型 第三代 80年代开始至今还盛行的 以Smalltalk C 等为代表的面向对象软件开发方法 OO 问题1 面向对象软件开发方法发展的动因是什么 传统的结构化程序设计以算法为核心 把本来密切相关的数据和对数据的操作分离开来 很难保持数据和操作的一致性 其软件开发方法也不符合人们的自然思维习惯 设计出来的软件系统其解空间与问题空间不一致 致使程序难以理解 修改和扩充 最终导致程序复杂性问题和软件危机 为了超越程序复杂性障碍 克服软件危机 人们提出了面向对象软件开发方法 问题2 面向对象软件开发方法的优点有哪些 面向对象开发方法一改过去传统的以功能分析和功能分解为基础的面向过程的结构化分析与设计方法 面向对象开发方法模拟人们理解和处理客观世界的方式来分析问题 把系统视为一系列对象的集合 其面向对象的设计又将分析的结果映射到某种面向对象实现工具的结构上 使映射过程有着比较直接的对应关系 使分析者 设计者和编程者都可使用相同的概念 从而使面向对象的软件开发能比较自然地模拟客观世界的活动 使问题描述空间与解空间在结构上尽可能一致 因此 采用面向对象方法可以更有效地开发大型软件系统 面向对象方法的封装 继承 多态等机制不仅支持软件复用 而且使软件维护工作可靠有效 可实现软件系统的柔性制造 更好地克服软件危机 因此 它已成为成熟的广为采用的软件开发方法 到20世纪末 面向对象软件工程逐渐发展成熟 特别是统一建模语言 UML 标准的形成和广泛使用 使面向对象软件开发方法已成为软件开发的主流技术 1 2面向对象的基本概念 1 对象 对象是客观实体的抽象表示 是由描述对象的属性数据和对这些数据进行的操作行为两部分组成 2 类类是具有相同属性和行为的对象集合的抽象描述 类的内部包括属性和行为两个主要部分 3 实例 类是对具有相同属性和行为的一组对象的抽象描述 因此 类可作为一种用户自定义类型和创建对象的样板 而按照这种样板所创建的一个个具体对象就是类的实际例子 通常称为实例 4 消息消息就是请求某个对象执行它所包含的某项处理操作的指令信息 实质是对某个类对象的操作函数的调用 即方法的调用 例如 studentS1 S1 display 是一个消息 一个消息一般由三部分组成 接收消息的对象名 操作函数名 函数的参数 5 面向对象技术的三个基本特征封装性继承性多态性 6 封装性所谓封装就是把对象的属性和行为结合成一个独立的单位 使外界不能直接访问或修改这些数据和代码 外界只能通过对象提供的接口函数来改变或获取对象的属性数据 这就实现了消息隐蔽 7 继承性如果在一个已定义的类上 增加一些特殊属性或操作 可以形成一个新的类 这个类不仅继承了前一个类的全部特征 而且具有新的特性 因此可看作前一个类的特例 是对前一个类的继承 前一个类称为父类 新产生的类叫做子类 通过继承关系可形成一种类层次结构 叫做继承结构 10 多态性定义 在不同类中 可用相同的函数名实现功能不同的函数 多态性的优点 高层代码 算法 只需写一次 低层便可多次复用 可提高程序设计的灵活性和效率 1 3面向对象的分析方法1 面向对象的分析 OOA 是面向对象软件工程方法的第一个环节 包括一套概念原则 过程步骤 表示方法 提交文档等规范要求 2 OOA的基本任务是 运用面向对象方法 对问题域和系统责任展开分析 正确认识其中事物和它们之间的关系 发现描述问题域和系统责任所需要的对象和类 并定义类的属性和服务 以及它们之间所形成的结构和连接 最终的目的是产生一个符合用户需求 并能直接反映问题域和系统责任的OOA模型及其详细说明 为后续的面向对象设计 OOD 和面向对象编程实现 OOP 提供指导 OOA与OOD能够自然地过渡和结合 这是面向对象方法的一个优点 3 面向对象分析的大致步骤如下 1 分析问题域 明确描述用户需求系统问题域说明 应用系统的业务范围系统边界说明 确定系统与用户之间接口系统功能说明 系统需要实现的功能 2 确定对象和类即分析确定并标识构成系统的对象 再对对象进行抽象分类 先把系统看成由一些子系统组成 把每个子系统划分成一个主题 主题是由一组类和对象组成 3 确定系统各部分的分类和组成结构第一是按照一般 特殊关系 标识类间的继承关系 确定分类结构 第二是按照整体 部分关系 标识一个对象是有哪些对象组成 确定组装结构 4 找出并建立每个对象及其相互之间的联系即以应用为基础来标识对象 定义对象的内部特征 属性和方法 建立实例连接和消息连接 消息连接体现了对象间的通信关系和接口协议形式 5 进一步协调和优化模型中各个组成部分 包括类 对象 的性能和相互关系 精炼侯选的类 对象 使系统成为由不同部分组成的最小集合 6 分析和设计模型中每个组成部分 包括类 对象 的功能实现细节 检查分析模型的一致性和完整性 6 OOA模型的建立过程可以划分为五个层次 1 对象 类层划分待开发系统及其环境信息的基本构造单位 标出反映问题域的对象和类 并用符号进行规范的描述 用信息提供者熟悉的术语为对象和类命名 2 属性层定义对象类和某些结构中的数据属性 3 服务层要表示对象的服务或行为 就是要定义类上的操作 列出对象需要做什么 即方法 也给出对象间的消息连接 并应以箭头指示消息从发送者到接受者 4 结构层识别系统中对象之间的结构关系 当一种对象是另一种对象的一部分时 用整体 部分关系表示 当一个类属于另一个类时 用类之间继承关系表示 5 主题层将复杂的系统划分为更小的子系统 每个子系统都由相关类或对象组成 称为一个主题 这样有便于大系统的管理 1 4面向对象的设计初步1 虽然OOA与OOD分两个阶段进行 但它们是紧密结合的 可以很自然地从OOA过渡到OOD 这正是面向对象方法的一个重要优点 OOA与OOD的主要区别是 OOA与问题域更接近 OOD与系统的实现更接近 2 OOD模型可采用扩展OOA模型的方法来得到OOD模型 即在OOA模型横向划分5个层次的基础上 将目标系统纵向划分成4个部分 问题域部分 人机交互部分 任务管理部分 数据管理部分 如下图所示 3 建立OOD模型包括4个部分的工作 1 问题论域部分 在OOA模型的基础上 细化分析结果 设计一组构成底层 即数据层 应用模型的类和对象 2 人机交互部分 设计用户界面模型 该用户界面模型中的类和对象提供实现人机交互操作的接口函数 用户界面设计包括菜单设计 窗口设计 输入 输出界面设计等等 3 任务管理部分 建立一些类 用于处理子系统之间的通讯 并发 活动调度等问题 例如 在多用户交互系统中 几个用户同时与系统进行交互 无法预知哪一个用户是下一个输入者 这些交互活动是并行发生的 需要建立一些专门的类对象来处理 在空中交通控制系统中 系统同时监控着数架飞机 有许多活动在同时发生 对于诸如此类的并发问题 需要建立一些专门的类对象来处理 4 数据管理部分 提供数据管理系统中存储和检索对象数据的基本方案 包括对永久性数据的访问和管理方式 数据管理设计包括 数据存放设计 数据存放设计选择数据存放的方式 文件存放 关系数据库表格存放或面向对象的数据库存放 设计相应的操作 为每个需要存储的对象和类增加用于存储管理的属性和操作 在类和对象的定义中加以描述 4 什么是优良的OODOOD的关键工作是确定对象 类及其联系 一个优良的OOD应具备如下基本条件 1 继承耦合应尽可能紧密 2 类与类之间的耦合应该很松散 3 信息隐藏某个类的数据实现细节对于别的类来说应该是隐藏的 4 设计应该具有最优的可重用性 5 尽力使类 对象和方法的定义具有简单性 6 对所设计的类和类族 应注意保持其协议或接口的稳定性 7 类的层次结构设计规模适度 不要太深或太浅 8 系统整体规模的最小化 习题1 试述面向对象技术的发展动因和优点 2 面向对象设计技术具有哪些特性 或机制 3 解释下列术语的含义 类对象消息方法继承性多态性封装性泛化特化抽象分类4 建立一个校园信息管理系统 其主要功能就是对在校人员 包括学生和教师 的信息资料进行管理 1 试着按OOA步骤做系统分析 2 画出类的层次图 第二部分面向对象程序设计 一 复习内容第2章C 语言基础第3章类与对象的构造设计第4章继承性与派生类第5章多态性与虚函数第6章文件的输入与输出 二 复习要点 0C 语言程序结构例如 编程打印一个5 5点阵 include stdio h classmatrix private intrown intcolm public voidshow inti j for i 1 i rown i for j 1 j colm j printf c voidmain matrixM 5 5 M show 1 面向对象技术的三大机制 特征 1 封装机制和类的设计所谓封装就是允许将对象的属性数据和操作方法结合成一个独立的单位 使外界不能直接访问或修改这些数据和代码 外界只能通过对象提供的接口函数来改变或获取对象的属性数据 这就实现了消息隐蔽 在c 中 类是支持数据封装的工具 即允许设计类来抽象描述一组具有相同特性和行为的对象 即类中可以封装一组对象的共同属性和方法 类是具有相同属性和行为的对象集合的抽象描述 类的内部包括属性和行为两个主要部分 由此可见 类是实现数据封装的工具 对象则是数据封装的实现 没有封装 就没有面向对象技术 类成员访问的原则是 1 定义一个类时 数据成员和成员函数的默认访问权限是私有成员 2 成员函数可直接访问同类中的成员变量和调用同类中的成员函数 不用在函数名前加上对象名 3 私有成员或受保护成员的作用域仅限于类的说明体和类的成员函数 非成员函数应定义为类的友员函数才能访问这个类的私有成员 4 公用成员的作用域不但包括类说明体 还包括它所属对象的使用范围 可以在类外访问公用成员 但必须在成员名前加上对象名 5 运算符重载函数可以是类的成员函数 也可以是类的友元函数或普通函数 2 继承机制与派生类的定义所谓继承就是允许在一个已有类上 增加一些特殊属性或操作 来派生成新的类 这个派生类不仅可以继承基类成员 而且可以定义新的成员 因此可看作前一个类的特殊类 前一个类称为父类 新产生的类叫做子类 通过继承关系可形成一种类层次结构 叫做继承结构 继承是类之间共享属性与服务的一种机制 classperson 基类 protected charname 11 charsex intage public person cout person endl person cout deleteperson endl intGetage return20 classStudent publicperson private charid 9 floatscore public student cout student endl student cout deletestudent endl intGetage return30 floatGetScore voidmain person p students p 运行结果 personstudent20deletestudentdeleteperson 3 多态性机制与虚函数的定义多态性是指在类层次结构的相同类或不同类中 可用相同的函数名实现功能不同的操作 从而可以使用相同的调用方式来调用这些具有不同功能的同名函数 例如p display 运行时多态 在类的继承层次结构中 不同层次的类中可能具有同名但实现不同的函数 需要在运行阶段才能根据对象所属的层次来确定调用哪个类中的同名函数 只有将同名函数说明为虚函数 通过对象指针或对象引用来调用虚函数 才能实现运行时多态 例5 2静态联编和动态联编的应用 includeclassStudent public virtualvoidprint cout Astudent endl classGStudent publicStudent public virtualvoidprint cout Agraduatestudent endl voidmain Students1 ps GStudents2 s1 print s2 print s2 Student print ps AstudentAgraduatestudentAstudentAstudentAgraduatestudent 第三部分UML及其应用 1 UML体系包括三个部分 1 UML基本构造块 基本模型元素 2 UML规则 支配构造块如何放在一起构成模型的规则 3 UML公共机制 详细说明 修饰 通用机制和扩展机制 2 UML中的事物包括 结构事物 包括类 接口 用例 构件和节点等 分组事物 包 注释事物 注解 和动作事物 交互和状态图 2 用UML描述的系统模型是由一个或多个视图组成的 UML提供了9种视图 用例图 类图 对象图 组件图 配置图 序列图 协作图 状态图和活动图 可以将上述9种图分为用例图 静态视图和动态视图 如下图所示 也可以将UML的9种视图分成五类图 UML的内容就是由这五类图来定义 第一类是用例图 从用户角度描述系统功能 并指出各功能的操作者 第二类是静态图 Staticdiagram 描述系统的静态结构 包括类图 对象图 第三类是行为图 Behaviordiagram 描述系统的动态模型和参与活动的对象间的交互关系 包括活动图和状态图 第四类是交互图 Interactivediagram 描述对象间的交互关系 包括序列图和协作图 第五类是实现图 Implementationdiagram 包括组件图和配置图 实现视图 3 用例图用例图的定义 定义用例图是从用户使用系统的角度描述系统功能的图形表达方法 一个用例 UseCase 是用于描述系统的某项功能需求的手段 它能准确地表达活动者与系统的交互情况和系统提供的某项服务 UseCase的联系UseCase除了与活动者有联系以外 UseCase之间也存在着一定的联系 包括 a 泛化联系 一个特殊的UseCase与另一个更一般的UseCase的联系 b 使用联系 指一个UseCase使用另一个UseCase的功能行为 c 包含联系 一个基本的UseCase包含了另一个更一般的UseCase的行为 d 扩展联系 指一个基本UseCase可以由另一个UseCase的功能行为来扩展 4 类图的定义类图是表达构成系统的类及其相互联系的逻辑图示 logicview 类图是面向对象设计的核心 建立状态图 协作图和其他图的基础 类与类的关系主要有关联 聚合 组合 泛化 特化 依赖等 5 序列图的定义序列图描述了一组交互对象间的动态协作关系 它表示完成某项行为操作的参与对象和这些对象之间传递消息的时间顺序 序列图由对象类角色 生命线 激活期和消息构成 6 协作图的定义一个系统的行为是由一批对象实现的 这些对象通过交互和协作来完成系统的服务 用来描述实现某些服务所涉及的对象及其相互之间的关系 包括消息通信 的动态视图就称为协作图 Collaboration 可用UML协作图来描绘业务流程 协作图不同于序列图 7 状态图 StatechartDiagram 的定义状态图描述系统运行过程中某类对象可能具有的状态 以及在不同状态间的跳转和触发这些跳转的外部事件 状态图侧重于描述对象在其生命周期中的动态行为 也可用于对反应型对象建模 8 活动图定义 活动图用于描述系统业务流程或工作流程 活动图由一系列的动作状态构成 动作的状态控制可以从一个状态转向另一个与之相邻的状态 活动图还可以表示决策 条件 动作状态的并行执行 消息的规范说明等内容 可用一条条的泳道把活动分成若干组 让一个对象负责一个组 该对象必须履行该组内所包含的活动 注 1 每一个活动状态包含多个动作状态 每一个动作状态由一个语句实现 2 活动图和状态图都是描述对象在生命周期内随时间变化的行为 9 组件图的定义组件是提供了一组接口函数的物理实现模块 它可以是软件开发过程中的产物 如源码 二进制码和可执行码等 它们是类 接口等逻辑模型的物理实现 接口用于描述类或组件的一个服务操作 组件图表示构成系统的物理组件及其相互之间的联系 组件图可表示源代码 数据库 系统 但不表示某类事物实体 组件必须配置在节点上运行 由节点执行 9 基于UML的面向对象系统开发方法也可以分为如下步骤 1 系统需求分析 a 捕获或描述功能性需求和非功能性需求 b 构造系统的用例模型 c 详述用例 2 系统分析转换用例模型 得到描述系统基本结构的分析模型 分析模型是由一系列类和类的实例及其相互关系构成 分析模型中的类也叫分析类 常用方法是使用名词 动词分析法来寻找分析类 分析类有三种 实体类 边界类和控制类 3 系统设计 a 扩充和细化类 进一步扩充分析阶段定义的类 定义新的类来处理技术方面的问题 包括处理非功能性需求 b 为每个用例建立动态模型 包括建立序列图
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 课件时间利用的好处
- 高压水射流清洗工协同作业考核试卷及答案
- 有色金属熔池熔炼炉工岗位操作技能考核试卷及答案
- 近代科技考试题及答案
- 金属学考试题及答案
- 蒸发浓缩结晶工适应性考核试卷及答案
- 三聚氰胺装置操作工基础知识考核试卷及答案
- 交通安全设施工测试考核试卷及答案
- 水产捕捞工工艺考核试卷及答案
- 合成洗涤剂制造工三级安全教育(公司级)考核试卷及答案
- 2025深圳劳动合同下载
- 政治理论应知应会100题
- 2024年工业机器人系统操作员(高级工)职业技能鉴定考试题库(含答案)
- 2024年宁德监狱囚犯心理咨询服务合同
- 副总经理招聘面试题与参考回答(某大型国企)2024年
- 学校弱电项目施工组织设计方案
- 高中语文语法简略
- 输变电工程测量施工方案
- DBJ33T 1320-2024 建设工程质量检测技术管理标准
- 2023年成人高等考试《民法》(专升本)真题及答案
- 幼教培训课件:《学前儿童常见心理及行为问题的诊断与矫治》
评论
0/150
提交评论