第五章 面向对象的概念(1.1)

1.1、对象

万事万物皆为对象,对象是具体的,能看的见、摸得着的任何物品都是对象;甚至是看不见、摸不着的的事物也是对象。
对象的特点:

  1. 对象的状态(属性);
  2. 对象的行为(方法);

1.2、类

具有相同的状态行为的一组对象的集合,且类是抽象的。

例如:
有一组对象,他们都具有姓名、身高、体重、学号这些状态(属性),并且他们也都具有听课、做作业这些行为,他们便可以归纳为同一类,即学生类。

1.3、面向对象

面向对象是程序开发人员认识、理解世界的世界观和方法论。

面向对象的基本哲学是,世界是由各种各样具有自己的内部状态(属性)和运动规律(行为)的对象所组成的;不同对象之间的相互作用和通讯构成了完整的现实世界。

从方法论的角度可以认为,在描述世界的过程中,使用的模型或系统的结构应该直接与现实世界的结构相对应,应该围绕现实世界中的对象来构造模型或系统,通过对象的相互作用来反映世界的运行过程。这样建立起来的系统才最符合现实世界的本来面目。

面向对象的思想已经涉及到软件开发的各个方面。

  1. 面向对象的分析(OOAObject Oriented Analysis);
  2. 面向对象的设计(OODObject Oriented Design);
  3. 面向对象编程(OOPObject Oriented Programming

1.4、面向对象程序设计

面向对象程序设计Object Oriented DesignOOD)是一种基于面向对象思想的计算机软件设计方法,是目前软件开发的主流方法。

面向对象程序设计指的是,在设计一个软件系统时,尽可能运用人类的自然思维方式,将问题域中的事物抽象地表示为系统中的对象,作为系统的基本构成单位,使系统直接地映射问题域,保持问题域中事物及其相互关系的本来面貌。

