面向对象程序设计课程指导书_第1页
面向对象程序设计课程指导书_第2页
面向对象程序设计课程指导书_第3页
面向对象程序设计课程指导书_第4页
面向对象程序设计课程指导书_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上现代远程教育面向对象程序设计C+课程学习指导书作者:穆玲玲课程学习方法指导“面向对象程序设计-C+”这门课程是“C语言程序设计”课程的后续课程,本课程在学生掌握C语言的基本编程方法之后,继续向学生介绍面向对象程序设计方法在C+语言中的实现。本课程将从复习C+语言基础开始,平滑过渡到面向对象的程序设计方法,并针对C+程序设计的主要知识点进行精要介绍,以大量的实例介绍各种知识点的具体应用。使学生在学习本课程之后,掌握C+面向对象的程序设计方法。本课程在理解基本概念的基础上,侧重培养学生的实际编程能力,因此同学们应在认真观看视频教学之前的基础上,认真阅读教材,通过完成自测题

2、和书后作业,巩固基础知识的理解;尽可能多上机,多编程熟练掌握编程的方法和开发工具的使用。课程学习进度安排本课程教学内容在一学期内完成,学生可参考以下进度安排自己的学习:第1周 第1单元(教材第1章) 复习C+基础第2周 第2单元 类与对象(教材2.1-2.4)第3周 第2单元 类与对象(续)(教材2.5-2.9)第4周 第2单元 类与对象 (教材第3章)第5周 第3单元 友元 第6周 第4单元 运算符重载(教材5.15.3)第7周 第4单元 运算符重载(续)(教材5.45.11)第8周 第5单元 模板(教材第6章)第9周 第6单元 继承与派生(教材第7.17.7)第10周 第6单元 继承与派生

3、 (教材第7.87.11)第11周 第7单元 虚函数和多态(教材第8章)第12周 第8单元 C+流(教材9.1-9.4)第13周 第8单元 C+流(续)(教材9.5-9.7)第14周 第9 单元 异常处理和名字空间(教材第10章)第15周 第10单元 C+标准模板库(教材第11章)第16周 第11单元 面向对象软件设计(教材第12章)课程学习课时分配第1部分 C+语言基础第1单元(教材第1章) 复习C+基础 (2学时)每课时内容为: 1.1-1.4 1.5-1.7 第2部分 面向对象程序设计的特征、概念和方法第2单元 类与对象(教材第2章和第3章)(9学时)每课时内容为:2.1-2.2 2.3

4、-2.4 2.52.6 2.7-2.8 2.9 3.1 -3.2 3.3 3.43.6 3.7 第3单元 友元 (教材第4章)(2学时)每课时内容为:4.14.3 4.4第4单元 运算符重载(教材第5章)(5学时)每课时内容为:5.15.2 5.3 5.4 5.51.10 5.11第5单元 模板(教材第6章)(3学时)每课时内容为:6.16.2 6.3 6.4 第6 单元 继承与派生(教材第7章)(5学时)每课时内容为:7.17.3 7.47.7 7.87.9 7.10 7.11第7单元 虚函数和多态(教材第8章)(3学时)每课时内容为:8.18.2 8.38.4 8.5 第3部分 C+语言的

5、高级特征第8单元 C+流(教材第9章)(5学时)每课时内容为:9.19.2 9.3 9.4 9.59.6 9.7第9 单元 异常处理和名字空间(教材第10章)(2学时)每课时内容为:10.110.3 10.410.5第10单元 C+标准模板库(教材第11章)(2学时)每课时内容为:11.111.5 11.611.7第4部分 面向对象软件工程第11单元 面向对象软件设计(教材第12章)(2学时)每课时内容为:12.112.2 12.3第1章 C+语言基础一、 教学内容1.1 C+概述计算机语言种类、程序设计方法、C+语言及其特点、C+程序的基本结构、C+程序的开发步骤1.2 C+语言初识数据类型

6、、常量和变量、数据的输入和输出1.3 控制语句顺序、选择、循环、跳转1.4 构造数据类型数组、枚举、结构体、共用体、自定义类型1.5 指针指针的定义、初始化、运算符、new和delete、指针和数组1.6 函数函数的定义和调用、全局变量和局部变量、参数传递、内联函数、函数重载、域运算符1.7 断言二、 章节学习目标1、 理解C语言与C+语言的关系,理解面向对象程序设计方法的核心和特点,理解断言的作用 2、 熟练掌握C+程序的基本结构和开发步骤;C+语言的语法和常用语句,包括:数据类型,变量声明,常量定义,数据的输入和输出,控制语句,构造数据类型(数组,结构,自定义类型),指针和函数的使用3、

