谭浩强《C程序设计》课件第8章PPT学习教案_第1页
谭浩强《C程序设计》课件第8章PPT学习教案_第2页
谭浩强《C程序设计》课件第8章PPT学习教案_第3页
谭浩强《C程序设计》课件第8章PPT学习教案_第4页
谭浩强《C程序设计》课件第8章PPT学习教案_第5页
已阅读5页,还剩76页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、会计学1 谭浩强谭浩强C程序设计程序设计课件第课件第8章章 第1页/共81页 第2页/共81页 这就是面向对象的程序设计的基本 思路。 为了进一步说明问题,下面先讨论 几个有关的概念。 第3页/共81页 种要素的,都可以作为对象。 在一个系统中的多个对象之间通过 一定的渠道相互联系,如图8.1示 意。要使某一个对象实现某一种行 为(即操作),应当向它传送相应的 消息。对象之间就是这样通过发送 和接收消息互相联系的。 第4页/共81页 图8.1 图8.2 第5页/共81页 通过边长计算出三角形的面积,并 且输出三角形的边长和面积。计算 三角形面积和输出有关数据就是前 面提到的行为,在程序设计方法

2、中 也称为方法(method)。调用对象中 的函数就是向该对象传送一个消息 (message),要求该对象实现某一行 为(功能)。 第6页/共81页 据和操作代码封装在一个对象中, 形成一个基本单位,各个对象之间 相对独立,互不干扰。二是将对象 中某些部分对外隐蔽,即隐蔽其内 部细节,只留下少量接口,以便与 外界联系,接收外界的消息。这种 对外界隐蔽的做法称为信息隐蔽 (imformation hiding)。信息隐蔽还 有利于数据安全,防止无关的人了 解和修改数据。 第7页/共81页 第8页/共81页 三角形对象有相同的属性和行为, 可以将它们抽象为一种类型,称为 三角形类型。在C+中,这种

3、类型 就称为“类(class)”。这10个三角形 就是属于同一“类”的对象。类是 对象的抽象,而对象则是类的特例, 或者说是类的具体表现形式。 第9页/共81页 又增加了新的特征(颜色),“马” 是父类,或称为基类,“白马”是 从“马”派生出来的,称为子类或 派生类。 C+提供了继承机制,采用继承的 方法可以很方便地利用一个已有的 类建立一个新的类。这就是常说的 “软件重用”(software reusability) 的思想。 第10页/共81页 在C+中,所谓多态性 (polymorphism)是指: 由继承而产 生的相关的不同的类,其对象对同 一消息会作出不同的响应。多态性 是面向对象程

4、序设计的一个重要特 征,能增加程序的灵活性。 第11页/共81页 图8.3 第12页/共81页 说激活这些对象),完成自己职责 范围内的工作。各个对象的操作完 成了,整体任务也就完成了。显然, 对一个大型任务来说,面向对象程 序设计方法是十分有效的,它能大 大降低程序设计人员的工作难度, 减少出错机会。 第13页/共81页 包括类和对象的概念、类的机制和 声明、类对象的定义与使用等。这 是面向对象的程序设计的基础。 第14页/共81页 在面向过程的结构化程序设计中, 人们常使用这样的公式来表述程序: 程序=算法数据结构 第15页/共81页 程序 = (对象+对象+对象+) + 消 息或: 程序

5、 = 对象s + 消息 “对象s”表示多个对象。消息的作 用就是对对象的控制。程序设计的 关键是设计好每一个对象,及确定 向这些对象发出的命令,使各对象 完成相应操作。 第16页/共81页 第17页/共81页 并将具有相同属性和行为的对象用 一个类(class)来表示。建立一个能 反映真实工作情况的需求模型。 第18页/共81页 3. 面向对象编程(object oriented programming, OOP) 根据面向对象设计的结果,用一种 计算机语言把它写成程序,显然应 当选用面向对象的计算机语言(例 如C+),否则无法实现面向对象 设计的要求。 第19页/共81页 因为对象的封装性,

6、修改一个对象 对其他对象影响很小。利用面向对 象的方法维护程序,大大提高了软 件维护的效率。 第20页/共81页 可以不必严格按照以上5个阶段进 行,往往由程序设计者按照面向对 象的方法进行程序设计,包括类的 设计(或选用已有的类)和程序的设 计。 第21页/共81页 类型,然后用它去定义结构体变量。 同一个结构体类型可以定义出多个 不同的结构体变量。 第22页/共81页 第23页/共81页 第24页/共81页 第25页/共81页 第26页/共81页 ; private和public称为成员访问限定符 (member access specifier)。 第27页/共81页 ,。 类体中,关键

7、字private和public可以 分别出现多次。每个部分的有效范 围到出现另一个访问限定符或类体 结束时(最后一个右花括号)为止。 但是为了使程序清晰,应该养成这 样的习惯: 使每一种成员访问限 定符在类定义体中只出现一次。 第28页/共81页 户也把自己或本单位经常用到的类 放在一个专门的类库中,需要用时 直接调用,这样就减少了程序设计 的工作量。 第29页/共81页 第30页/共81页 Student stud1,stud2; 直接用类名定义对象。这两种方法 是等效的。第1种方法是从C语言 继承下来的,第2种方法是C+的 特色,显然第2种方法更为简捷方 便。 第31页/共81页 第32页

