- 1、本文档共34页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
电子科大面向对象程序设计语言C-第一章引论
第一章 引论 1.2 面向对象语言的核心概念 1.2.2 继承 Inheritance 要注意区分的两个概念是:is part of 和 is kind of,只有后者才是继承的概念。 Kind of Mercedes is a kind of car. Part of Wheels are part of a Mercedes. Wheel is not a kind of car. * 第一章 引论 1.2 面向对象语言的核心概念 1.2.3 多态性 Poly-morphism 所谓多态,是指一个名字(或符号)具有多种含义。 用户在使用函数编程时,关心的是该函数的功能及其使用接口,并不需要了解该函数的使用接口与函数的哪一种实现方法相匹配(binding)。也就是说,在设计这一级上,我们只关心“施加在对象上的动作是什么”,而不必牵涉“如何实现这个动作”以及“实现这个动作有多少种方法”的细节。 * 第一章 引论 1.2 面向对象语言的核心概念 1.2.3 多态性 Poly-morphism 函数重载 在面向对象的语言中,函数重载(overload)表达了最简单的多态性。下面是函数重载的例子: void fun(int, int, char); void fun(char, float); void fun(int, int); void fun(float, float); * 第一章 引论 1.2 面向对象语言的核心概念 1.2.3 多态性 Poly-morphism 运算符重载 运算符重载指的是相同的运算符在不同的上下文有不同的解释。例如:两个整数使用+运算符表示它们要做加法,而两个字符串使用+运算符则表示串连接。 C++为运算符重载提供了完整的语法支持。 * 第一章 引论 1.2 面向对象语言的核心概念 1.2.3 多态性 Poly-morphism 如果函数调用(接口)与哪个函数实现相匹配是在编译时完成的,称为早期匹配(early binding)或静态联编。如果匹配是在运行时确定的,则称为后期匹配(lately binding)或动态联编。 C++提供的虚函数(Virtual Function)提供了后期匹配带来的良好特性。 * 第一章 引论 1.3 按对象方式思维 面向对象是一种仿真技术,面向对象设计产生一种与现实具有自然关系的软件系统。 面向过程的程序设计方法鼓励全局地看问题,强调系统功能的逐步细化。而在面向对象程序设计中,每个对象严格地是局部的。每个对象管理自己的实现。 学习面向对象设计,我们需要将思维方式从全局转到局部,在局部中发现对象。 * 第一章 引论 1.3 按对象方式思维 设计对象需要做许多小决策,怎样将计算部分合理地分配给不同的对象。这叫做分散责任(distribution responsibility)。这是设计决策的基础,其余都是次要的。CRC方法帮助设计者分散责任,直到设计的最后阶段才考虑问题的总体。 * 第一章 引论 1.3 按对象方式思维 面向对象的CRC方法从以下三个方面来表述对象: Class Name。给对象命名,实际上就是对需要处理的问题空间中包含的不同性质的数据进行分类。一个好的具有一致性的名字会为以后设计的正确性奠定基础。 * 第一章 引论 1.3 按对象方式思维 面向对象的CRC方法从以下三个方面来表述对象: Responsibilities。每个对象完成设计中的一个小目标的功能,它实现了这个系统状态的某一部分。责任要简明扼要,不要太多,同时不要让对象负责自己不需要承担的责任。 * 第一章 引论 1.3 按对象方式思维 面向对象的CRC方法从以下三个方面来表述对象: Collaborators。每个对象都可能依赖于其它对象来完成任务。合作者应该不要多,并且应该实用。尽量避免设计同所有对象打交道的也就是全局的对象。 * 第一章 引论 1.4 面向对象的思想和方法 1.4.1 面向对象是一种认知方法学 1.4.2 面向对象与软件IC 1.4.3 面向对象方法与结构化程序设计方法 1.4.4 对象是抽象数据类型的实现 * 第一章 引论 1.5 类属 类属并不是面向对象语言特有的成分,它指的是类型参数化,即参数化一个软件分量的能力。 C语言没有类属的能力,但可以通过C的宏定义来模拟类属。 C++采用模板来实现类属。 在现代的编程思想中,用“泛型”的概念来代替类属,同时具有更广泛的含义。 * 第一章 引论 1.6 面向对象的程序设计语言 Simula 67(Simula):20世纪60年代 Smalltalk :20世纪80年代 C++ :20世纪80年代早期 Java :20世纪90年代 C# :21世纪初 * 面向对象程序设计语言C++ 电子科技大学示范性软件学院 * 第一章
文档评论(0)