7、能运用VC+6.0或DevC开发C+程序;能运用C+语言设计算法并编程实现三、 章节重点、要点本章主要内容是C+语言基础,对于熟练掌握C语言程序设计的同学,本章内容可以跳过。本章的重点是:1. C+的语法和常用语句,包括:C+程序结构,数据类型,变量声明,常量定义,数据的输入和输出,控制语句,构造数据类型(数组,结构,自定义类型),指针和函数的使用。2. C+开发工具:VC+6.0或DevC本章的要点是:1. 数据的输入和输出:cin和cout的基本使用方法2. 指针的定义和使用:指针的定义、初始化、运算符、new和delete、指针和数组。这一部分的内容对于大多数同学来说比较困难,需要通过大

8、量的编程练习理解指针的含义和使用。3. 函数:函数的基本使用方法容易理解,但是关于全局变量和局部变量、参数传递、内联函数、函数重载和域运算符等问题是新的内容,在本课程的后续内容中将不断涉及,因此同学们应深刻理解。四、 章节考试大纲面向对象程序设计方法的核心和特点;C语言与C+语言的关系;C+程序的基本结构和开发步骤;C+语言的语法和常用语句(数据类型,变量声明,常量定义,数据的输入和输出,控制语句,构造数据类型(数组,结构,自定义类型),指针和函数的使用);断言的作用;运用C+语言设计算法并编程实现;读懂C+程序五、 计划学时本章主要内容为复习C+语言基础,安排课时为2学时六、 章节练习题1.

9、 高级语言是如何被计算机识别的?2. 面向对象程序设计方法的核心和特点分别是什么?3. C+程序的基本结构是什么样的?4. 什么是编译预处理语句?5. C+程序的开发步骤是什么?6. 输入输出7. 指针8. 函数重载9. 给出以下程序的执行结果。#include <iostream.h>void main() int i,j,k; for (i=1;i<=6;i+) for(j=1;j<=20-2*i;j+) cout << " " for(k=1;k<=i;k+) cout << i << " &

10、quot; cout << endl; 第2章 类和对象(一)一、 教学内容2.1 类类的声明、类的成员函数、访问权限、特点、与结构体的区别2.2 对象对象的定义、对象的数据成员访问和成员函数调用、对象的存储空间、对象的赋值运算2.3 构造函数概念、调用构造函数、重载构造函数、复制构造函数2.4 析构函数概念、性质、调用2.5 对象的生存期2.6 对象浅复制与深复制2.7 静态成员2.8 类成员指针2.9 应用实例二、 章节学习目标1、理解类和对象的概念,理解类与对象的关系,理解类的成员及其访问权限;理解构造函数与析构函数的作用;理解静态成员的作用;理解对象的复制2、熟练掌握类的定

11、义和访问,熟练掌握重载构造函数的定义和使用;熟练掌握静态成员的使用3、能运用类的概念编写程序三、 章节重点、要点重点:类的概念、定义和使用;对象的概念、定义和使用;类与对象的关系;构造函数和析构函数;静态成员要点:类是具有相同属性的对象的抽象,对象是类的实例;类的成员包括数据成员和函数成员,数据成员说明类的属性,函数成员说明类的操作;类的成员具有三种不同的访问权限:private。protected。public;在默认情况下,类的成员是私有的,private,而结构的访问权限在默认情况下是公有的public。构造函数和析构函数是类的特殊成员函数,在生成类对象的时候会调用构造函数,而在撤销类对

12、象的时候则调用析构函数;构造函数可以重载,但是析构函数是不能重载的。类成员的访问通常是通过类对象实现的,静态成员例外。静态成员是用static声明的成员,被所有其所在类的类对象共享,静态成员的访问是通过类作用域实现的。四、 章节考试大纲类的概念、定义和使用;对象的概念、定义和使用;类与对象的关系;构造函数和析构函数;静态成员;类成员的访问权限和访问方法五、 计划学时5学时六、 章节练习题1、声明类的一般格式是什么?2、类成员的访问权限有哪些?3、类与对象的关系是什么?4、类的构造函数和析构函数有何特点?5、什么是静态成员?有和特点?第3章 类与对象(二)一、 教学内容3.1 常对象和常对象成员

13、3.2 类对象数组3.3 子对象 子对象构造函数和析构函数的设计和执行次序3.4 嵌套类3.5 局部类3.6 this 指针3.7 应用实例二、 章节学习目标1. 理解常对象和常对象成员的含义;理解子对象的含义;理解嵌套类、局部类的含义和使用2. 熟练掌握子对象构造函数和析构函数设计和执行次序;熟练掌握this指针的含义和应用3. 能运用常对象成员、子对象、this指针等设计较复杂的类三、 章节重点、要点重点:子对象构造函数和析构函数的设计;子对象构造函数和析构函数的执行次序;this指针要点:本章是对类和对象较深入的专题。常对象指对象常量;常对象成员包括常对象成员函数和常数据成员;均用con

