- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面向对象程序设计(C++)第1章.ppt
面向对象程序设计 -----C++程序设计 (30学时讲课+18学时上机) 第一章 序论 面向对象的概念容易将问题空间直接映射到程序空间,为程序员提供了一种与传统结构程序设计十分不同的思维方式。 1.1 面向对象的目标 传统的程序设计方法是模块化(或结构化)的程序设计方法,步骤为: (1)整个软件系统功能逐步细化为多个小的功能—功能划分; (2)每个小的功能对应由一个模块(如函数,过程,分程序,子程序等)来实现; (3)多个模块合作完成较大的功能,所有模块的合作完成整个软件系统的功能。 对于传统的程序设计,在设计和实现(编程)阶段考虑的是模块,程序本身也是由模块构成的,称之为面向模块(面向过程)。 结构化程序设计存在的问题: 当数据量增大时,数据与处理这些数据的方法的分离使程序变得难以理解,对数据处理能力需求越强,这种分离所造成的负作用越显著. 面向对象语言中的对象是“将某组数据和使用该组数据的一组基本操作或过程封装在一起,而成的一个实体”。实际上就是抽象数据类型的一个实例。 作为克服软件复杂性的手段,在面向对象中,利用了如下对象的性质: (1) 将密切相关的数据和操作封装起来定义为一个实体。 (2) 定义了一个实体后,即使不知道此实体的功能是怎样实现的,也能使用它们(这一点类似于库函数)。 1.2 面向对象语言的核心概念 面向对象的程序设计语言,最核心的概念是数据封装(抽象)、继承性和多态性。 1.2.1数据封装 抽象是指对于一个系统的简化描述。对于使用系统的人员,不会去关心该系统的组成和工作的原理;他们所关心的是该系统具有什么样的功能,如何去使用该系统(既系统提供什么样的接口,让人们使用)。 对于该系统的实现人员,需要关心的是该系统的一切情况。 抽象的原则,运用在计算机领域,称之为“信息隐蔽”原则;在面向对象的程序设计语言中,使用数据封装机制实现信息隐蔽。 数据封装将一组数据和与这组数据有关的操作集合封装在一起,形成一个能动的实体,称为对象。 用户不必知道对象行为的实现细节,只需根据对象提供的外部特性接口访问对象。 例 class Circle { float r; //半径 int x,y; //圆心 关于半径、圆心和圆的操作; }; 下面是一个求5!(即1×2×3×4×5)的例子,采用了两种不同的方法来实现。 方法一:使用传统的C语言语法实现。程序如下: //l1_1.cpp #includestdio.h float Factorial(int n) { float fact=1; for(int i=1;i=n;i++) fact*=i; return fact; } main() { printf(5!=%f\n,Factorial(5)); } 解释:程序中创建了一个求阶乘的函数Factorial,此函数没有访问权限控制,也就是说在程序中的任何地方都可以调用该函数。此种方法没有进行数据封装。 方法二:使用C++语言语法实现,在程序种定义了一个求阶乘的类Cfactorial。程序如下: 例 class Circle { float r; //半径 int x,y; //圆心 关于半径、圆心和圆的操作; }; 类的概念将一组数据和这组数据有关的操作集合封装在一起,建立了一个定义良好的接口,人们只关心其使用,不关心其实现细节。这反应了抽象数据类型的思想。 类本身还是一组对象共同属性和操作的抽象。类代表了一般性,而该类的每一个对象代表了具体性。 1.2.2继承 继承是面向对象语言的另一个重要的概念。在客观世界中,存在着整体和部分的关系(a part of )、一般和特殊的关系(is a 或 a kind of ),实现了重用性和扩充性。 A is a part of B. A is a kind of B. 例: 人与学生的关系(继承) 点与圆(心)的关系(包含) 点与多边形(顶点)的关系 例: 将一个人当成对象,对于人的定义(如名字、年龄、性别等等)和对人的操作(取名字、打印一个人的各种信息等等)已经封装在Person类中了;下面将学生当成对象,学生是一类特殊的人,基本的信息和操作已经Person中定义过了,为了避免重复定义C++允许用户将学生类Student说明为Pe
原创力文档


文档评论(0)