1 / 39

软 件 工 程

软 件 工 程. 第四部分 面向对象的软件工程 第 20 章 面向对象的概念和原理. 第 20 章 面向对象的概念和原理. 20.1 面向对象范型 20.2 面向对象概念 20.2.1 类和对象 20.2.2 属性 20.2.3 操作、方法和服务 20.2.4 消息 20.2.5 封装、继承和多态. 第 20 章 面向对象的概念和原理. 20.3 标识对象模型的元素 20.3.1 标识类和对象 20.3.2 刻画属性 20.3.3 定义操作 20.3.4 完成对象定义. 第 20 章 面向对象的概念和原理.

vanna
Download Presentation

软 件 工 程

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 软 件 工 程 第四部分 面向对象的软件工程 第20章 面向对象的概念和原理

  2. 第20章 面向对象的概念和原理 20.1 面向对象范型 20.2 面向对象概念 20.2.1 类和对象 20.2.2 属性 20.2.3 操作、方法和服务 20.2.4 消息 20.2.5 封装、继承和多态

  3. 第20章 面向对象的概念和原理 20.3 标识对象模型的元素 20.3.1 标识类和对象 20.3.2 刻画属性 20.3.3 定义操作 20.3.4 完成对象定义

  4. 第20章 面向对象的概念和原理 20.4 面向对象软件项目的管理 20.4.1 OO的公共过程框架 20.4.2 面向对象项目的度量和估算 20.4.3 一种OO估算和进度安排方法 20.4.4 跟踪面向对象项目的进展 20.5 小结

  5. 20.1 面向对象范型 面向对象程序设计(OOP) 面向对象需求分析(OORA) 面向对象设计(OOD) 面向对象领域分析(OODA) 面向对象数据库系统(OODBMS) 面向对象计算机辅助软件工程(OOCASE) 面向对象分析(OOA) 面向对象测试(OOT)

  6. 20.2 面向对象概念 • 面向对象=对象+分类+继承+通信

  7. 类(class) • 类是具有共同属性和行为的对象的抽象 • 类封装对描述某些现实世界实体的内容和行为所需的数据和过程抽象 • 类是一个描述一组相似对象的一般性描述 • 类与对象的关系 • 类是对象的抽象 • 对象是类的实例 类 对象

  8. 对象(object) 现实世界中某个具体的物理实体或概念在计算机逻辑中的映射和体现。 对象具有的含义: • 在现实世界中: 是客观世界中的一个实体 • 在面向对象程序中: 表达成计算机可理解、可操纵、具有一 定属性和行为的对象 • 在计算机世界中: 是一个可标识的存储区域

  9. 对象、实体与类 现实世界 计算机世界 影射 对象 实体 实 例 化 抽 象 抽 象 概念世界 计算机逻 辑的实现 抽象数据类 类

  10. 属性被附于类和对象,并且它们以某种方式描述类或对象,可被视为在类和某确定域间的二元关系。属性被附于类和对象,并且它们以某种方式描述类或对象,可被视为在类和某确定域间的二元关系。 操作、方法和服务:对象封装数据(表示为属性集合)和处理数据的算法。每个被对象封装的操作提供了对象的行为之一的表示。

  11. 消息(Message) • 消息是一个对象与另一个对象的通信单元,是要求某个对象执行类中定义的某个操作的规格说明。发送给一个对象的消息定义了一个方法名和一个参数表(可能是空的),并指定某一个对象。 • 一个对象接收的消息则调用消息中指定的方法,并将形式参数与参数表中相应的值结合起来。

  12. 封装 • 封装是软件开发方法的重要原则,有两个涵义: • 把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位(对象)。 • 尽可能隐蔽对象的内部细节(信息隐蔽)。

  13. 封装的作用: • 数据和过程的内部实现细节对外界隐藏,减少 当变化发生时副作用的传播。 • 数据结构和操纵它们的操作被合并在单个命名 实体(类)中,便于构件复用。 • 被封装对象见的接口被简化,系统耦合度降低。

  14. 输入 过程1 数据实体 过程2 输出 过程3 传统方法数据与过程是分离的 对象 消息 属于该对象 的数据 消息 处理数据的方法 对象把数据和处理数据的方法封装成一个单元

  15. 传统方法和面向对象方法的比较 传统方法 系统是过程的集合 过程与数据实体交互 过程接受输入并产生输出 面向对象方法 系统是交互对象的集合 对象与人或其它对象交互 对象发送与响应消息

  16. 继承 (继承性inheritance) 父类 共性部分 • 继承性是父类和子类之间共享数据和方法的机制 • 继承性具有传递性 • 继承性包括单继承和多重继承 继承部分 增加部分 子类

  17. 继承性作用 • 使软件系统具有开放性 • 更好地进行抽象与分类 • 增强代码的重用率

  18. 多态(多态性polymorphism) • 不同的对象收到同一消息可产生完全不同的结果,这一现象叫做多态 • 多态的效果  用户发送一个通用的消息,而实现的细节则 由接收对象自行决定。

  19. 多态性的作用 • 增强了操作的透明性,可理解性和 可扩展性 • 增强了软件的灵活性和重用性

  20. 20.3 标识对象模型的元素 对象模型的元素: • 类及对象 • 属性 • 操作 • 消息

  21. 20.3.1 标识类和对象 对象可以是: • 外部实体 • 事物 • 发生的事情或事件 • 角色 • 组织单位 • 位置 • 结构

  22. 抽取其中的名词,我们可以建议一组潜在对象:抽取其中的名词,我们可以建议一组潜在对象:

  23. 6个对象选择特征: 1.保留的信息 2.需要的服务 3.多个属性 4.公共属性 5.公用操作 6.必要的需求

  24. 20.3.2 刻画属性 • 属性描述已经被选择包含在分析模型中的对象。在本质上,正是属性定义了对象——它们阐明了在问题空间中对象意味着什么。

  25. 20.3.3 定义操作 操作定义对象的行为并以某种方式修改对象的属性。 操作分为三类: • (1)以某种方式操纵数据的操作(如,增、删、重格式化、选择) • (2)完成某种计算的操作 • (3)为控制事件的发生而监控对象的操作。

  26. 20.4 面向对象软件项目的管理 1.建立项目的公共过程框架。 2.使用框架和历史度量信息来进行工作量和时间估算。 3.规定工作产品和里程碑,以使得进展可以被测量。 4.定义风险管理、质量保证和控制的检查点。 5.管理当项目进展中总是会发生的变更。 6.跟踪、监控和控制项目进展。

  27. 20.4.1 OO的公共过程框架(CPF) CPF定义了组织的软件开发和维护途径,它标识被 用于建造和维护软件的软件工程范型及需要的任务、 里程碑和可交付产品。它总是可适应的。 递归/并行模型以如下方式工作: • 进行足够的分析以分离出主要的问题类和联系。 • 进行少量的设计以确定类和联系是否可以用实际的方式实现。 • 从库中提取可复用对象建造大致的原型。

  28. 递归/并行模型以如下方式工作: • 通过测试发现原型中的错误。 • 获取客户对原型的反馈。 • 基于从原型、少量设计和客户反馈学到的知识来修改分析模型。 • 精化设计以适应你的修改。 • 开发特殊的对象(从库中得不到的)。 • 用来自库中的和你新创建的对象组装新的原型。 • 进行测试以发现原型的错误。 • 获取客户对原型的反馈。

  29. 20.4.2 面向对象项目的度量和估算 项目度量: • 场景脚本的数量 • 关键类的数量 • 支持类的数量 • 每个关键类的平均支持类数量 • 子系统的数量

  30. 20.4.3 一种OO估算和进度安排方法 1.使用工作量分解、FP分析以及任何其他可应用于传统应用的方法来进行估算。 2.使用OOA(第20章)开发场景脚本并确定脚本数量。注意,场景脚本的数量可能随项目进展而改变。 3.使用OOA,确定关键类的数量。

  31. 20.4.3一种OO估算和进度安排方法 4.划分应用的界面类型并确定支持类的倍数: 将关键类的数量(第3步)和上面的倍数相乘可 得到支持类的数量的估算。

  32. 20.4.3 一种OO估算和进度安排方法 5.将全部类的数量(关键类+支持类)和每个类的平均工作单元相乘,Lorenz和Kidd建议每个类以10-15个人日计算。 6.通过乘上每个场景脚本的平均工作单元,对基于类的估算进行交叉检查。

  33. 帮助进行项目进度安排的度量方法: • 主要的迭代的数量 • 完成的合约的数量

  34. 20.4.4 跟踪面向对象项目的进展 技术里程碑:OO分析完成 ·已经定义和评审了所有类和类层次。 ·已经定义和评审了和类关联的类属性和操作。 ·已经建立和评审了类关系。 ·已经建立和评审了行为模型。 ·已经注释了可复用类。

  35. 技术里程碑:OO设计完成 • 已经定义和评审了子系统集。 • 分配类到子系统并通过评审。 • 已经建立和评审了任务分配。 • (第21章)已标识了责任和协作。 • 已经设计和评审了属性和操作。 • 已经创建和评审了消息传递模型。

  36. 技术里程碑:OO编程完成 • 已经根据设计模型编码实现了每个新类。 • 已经实现了提取出的类(从复用库)。 • 已经建造原型或增量。

  37. 技术里程碑:OO测试 • 已经评审了OO分析和设计模型的正确性和完整性。 • 已经开发和评审了类—责任—协作网络。 • 设计了测试用例,并且已经对每个类进行了类级的测试。 • 设计了测试用例,并且完成集群测试,完成类的集成。 • 完成系统级的测试。

  38. 20.5 小结 对象技术反应了对世界的自然视图。对象按类和类层次 被分类,每个类包含一组描述它的属性和一组定义其行 为的操作。对象几乎模拟了问题域的可标识的全部方面。 封装包装数据和操纵数据的操作到单个命名对象中; 继承使得类的属性和操作可被其所有子类和其实例对象 继承;多态使得一系列不同的操作具有相同的名字,减 少需要用于实现系统的代码行数并方便修改。

More Related