14、st声明;常成员函数不更新对象的数据成员,也不调用非const成员函数;常对象只能调用常成员函数;const可用于区分函数重载。常数据成员可以是常量和常引用,用const说明;常数据成员由构造函数的初始化列表进行初识化;如果数组中每一个元素都是某一个类的对象,该数组称作对象数组;当一个类的数据成员是另一个类的对象时,该对象称作子对象。子对象表示两个类之间的has-a关系。子对象的初始化通过初始化表进行;构造函数的调用次序是先调用各个对象成员的构造函数,对象成员的构造函数调用次序取决于他们在类中的声明次序与初始化表中的位置无关;然后执行类的构造函数,析构函数的调用顺序与构造函数相反。类应先声明再

15、使用;两个类相互引用时,可在定义前先引用即前向引用声明;嵌套类是指在一个类中声明其他类,嵌套类在外层类中可以使用;而在外层类之外能否使用取决于嵌套类的权限;如果是公有的可以使用,但须用作用域运算符指出外层类;局部类是在函数的定义中声明的类;局部类一般不包含静态成员;this指针是隐含于每一个类的成员函数的特殊指针,它将对象和该对象调用的成员函数链接在一起;由VC+内部设计,指向正在被某个成员函数操作的对象。 四、 章节考试大纲常对象和常对象成员的含义和声明;子对象的含义;嵌套类、局部类的含义;子对象构造函数和析构函数设计和执行次序;初始化表的使用;this指针的含义和应用;运用常对象成员、子对

16、象、this指针等设计较复杂的类,能读懂程序;五、 计划学时4学时六、 章节练习题1. 常成员函数有何特点?2. 什么时候需要使用初识化表?3. 什么是嵌套类?什么是局部类?4. 简述this指针的含义是什么?第4章 友元一、 教学内容4.1 什么是友元概念4.2 友元函数声明、使用4.3 友元类4.4 应用实例二、 章节学习目标1. 理解友元的概念和作用,理解友元类和友元函数的定义和使用2. 熟练掌握友元函数和友元类的声明和定义方法3. 能运用友元函数编程三、 章节重点、要点重点:友元的含义,友元函数的定义和声明,友元类的使用要点:友元破环了数据的隐藏和封装,但是方便了不同类之间,类与函数之

17、间的数据共享。友元包括友元类和友元函数,均用friend声明。友元类中的成员函数都是所在类的友元函数。友元关系具有不可传递性、单向性、不能继承性。四、 章节考试大纲友元的含义和作用;友元函数和友元类的声明;友元关系的特点五、 计划学时2学时六、 章节练习题1. 什么是友元?具有什么特点?2. 友元关系具有什么特点?3. 如何声明友元函数?第5章 运算符重载一、 教学内容5.1 概述定义、格式、调用格式5.2 重载单目运算符通用方法5.3 重载双目运算符通用方法5.4-5.10 重载其他运算符 重载比较运算符、 重载赋值运算符5.11应用实例二、 章节学习目标1. 理解运算符重载的意义;2. 熟

18、练掌握运算符重载的定义格式和调用格式;熟练掌握运算符重载的基本规则3. 能运用运算符重载编程,编写运算符重载函数三、 章节重点、要点重点:运算符重载的含义、定义和调用要点:运算符重载就是用同一个运算符完成不同的运算功能,通过重载运算符函数来完成。运算符重载时不能改变运算符优先权;不能改变运算符的结合性,不能使用默认参数,不能改变操作数个数,不能创建新的运算符,不改变对C+内部数据类型的运算功能;五个不能重载的运算符:“.”“.*”“:”“?:”“sizeof”;运算符函数的关键字是operator;重载运算符函数的调用与普通成员函数的调用格式类似,也可以直接表示为表达式形式;掌握重载算术运算符

19、,重载前增量和后增量运算符的例子四、 章节考试大纲运算符重载的含义、定义和调用;运算符重载的规则;算术运算符和单目运算符的重载五、 计划学时5学时六、 章节练习题1. 什么是运算符重载?2. 如何定义重载运算符函数?3. 定义重载运算符函数的时候需要注意哪些问题?第6章 模板一、 教学内容6.1 概述6.2 函数模板声明、编写、使用、重载、匹配6.3 类模板声明、使用6.4 应用实例二、 章节学习目标1. 理解模板的含义;理解函数模板的含义;理解类模板的含义2. 熟练掌握函数模板和类模板的声明和使用方法;3. 能运用函数模板和类模板编程三、 章节重点、要点重点:模板的含义;函数模板和类模板的声