8、/共81页 这个对象分配存储空间,以存放对 象中的成员。 第33页/共81页 第34页/共81页 public声明,系统将其成员默认为 private,在需要时也可以自己用显 式声明改变。 如果希望成员是公用的,使用 struct比较方便,如果希望部分成 员是私有的,宜用class。建议尽量 使用class来建立类,写出完全体现 C+风格的程序。 第35页/共81页 (它能否被调用)以及它的作用域(函 数能使用什么范围中的数据和函 数)。例如私有的成员函数只能被 本类中的其他成员函数所调用,而 不能被类外调用。 第36页/共81页 function),类外用户不能调用这些 私有的工具函数。 类

9、的成员函数是类体中十分重要的 部分。如果一个类中不包含成员函 数,就等同于C语言中的结构体了, 体现不出类在面向对象程序设计中 的作用。 第37页/共81页 第38页/共81页 display( ) 或 display( ) 则表示display函数不属于任何类, 这个函数不是成员函数,而是全局 函数,即非成员函数的一般普通函 数。 第39页/共81页 数,其函数体只有23行,一般可 在声明类时在类体中定义。多于3 行的函数,一般在类体内声明,在 类外定义。 第40页/共81页 等控制结构,C+系统会自动将它 们作为内置(inline)函数来处理。也 就是说,在程序调用这些成员函数 时,并不是

10、真正地执行函数的调用 过程(如保留返回地址等处理),而 是把函数代码嵌入程序的调用点。 这样可以大大减少调用成员函数的 时间开销。 第41页/共81页 第42页/共81页 想将这些成员函数指定为内置函数, 应当用inline作显式声明。如 class Student public: inline void display( ); /声明此成员函数为内置函数 第43页/共81页 第44页/共81页 度来看,这样做并不是好的办法。 只有在类外定义的成员函数规模很 小而调用频率较高时,才将此成员 函数指定为内置函数。 第45页/共81页 图8.4 第46页/共81页 显然,这样做会大大节约存储空间。

11、 C+编译系统正是这样做的,因此 每个对象所占用的存储空间只是该 对象的数据部分所占用的存储空间, 而不包括函数代码所占用的存储空 间。如果声明了一个类: 第47页/共81页 第48页/共81页 (2) 不要将成员函数的这种存储方 式和inline(内置)函数的概念混淆。 (3) 应当说明: 常说的“某某对象 的成员函数”,是从逻辑的角度而 言的,而成员函数的存储方式,是 从物理的角度而言的,二者是不矛 盾的。 第49页/共81页 成员。 第50页/共81页 据成员,而且还可以调用对象的公 用成员函数,但同样必须指出对象 名,如 第51页/共81页 就无法对对象进行任何操作。 第52页/共81

12、页 第53页/共81页 由于t2与t1共占同一段存储单元(即 t2是t1的别名),因此t2.hour就是 t1.hour。 本章第8.6节的例8.2中的程序(b),介 绍的是引用变量作为形参的情况, 读者可以参考。 第54页/共81页 行加工等)。因此,公用成员函数 是用户使用类的公用接口(public interface),或者说是类的对外接口。 第55页/共81页 么结果,能实现什么功能即可。 通过成员函数对数据成员进行操作 称为类的实现,为了防止用户任意 修改公用成员函数,改变对数据进 行的操作,往往不让用户看到公用 成员函数的源代码,显然更不能修 改它,用户只能接触到公用成员函 数的目

13、标代码(详见8.5.2节)。 第56页/共81页 只需修改本类中有关的数据成员和 与它有关的成员函数,程序中类外 的部分可以不必修改。 (2) 如果在编译时发现类中的数据 读写有错,不必检查整个程序,只 需检查本类中访问这些数据的少数 成员函数。 第57页/共81页 函数的声明,在程序中就可以调用 这些对象的公用成员函数。为了实 现上一节所叙述的信息隐蔽,对类 成员函数的定义一般不放在头文件 中,而另外放在一个文件中。 第58页/共81页 第59页/共81页 # 第60页/共81页 图8.6。 第61页/共81页 这也是把成员函数的定义不放在头 文件中的一个好处。 在实际工作中,并不是将一个类

14、声 明做成一个头文件,而是将若干个 常用的功能相近的类声明集中在一 起,形成类库。 第62页/共81页 统中(一般装到C+编译系统所在 的子目录下),并在程序中用 #include命令行将有关的类声明的 头文件包含到程序中,就可以使用 这些类和其中的成员函数,顺利地 运行程序。 第63页/共81页 公用接口,在头文件的类体中还提 供了成员函数的函数原型声明,用 户只有通过头文件才能使用有关的 类。用户看得见和接触到的是这个 头文件,任何要使用这个类的用户 只需包含这个头文件即可。包含成 员函数定义的文件就是类的实现。 请特别注意: 类声明和函数定义 一般是分别放在两个文本中的。 第64页/共8

15、1页 即可。 由于类库的出现,用户可以像使用 零件一样方便地使用在实践中积累 的通用的或专用的类,这就大大减 少了程序设计的工作量,有效地提 高了工作效率。 第65页/共81页 的一个“消息”,通知它执行其中 的display“方法”(即display函数)。 上面这个语句涉及3个术语: 对象、 方法和消息。stud是对象,display( ) 是方法,语句“stud.display( );”是消 息。 第66页/共81页 第67页/共81页 值的,可以被引用的。 (3) 如果删去主函数的3个输入语句, 即不向这些数据成员赋值,则它们 的值是不可预知的。 第68页/共81页 第69页/共81页 第70页/共81页 第71页/共81

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论