已标记关键词 清除标记
相关推荐
本资源是以压缩包的形式的, 里面是一个 “TXT”的文档, 文档中 有“百度云” 分享的链接, 这本书太大,上传不上来,所以以这样的方式上传。永久有效,欢迎下载。 本书作者: (美)Kayshav Dattatri 出版社:人民邮电出版社 内容简介: 《C++面向对象高效编程(第2版)》以帮助读者掌握C++面向对象高效编程范式为目的,详细介绍了C++编程中的各种概念和应用技巧。全书共分为两部分,第一部分(第1至第10)介绍面向对象编程的基础和应用,如数据抽象、继承、泛型类型、异常处理等内容;第二部分(第11至第13)深入探讨如何建立抽象及其策略,并研究了C++对象模型。书中包含大量的代码实例,读者不仅能从理论上得以提高,而且还能轻松地在实践中应用。 《C++面向对象高效编程(第2版)》适用于C++程序员,也可供对面向对象程序设计感兴趣的编程人员及大专院校计算机专业师生参考。 作译者 Kayshay Dattatri当前是CISCO公司的一名高级技术主管,在此之前,曾以项目负责人、技术主管的身份供职于网景公司(Netscape CommunicationS)和 Taligent公司,主要从事前沿Web技术、面向对象(OO)应用开发框架的研究。他还是面向对象设计和C++领域的独立顾问/培训师,而且在操作系统、OO架构、 OO语言(包托C++、Smalltalk、Eiffel和Modula—2)等领域有25年以上的从业经验。除此之外,他还是加州大学伯克利扩展(Berkeley Extension)项目的知名讲师,而且凭借其渊博的学识和在教学方面的天分备受欢迎。Kayshav早在1987年,就开始使用C++进行编程了。 部分节目录: 《C++面向对象高效编程(第2版)》 第一部分 概念、实践和应用 第1 什么是面向对象编程 1 1.1 背景 1 1.1.1 面向过程编程示例 2 1.1.2 银行账户的表示 3 1.1.3 银行账户的安全 4 1.1.4 用面向对象编程解决问题 5 1.2 理解对象模型 7 1.3 术语 8 1.4 理解消息、方法和实例变量 8 1.4.1 对象中包含的内容 9 1.4.2 实例化(或创建)对象 11 1.5 什么可以作为类 11 1.6 什么不是类 12 1.7 类的目的 13 1.8 深入了解对象 15 1.8.1 对象的状态 15 1.8.2 对象状态的重要性 15 1.8.3 谁控制对象的状态 17 1.8.4 对象的行为 18 1.9 面向对象软件开发的阶段 18 1.9.1 面向对象分析(OOA) 18 1.9.2 面向对象设计(OOD) 20 1.10 面向对象编程(OOP) 21 1.11 对象模型的关键要素 21 1.12 OOP范式和语言 24 1.13 面向对象编程语言的要求 24 1.14 对象模型的优点 25 1.15 小结 26 第2 什么是数据抽象 27 2.1 接口和实现的分离 30 2.2 对象接口的重要性 31 2.3 实现的含义 32 2.4 保护实现 32 2.5 数据封装的优点 34 2.6 接口、实现和数据封装之间的关系 35 2.7 数据封装注意事项 36 2.8 确定封装的内容 36 2.9 抽象数据类型 37 2.10 抽象数据类型——栈的实现 38 2.11 C++中的数据抽象 40 2.12 类中的访问区域 41 2.13 和类一起使用的术语 47 2.14 类的实现者 48 2.15 实现成员函数 49 2.16 识别成员函数的目标对象 49 2.17 程序示例 52 2.18 对象是重点 53 2.19 对接口的再认识 53 2.20 什么是多线程安全类 55 2.21 确保抽象的可靠性——类不变式和断言 57 2.21.1 类不变式 57 2.21.2 前置条件和后置条件 57 2.21.3 使用断言实现不变式和条件 59 2.21.4 高效使用断言 60 2.22 面向对象设计的表示法 60 2.23 Booch表示法 61 2.24 Booch中类的关系 61 2.24.1 关联 62 2.24.2 聚集(has-a) 62 2.24.3 “使用”关系 65 2.24.4 继承关系(is-a) 66 2.24.5 类范畴 66 2.25 统一建模语言(UML) 67 2.26 UML中类的关系 68 2.27 关联 69 2.27.1 作为聚集的关联 71 2.27.2 OR关联 72 2.28 组合 72 2.29 泛化关系(is-a) 74 2.30 has-a关系的
目录 第1 入门 1.1 背景 1.2 编程简史 1.3 方法学 1.4 关于本书 第Ⅰ部分 设置场景 第2 对象的概念 2.1 引言 2.2 什么是对象 2.3 相同还是相等 2.4 描述对象 2.5 封装 2.6 关联和聚合 2.7 图和树 2.8 链接和可导航性 2.9 消息 2.10 启动操作 2.11 协作示例 2.12 面向对象程序的工作原理 2.13 垃圾收集 2.14 类 2.15 类定义的内容 2.16 共享数据和共享操作 2.17 类型 2.18 术语 2.19 重用代码 2.20 小结 2.21 课外阅读 2.22 复习题 2.23 练习1的答案 2.24 复习题答案 第3 继承 3.1 引言 3.2 设计类层次结构 3.3 给类层次结构添加实现代码 3.4 抽象类 3.5 重定义方法 3.6 实现栈类 3.7 多重继承 3.8 使用继承的规则 3.9 小结 3.10 课外阅读 3.11 复习题 3.12 复习题答案 第4 类型系统 4.1 引言 4.2 动态和静态类型系统 4.3 多态性 4.4 动态绑定 4.5 多态性规则 4.6 类型转换 4.7 显式类型转换 4.8 使用模板进行泛化 4.9 小结 4.10 课外阅读 4.11 复习题 4.12 练习2的答案 4.13 练习3的答案 4.14 复习题答案 第5 软件开发的方法学 5.1 引言 5.2 软件开发中的经典阶段 5.3 软件工程和瀑布方法学 5.4 新方法学 5.5 面向对象的方法学 5.6 Ripple概述 5.7 小结 5.8 课外阅读 5.9 复习题 5.10 复习题答案 第Ⅱ部分 理解问题 第6 收集需求 第7 分析问题 第Ⅲ部分 设计解决方案 第8 设计系统体系结构 第9 选择技术 第10 设计子系统 第11 可重用的设计模式 第12 指定类的接口 第13 不间断的测试 附录A Ripple小结 附录B iCoot案例分析 附录C UML表示法小结
1.1 习题参考解答 第2 C++的初步知识 2.1 习题参考解答 2.2 上机实验题参考解答 第3 类和对象 3.1 习题参考解答 3.2 上机实验题参考解答 第4 类和对象的进一步讨论 4.1 习题参考解答 4.2 上机实验题参考解答 第5 继承与派生 5.1 习题参考解答 5.2 上机实验题参考解答 第6 多态性与虚函数 6.1 习题与参考解答 6.2 上机实验题与参考解答 第7 运算符重载 7.1 习题参考解答 7.2 上机实验题参考解答 第8 模板 8.1 习题参考解答 8.2 上机实验题参考解答 第9 C++的输入和输出 9.1 习题参考解答 9.2 上机实验题参考解答 第10 异常处理和命名空间 10.1 习题参考解答 10.2 上机实验题参考解答 第11 综合设计与实现 11.1 习题参考解答 11.2 上机实验题参考解答 1.1 习题参考解答 【1.1】 【解】 面向过程程序设计的主要特征是:程序由过程定义和过程调用组成(所谓过程,简单地说,就是程序执行某项操作的一段代码,函数是最常用的过程。),从这个意义出发, 基于面向过程的程序可以用以下的公式来表述: 程序 = 过程 + 调用 【1.2】 【解】 面向过程程序设计中普遍采用的优化方法是使用结构化程序设计方法,其局限性至少有以下几个方面: (1) 面向过程程序设计方法开发软件的生产效率低下 (2) 面向过程程序设计方法难以应付日益庞大的信息量和多样的信息类型 (3) 面向过程程序设计方法难以适应各种新环境 【1.3】 【解】 面向对象程序设计是一种新的程序设计范型。这种范型的主要特征是: 程序 = 对象 + 消息 对于面向对象的程序设计,程序员注重的是类的设计和编写,即问题域中涉及几个类,各个类之间的关系如何,每个类包含哪些数据和函数(操作代码),再由类生成其对象。程序中的一切操作都是通过向对象发送消息来实现的,对象接收到消息后,启动有关方法(通过成员函数)完成相应的操作。 【1.4】 【解】 现实世界中的对象,具有以下特性: (1) 有一个名字:每一个对象必须有一个名字,称为对象名,以区别于其他对象; (2) 有一组属性:用属性来描述它的某些特征,一般可以用数据来表示,所有的属性都有值; (3) 有一组行为: 对象的行为或功能也称为方法,一般用一组操作来描述; (4) 有一组接口:除施加于对象内部的操作外,对象还提供了一组公有操作用于与外界接口,从而可以与其他对象建立关系。 【1.5】 【解】 在面向对象程序设计中,对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体。“类”就是具有相同的数据(属性)和相同的操作代码(函数)的一组对象的集合。 类和对象之间的关系是抽象和具体的关系。类是多个对象进行综合抽象的结果,一个对象是类的一个实例。 【1.6】 什么是消息? 【解】面向对象程序设计技术必须提供一种机制允许一个对象与另一个对象的交互。这种机制叫消息传递。一个对象向另一个对象发出的请求被称为“消息”。 【1.7】 【解】 在面向对象程序设计中的消息传递实际是对现实世界中的信息传递的直接模拟。调用对象中的函数就是向该对象传送一个消息,要求该对象实现某一行为(功能)。对象所能实现的行为(功能),在程序设计方法中称为方法,它们是通过调用相应的函数来实现的,在C++语言中方法是通过成员函数来实现的。 【1.8】 【解】 在面向对象程序设计中,抽象是通过特定的实例(对象)抽取共同特性后形成概念的过程。C和C++中的数据类型就是对一批具体的数的抽象。例如,“整型数据”是对所有整数的抽象。 封装是面向对象程序设计方法的一个重要特性,所谓封装具有两方面的含义:一是将有关的数据和操作代码封装在一个对象中,各个对象相对独立、相不干扰。二是将对象中某些数据与操作代码对外隐蔽,即隐蔽其内部细节,只留下少量接口,以便与外界联系,接收外界的消息。这种对外界隐蔽的做法称为信息隐蔽。信息隐蔽有利于数据安全,防止无关人员访问和修改数据。 【1.9】 【解】 以面向对象程序设计的观点,继承所表达的是类之间相关的关系。这种关系使得某一类可以继承另外一个类的特征和能力。 若类之间具有继承关系,则它们之间具有下列几个特性: (1) 类间具有共享特征(包括数据和操作代码的共享); (2) 类间具有差别或新增部分(包括非共享的数据和操作代码); (3) 类间具有层次结构。 【1.10】 【解】 从继承源来分,继承分为单继承和多继承。 单继承是指每个派生类只直接继承了一个基类的特征。例如,图1.1表示了一种单继承关系。它表示Windows操作系统的窗口之间的继承关系。
©️2020 CSDN 皮肤主题: 创作都市 设计师:CSDN官方博客 返回首页