20、明与使用方法;要点:模板是C+软件复用的功能之一,包括函数模板和类模板,他们把函数或类要处理的数据类型参数化,表现为参数的多态性,可表达逻辑结构相同但具体数据元素类型不同的数据对象的通用行为。用template声明。函数模板是对一组函数的描述,不是真实的函数,能生成重载的模板函数;函数调用的顺序为:函数匹配;模板函数匹配;类型转换后匹配;失败。类模板是一组类的抽象,不能直接使用,先实例化为模板类,定义模板类的对象后才可以使用。四、 章节考试大纲模板的含义;函数模板和类模板的声明与使用方法;函数模板与函数的关系;类模板与类的关系,编写函数模板和类模板五、 计划学时3学时六、 章节练习题1. 什么

21、是模板?2. 函数模板与函数有何关系?3. 类模板与类有和关系?第7章 继承与派生一、 教学内容7.1 继承的概念7.2 派生类的概念定义、生成、访问权限7.3 继承方式公有、私有、保护7.4 派生类继承成员的调整7.5 派生类对象的存储组织7.6 派生类的构造函数7.7 派生类的析构函数7.8 基类对象和派生类对象的使用关系7.9 类层次中的类模板7.10 虚基类7.11 应用实例二、 章节学习目标1.理解继承的概念;理解派生类与继承的关系;理解三种继承方式的特点;理解派生类的构造函数和虚构函数的调用;理解虚基类的意义。2.熟练掌握派生类的定义方法,熟练掌握派生类的构造函数和析构函数的调用顺

22、序3.能运用派生的方法构造类,编写程序。三、 章节重点、要点重点:继承的含义,派生类的定义,派生类构造函数和析构函数的调用顺序;虚基类要点:继承是面向对象程序设计代码重用的重要手段,程序员可在原有类的基础上进行扩展,增加功能,构造派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认识过程。反应的是is-a关系。C+通过类的派生支持继承。被继承的类称为基类、父类或超类,新的类称为派生类或子类。直接参与派生出某类称为直接基类,基类的基类称为间接基类。从一个基类派生的继承称为单继承;从多个基类派生的继承称为多继承。派生类的定义格式为class 类名:继承方式1 基类名1,继承方式2

23、基类名2, 继承方式3 基类名3。继承方式有三种:公有、私有和保护。派生新类一般有三个阶段:吸收基类成员、改造基类成员、添加新的成员。不同访问权限的类成员在类自身、派生类和关联类中的访问控制规则是不同的;不同继承方式派生的类基类成员的访问属性在派生类中是不同的。派生类的构造函数执行顺序与析构函数的执行顺序相反:按照声明顺序基类构造函数->子对象构造函数->派生类构造函数。基类指针可以指向派生类对象;类模板可以派生类模板和非类模板;非类模板类可以派生类模板。在继承方式前加virtual构成虚基类,虚基类的成员在内存中只拥有一个复制。虚基类构造函数的调用总是先于普通基类的构造函数。四、

24、 章节考试大纲派生类与继承的关系;三种继承方式的特点;虚基类的意义;派生类的定义方法,派生类的构造函数和析构函数的调用顺序;用派生的方法构造类。五、 计划学时5学时六、 章节练习题1、什么是继承?2、什么是派生?3、继承方式有哪些?产生的结果是什么?4、什么是虚基类?第8章 虚函数和多态一、 教学内容8.1 函数绑定8.2 虚函数及其限制声明、实现多态、限制8.3 纯虚函数和抽象类8.4 设计统一的公共接口8.5 应用实例二、 章节学习目标1.理解动态绑定和静态绑定的含义;理解虚函数实现多态的工作原理2.熟练掌握虚函数的定义;熟练掌握多态的实现方法3.能运用虚函数实现多态三、 章节重点、要点重

25、点:函数绑定;虚函数的定义;实现多态的方法要点:函数绑定是函数的入口地址同函数调用相联系的过程。分为静态绑定和动态绑定。静态绑定在程序执行前完成,动态绑定在程序执行过程中完成。在运行时根据对象类型确定调用哪个函数的能力称为多态。C+用虚函数实现多态。虚函数用virtual声明,是类的成员函数,在派生类中通常重写虚函数,用基类指针调用虚函数可实现多态。静态成员函数、内联函数、构造函数不能是虚函数。定义虚函数=0称为纯虚函数,含有纯虚函数的类叫做抽象基类,抽象基类不能建立类对象。四、 章节考试大纲动态绑定和静态绑定的含义;虚函数实现多态的工作原理;虚函数的定义;多态的实现方法;运用虚函数实现多态五

26、、 计划学时3学时六、 章节练习题1、什么是函数绑定?2、什么是动态绑定?3、C+中如何实现多态?4、什么是抽象类?有何特点?第9章 C+流一、 教学内容9.1 什么是流概念、缓冲流和非缓冲流9.2 流类库9.3 输入输出流输入流、输出流、格式控制、错误状态9.4 重载输入输出运算符9.5-9.6 文件操作文件的打开与关闭、文件读写9.7 应用实例二、 章节学习目标1. 理解流的概念,了解C+语言中输入输出流类体系结构;2. 熟练掌握输入输出流的格式化方法;掌握输入输出流对象以及文本文件和二进制文件的输入和输出方法3. 能运用流实现输入输出和文件的基本操作三、 章节重点、要点重点:流的概念;格

27、式化输入输出; I/O流类的层次结构;文件基本操作要点:流是流类定义的对象,用于实现设备与内存之间的数据传输。C+中有若干个流类完成输入输出操作,所有流泪的集合称为流类体系。主要的流类有:ios,istream,ostream,iostream,ifstream,ofstream,他们之间是有关联的。流分为缓冲流和非缓冲流。cin和cout都是流类对象,具有输入或输出的成员函数,并可设置格式。插入和提取运算符可以重载用于新的数据类型的输入和输出。文件被看做是有序的字节流,以EOF结束。文件流可以分为输入文件流、输出文件流以及IO文件流。文件又可以分为文本文件和二进制文件。通过文件流对象可以实现

28、文件的顺序和随机读写。四、章节考试大纲流的概念, C+语言中输入输出流类体系结构;输入输出流的格式化方法;文本文件和二进制文件的输入和输出方法五、计划学时5学时六、章节练习题1、什么是流?2、C+的流类结构是怎样的?第10章 异常处理和名字空间一、 教学内容10.1 概述10.2 异常处理的实现10.3 异常处理中对象的构造与析构10.4 名字空间10.5 应用实例二、 章节学习目标1. 理解异常处理和名字空间的含义和作用;理解异常的概念、异常的产生和异常的处理机制;理解异常信号的传递方式,了解标准C+库的异常类2. 熟练掌握异常处理和名字空间的用法,掌握throw、try和catch的用法;

29、3. 能运用异常处理和名字空间编写程序三、 章节重点、要点重点:异常的概念,异常的产生和处理机制,异常信号的传递方式,名字空间的使用要点:异常是指程序执行过程中出现出现的错误。C+语言的异常处理机制将异常的检测和处理分离,用throw、try和catch实现。在try语句块中用throw抛出异常,在catch语句块中扑捉异常并进行处理。名字空间用namespace定义,其中包含类、变量、函数等。名字空间在程序的全局作用域内定义,可以扩展。关键字using用于声明程序要引入的名字空间成员。也可用作用域操作符:说明你、变量和函数等所在的名字空间。std是标准名字空间。四、 章节考试大纲异常处理和名

30、字空间的含义和作用;异常的概念、异常的产生和异常的处理机制;异常信号的传递方式,throw、try和catch的用法;能运用异常处理和名字空间编写程序五、 计划学时六、 2学时七、 章节练习题1、什么是异常?2、异常处理的作用是什么?2、什么是名字空间?如何定义?第11章 C+标准模板库一、 教学内容11.1 STL 概述11.2 STL的使用11.3-5 迭代器、容器、算法基本概念11.6 string类型二、 章节学习目标1. 理解标准模板库STL的基本概念;了解标准模板库STL的组成部分;理解容器的概念;理解迭代器的概念;理解算法的概念2. 熟练掌握string类型的使用三、 章节重点、

31、要点重点:STL的基本概念;容器、迭代器和算法的概念以及相互之间的关系;string类型的使用要点:STL是以C中的模板语法为基础建立起来的一套包含基础数据结构和算法的代码库。STL的特点是类型参数化和泛型编程。STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),几乎所有的代码都采用了模板类和模版函数的方式,提供了更好的代码重用机会。使用STL时必须在源代码文件开头加入:using namespace std; 容器元素的输入输出流头文件为<iostream>,容器分为顺序容器、适配器容器和关联容器;常用的迭代器有it

32、erator、 const_iterator、 reverse_iterator、 const_reverse_iterator等;算法包括非可变序列算法、可变序列算法、排序相关算法和通用数值算法。string类型相当于一个保存字符的序列容器,除了有字符串的一些常用操作以外,还有包含了所有的序列容器的操作。字符串的常用操作包括:增加、删除、修改、查找比较、链接、输入、输出等。四、 章节考试大纲标准模板库STL的基本概念;标准模板库STL的组成部分;容器的概念;迭代器的概念;算法的概念;string类型的使用五、 计划学时2学时六、 章节练习题1、什么是STL?2、什么是容器?什么是迭代器?什么

33、是算法?他们之间有何关系?第12章 面向对象软件设计一、 教学内容12.1-12.2 面向对象的软件工程基本概念、特征、要素、对象模型、实现12.3 图书管理系统设计二、 章节学习目标1. 理解软件工程以及面向对象的软件工程的概念;理解面向对象的基本概念、特征和要素;理解对象模型的作用三、 章节重点、要点重点:软件工程和软件生命周期,面向对象的基本概念、特征和要素要点:软件是程序、支持程序运行的数据以及与程序有关的文档资料的完整集合。软件过程是生产软件的途径,是为了获得软件产品而需要完成的一系列有关软件工程的活动。软件生命周期的阶段包括:软件计划、需求分析、软件设计、程序设计、软件测试、软件维

34、护。面向对象的基本概念包括:对象、对象的状态和行为、类、类的结构以及消息和方法。面向对象的特征主要表现在:对象惟一性、分类性、继承性、多态性。面向对象的要素主要包括:抽象、封装性(信息隐蔽)、共享性。对象模型表示了静态的、结构化的系统数据性质,描述了系统的静态结构,它是从客观世界实体的对象关系角度来描述,表现了对象的相互关系。四、 章节考试大纲软件工程以及面向对象的软件工程的概念;面向对象的基本概念、特征和要素;对象模型的作用五、 计划学时2学时六、 章节练习题1、软件的生命周期有那几个阶段?每个阶段的主要任务是什么?2、面向对象的基本特征是什么?3、面向对象的基本要素是什么?4、对象模型的作

35、用是什么?考试样题一、简答题:(每题 5 分,共30 分)1什么是抽象类?它有什么特点?2在什么情况下应该为一个类设计拷贝构造函数?3C+中使用多态的前提条件是什么?5. 什么是类?类与结构有和不同?6. 面向对象的特征有哪些?二、分析下面的代码,回答问题1 分析下面的代码,指出其中的错误,说明理由并改正class C public: int fn1( int x ) dm = x ; private: int dm; ;void main ( ) C c;c.fn1(16 );cout << c.dm << n;2class BC public: BC( ) cout

36、 << "BC' constructorn" BC( ) cout << "BC' destructorn" ;class DC : public BC public: DC( ) cout << "DC' constructorn" DC( ) cout << "DC' destructorn" ;int main( ) DC d; return 0;三、根据要求编写程序:1设计Person类,要求包含姓名、地址、身份证号码等数据成员

37、以及对数据成员存取处理的成员函数;再设计从Person类中派生的Student类和Professor类,分别为这两个派生类设计合适的数据成员和成员函数,并设计测试程序测试这些类。2设计复数类的加法运算操作,使之能够执行下列运算:( 10 分)Complex x(3,6), y(4,5), z(0,0);z = x + y;z=2.4 + x;z=y + 3.5附:章节练习题答案教材练习题请参考C+面向对象程序设计学习辅导第1章练习题答案1. 高级语言是如何被计算机识别的? 答:高级语言所编制的程序是不能直接被计算机识别的,一般通过解释方式或者编译方式,将源代码“翻译”成目标代码(机器语言程序)

38、,然后才能被计算机识别并执行。 2. 面向对象程序设计方法的核心和特点分别是什么? 答:面向对象程序设计方法的核心包括:抽象、封装、对象、类、消息、继承。 面向对象程序设计方法的特点:程序是由一个个的对象组成的,对象之间通过消息而相互作用,程序设计的主要技巧在设计哪些类以及类之间的关系。程序的内容可以说是由类对象和消息传递构成。 3. C+程序的基本结构是什么样的? 答:C+程序由函数组成,函数由函数首部和函数体两部分组成。C+程序的书写必须符合一些基本的规则,以便于程序的阅读、修改和相互交流。C+的输入输出操作由输入/输出流cin和cout来实现,没有专门的输入/输出语句。C+严格区分字母的

39、大小写。C+的注释可以在程序的任何位置插入,以增强程序的可读性。C+的编译预处理命令,程序要用到库函数的时候要提前声明。 4. 什么是编译预处理语句? 答:将程序要用到的函数的头文件通过编译预处理语句来声明,方便调用。 5. C+程序的开发步骤是什么? 答:C+程序的开发步骤是:分析问题、编辑程序、编译程序、连接程序、运行调试程序。 6. 输入输出 答:输入输出是程序的基本功能。C+的标注输入/输出流库用于数据的输入输出,用于输入输出的流库包含在头文件iostream.h中。输出用运算符“<<”,输入用运算符“>>”。 7. 指针 答:程序将定义指向“地址”的变量,即指

40、针变量,简称为指针。指针是一类特殊的变量,它保存的不是一边的数据值,而是程序中另一个对象在内存中的地址。定义指针变量的目的是,通过指针变量间接的访问变量。 8. 函数重载 答:所谓函数重载是指同一个函数名可以对应多个函数的实现。函数重载要求编译器能够惟一的确定调用一个函数时应执行哪个函数代码,即采用哪个函数实现。确定函数实现时,要求从函数参数的个数和类型上来区分。这就是说,进行函数重载时,要求同名函数在参数个数上不同,或者参数类型上不同。否则,将无法实现重载。第2章练习题答案1、声明类的一般格式是什么? 答:class 类名 Private: 私有数据成员和成员函数; Protected: 保

41、护数据成员和成员函数; Public: 共有数据成员和成员函数; ; 各个成员函数的实现; 2、类成员的访问权限有哪些? 答:在类声明中,public、private和protected是关键字,称为成员访问限定符,它们分别表示公有、私有和保护的成员访问权限。 Private:定义私有成员。私有数据成员只允许类内函数访问,私有成员函数只允许在类内调用。类外函数不允许访问私有数据成员,也不允许调用私有成员函数。 Public:定义公有成员。公有数据成员允许类内或类外的函数访问、公有成员函数允许在类内或类外调用。 Protected:定义保护成员。保护数据成员只允许类内或其子类中函数访问、保护成员

42、函数允许在类内或其子类中调用。其他函数不能访问该类的保护数据成员,也不能调用该类的保护成员函数。3、类与对象的关系是什么? 答:类是将数据和数据操作函数结合于一个单元内的机制,类构成了c+面向对象程序设计的基础,是封装的基本单元。对象是类的实例,类定义了属于该类的所有对象的共同特性。也就是说类是一个数据类型,而对象就是数据类型的“变量”。4、类的构造函数和析构函数有何特点? 答:构造函数: 构造函数的名字和雷的名字相同。 构造函数没有任何类型,既不属于返回值函数也不属于void函数。 类可以有多个构造函数,然而,一个类的所有构造函数的名字都相同。 如果类有多个构造函数,则他们的参数是各不相同的

43、。 当类对象创建时,构造函数会自动地执行;由于他们没有类型,不能像其他函数那样进行调用。 当类对象说明时调用哪一个构造函数取决于传递给它的参数类型。 析构函数: 析构函数在类对象销毁时自动执行。 一个雷只能有一个析构函数,而且析构函数没有参数。 析构函数的名字是“”加上类的名字(中间没有空格)。 与构造函数一样,析构函数也没有任何类型,既不属于返回值函数也不属于void函数。它们不能像其他函数那样被调用。5、什么是静态成员?有何特点? 答:静态成员包括静态数据成员和静态成员函数。静态成员是从属于类的静态数据成员和静态成员函数,不依赖于对象,为例解决了数据共享问题而产生的。 静态成员都是放在类公

44、共区中,它们不是依赖于对象,而是依赖于类,所以没有对象也能对静态数据成员进行初始化,对静态成员函数访问。静态数据成员必须初始化,而且对它的初始化不能在构造函数中进行。课本练习题 22.1 x=2,y=3x!=y2.2 x=2,y=32.3 constructing normallyconstructing with a number:20display a number:0display a number:20destructingdestructing2.4 n=2,sum=2n=3,sum=5n=5,sum=102.5 x=0,y=0x=1,y=2x=10,y=202.6 x=10,y=2

45、02.7 constructing object:x=1第3章练习题答案1、成员函数有何特点?答:const是函数类型的一个组成部分,因此在实现部分也要带const关键词。常成员函数不更新对象的数据成员,也不能调用该类中没有用const修饰的成员函数。如果将一个对象说明为常对象,则通过该常对象只能调用它的常成员函数,而不能调用其他成员函数。const关键词可以参与区分重载函数。例如,在类中有如下说明: “void print(); void print() const;”,则这是对print的有效重载。2、什么时候需要使用初识化表?答:在一个类中说明了n个常数据成员,那么构造函数就只能通过初始

46、化列表对该数据成员进行初始化,3、什么是嵌套类?什么是局部类?答:可以在一个类声明中声明其他类,这种在其他类中声明的类称为嵌套类。一个类的声明还可以是在某一个函数的定义中,这种类称为局部类,局部类的声明限制在函数定义中。局部类一般不包含静态成员。4、简述this指针的含义是什么?答: this是一个隐含于每一个类的成员函数的特殊指针,它是由VC+系统内部设定的,不需要程序员另外定义,可以直接使用。该指针是一个指向正在被某个成员函数操作的对象的指针。第4章练习题答案1. 什么是友元?具有什么特点? 答:友元提供了不同类或对象的成员函数之间、类的成员函数与一般函数之间进行数据共享的机制。友元相当于

47、给类的封装开了一个小孔,通过它,可以看到类内部的一些属性。也可以说,友元是对数据隐蔽和封装的挑战,但是考虑到数据共享的必要性,为了提高程序的效率,很多情况下破坏也是必要的,关键是需要在封装性和效率之间找到一个好的平衡点。2. 友元关系具有什么特点? 答:(1)友元关系式不能传递的,B类是A类的友元,C类是B类的友元,C类和A类之间,如果没有声明,就没有任何友元关系,不能进行数据共享。(2)友元关系式单向的,如果声明B类是A类的友元,B类的成员函数就可以访问A类的私有和保护数据,但A类的成员函数不能访问B类的私有、保护数据。(3)友元关系式不能继承的。例如:函数f()是类A的友元,类A派生出类B

48、,函数f()并不是类B的友元,除非在类B中作了特殊说明。3. 如何声明友元函数? 答:声明友元函数的方式是在类中用关键字friend声明该函数,其一般格式如下:friend 函数类型 友元函数名 (参数表);友元函数说明的位置可在类的任何地方,既可在public区,也可在protected区,意义完全一样。友元函数的定义既可以放在类的外部,也可以放在类的内部,一般与类的成员函数定义放在一起。课后练习题4.1 1,24.2 304.3n=1004.42第5章练习题答案1、什么是运算符重载? 答:运算符重载是对已有的运算符赋予多重含义,同一个运算符作用于不同类型的数据导致不同类型的行为,也就是用同

49、一个运算符完成不同的运算功能。2、 如何定义重载运算符函数? 答:当运算符重载为类成员函数时,可以有两种形式:运算符重载函数作为类的成员函数和作为类的友元函数。 运算符重载函数作为类的成员函数 函数类型 operator 重载运算符(形参表) 函数体; 运算符重载函数作为类的友元函数 friend 函数类型 operator 重载运算符(形参表) 函数体;其中,“函数类型”指出重载运算符的返回值类型,operator是定义运算符重载函数的关键词。3、定义重载运算符函数的时候需要注意哪些问题? 答:不能改变运算符的优先级。 不能改变运算符的结合性(例如,算术运算符的结合性为从左到右,这一点不能改

50、变)。 默认参数不能喝重载的运算符一起使用,也就是说,在设计运算符重载成员函数时不能使用默认参数。 不能改变运算符的操作数的个数。 不能创建新的运算符,只有已有运算符可以被重载。 运算符作用于C+内部提供的数据类型时,原来含义保持不变。课本练习题5.1 n=105.2 10,205.3 i=10,d=0 i=2,d=15.65.4 n=10 n=305.5 1 2 3 4 5 6 7 8 9 10第6章练习题答案1、什么是模板? 答:模板把函数或类要处理的数据类型参数化,表现为参数的多态性。模板用于表达逻辑结构相同,且具体数据元素类型不同的数据对象的通用行为,从而使得程序可以从逻辑功能上抽象,

51、把被处理的对象(数据)类型作为参数传递。2、函数模板与函数有何关系? 答:函数模板是一个模板,其中用到通用类型参数,不能直接执行。函数是一个具体的函数,有具体的程序代码,可以执行。函数模板是用来生产具体函数的。3、类模板与类有和关系? 答:类模板使用户可以为类定义一种模式,使得类中的某些数据成员、成员函数的参数和返回值能取任意数据类型。类模板用于实现类所需数据的类型参数化。类是将数据和数据操作函数结合于一个单元内的机制,是一种用户自定义的数据类型。类模板是用来产生类的。课本练习题6.1 3,2.66.2 n=30 第7章练习题答案1、什么是继承?继承是面向对象程序设计使代码可以复用的最重要的手

52、段,它允许程序员在保持原有类特性的基础上进行扩展,并增加功能。作为类的构造机制,继承通过扩充、组合现有的类来构造新的类。2、什么是派生?派生就是可以从一个类派生出另一个类,派生出其他类的类称为基类或父类,被派生的类称为派生类或子类。一个派生类可以从一个基类派生,也可以从多个基类派生。3、继承方式有哪些?产生的结果是什么?继承方式有公有继承、私有继承、保护继承。当继承方式是公有继承时,基类的public和protected成员分别作为派生类的public和protected成员,派生类的其他成员可以直接访问它们。当继承方式是私有继承时,基类public和protected成员被继承后作为派生类的

53、私有成员,派生类的其他成员可以直接访问它们,但是在类外部通过派生类的对象无法访问它们。当继承方式是保护继承时,基类的public和protected成员被继承以后作为派生类的保护成员,这样派生类的其他成员就可以直接访问它们,但在类外部通过派生类的对象无法访问。4、什么是虚基类?当在多条继承路径上有一个公共的基类,在这些路径中的某几条汇合处,这个公共的基类就会产生多个实例(或多个副本),若只想保存这个基类的一个实例,可以将这个公共基类说明为虚基类。课本练习题7.1 constructng Base class constructing sub class destructing sub class destructing Base class7.2 10,207.3 20,207.4 x=3,y=5 x=4,y=5 x=2,y=37.5 constructing class A constructing class B1 cons

温馨提示

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

评论

0/150

提交评论