上海市高等教育自学考试
工业自动化专业(独立本科段)(B080603)
C++语言设计(02290)
自学考试大纲
上海交通大学自学考试办公室编
上海市高等教育自学考试委员会组编
2006年10月
Ⅰ. 课程性质及其设置目的与要求
一.课程性质、地位与任务
面向对象程序设计课程是工业自动化专业的一门重要的专业基础课,是一门理论阐述与上机实验紧密结合的课程。本课程是为了培养学生的面向对象程序设计的能力而设置的,通过本课程的学习,使得学生掌握面向对象的概念、方法和程序设计基本技能。本课程采用的程序设计语言为C++。
二.课程基本要求
通过本课程的学习,要求学生:
- 掌握C++的语法规则。
- 掌握计算机程序的编制和调试方法。
- 掌握面向对象的概念、方法和程序设计基本技能。
- 掌握求解实际问题的抽象能力。
本课程是一门计算机上机实践性很强的课程,学生应该通过习题练习来讲强对书本知识的理解,通过程序的编制、调试和运行来培养程序开发能力。
三.本课程与有关课程的联系
本课程同《计算机基础与程序设计》课程的关系非常密切,后者是前者的先修课程,为本课程提供了传统程序设计的数据类型、控制结构等基础知识。本课程的着重点在于C++中支持面向对象程序设计的部分,例如类与对象、派生类与继承、虚函数与多态性等。
Ⅱ. 课程内容与考核目标
第一章 面向对象程序设计概述
一.课程内容
- 什么是面向对象程序设计
- 对象与类
- 数据的抽象与封装
- 继承性
- 多态性
- 面向对象程序设计的语言
二.学习目的与要求
了解面向对象程序设计的特点;面向对象的基本概念;面向对象程序设计的语言。
重点是:对象与类;数据的抽象与封装;继承性;多态性。
三.考核知识点与考核要求
第一节 什么是面向对象程序设计,要求达到“识记”层次。
- 面向过程程序设计的基本概念
- 面向对象程序设计的基本概念
- 对象与类,要求达到“识记”层次。
- 对象与类的概念
- 对象的交互
- 类的确定与划分
第三节 数据的抽象与封装,要求达到“识记”层次。
- 现实世界中的抽象与封装
- 数据的抽象与封装的基本概念
- 对象的特性
第四节 继承性,要求达到“识记”层次。
- 继承的概念
- 继承的分类
- 继承与封装的关系
第五节 多态性,要求达到“识记”层次。
- 什么是多态性
- 重载的概念
- 面向对象程序设计的语言,要求达到“识记”层次。
第二章 C++概述
一.课程内容
- C++的起源和特点
- C++源程序的构成
- C++在非面向对象方面的一些特性
二.学习目的与要求
了解C++语言的特点;C++程序的组成;C++程序的编辑、编译和运行;C++中的一些非面向对象特性。
重点是C++的非面向对象特性:新的I/O流;const修饰符;内置函数;函数原型;带有默认参数的函数;函数重载;new和delete;引用。
三.考核知识点与考核要求
第一节 C++的起源和特点,要求达到“识记”层次。
- C++的起源
- C++的特点
第二节 C++源程序的构成,要求达到“识记”层次。
- C++程序的一般格式
- C++程序的结构特性
- C++程序的编辑、编译和运行
第三节 C++在非面向对象方面的一些特性,要求达到“识记”层次。
- 注释行
- 新的I/O流
- 灵活的局部变量说明
- 结构、联合和枚举名可直接作为类型名
- const修饰符
- 内置函数
- 函数原型
- 带有默认参数的函数
- 函数重载
- 作用域运算符“::”
- 无名联合
- 强制类型转换
- new和delete
- 引用
- void型指针
第三章 类和对象
一.课程内容
- 类与对象的基本概念
- 构造函数与析构函数
- 对象数组与对象指针
- 向函数传递对象
- 静态成员
- 友元
- 类对象作为成员
- 常类型
二.学习目的与要求
了解面向对象的基本概念━类;静态成员;友元;类对象成员。掌握定义类及其构造函数、析构函数和其他成员函数的方法;友元在运算符重载中的作用。
重点是构造函数和析构函数的使用;友元的使用。
三.考核知识点与考核要求
第一节 类与对象的基本概念,要求达到“识记”层次。
- 结构与类
- 成员函数的定义
- 对象的定义及使用
- 类的作用域
第二节 构造函数与析构函数,要求达到“简单应用”层次。
- 构造函数
- 默认参数的构造函数
- 析构函数
- 重载构造函数
- 拷贝构造函数
第三节 对象数组与对象指针,要求达到“识记”层次。
- 对象数组
- 对象指针
- this指针
第四节 向函数传递对象,要求达到“领会”层次。
- 使用对象作为函数参数
- 使用对象指针作为函数参数
- 使用对象引用作为函数参数
第五节 静态成员,要求达到“领会”层次。
- 静态数据成员
- 静态成员函数
第六节 友元,要求达到“简单应用”层次。
- 友元函数
- 友元成员
- 友元类
- 类对象作为成员,要求达到“领会”层次。
- 常类型,要求达到“识记”层次。
- 引用
- 常对象
- 常对象成员
第四章 派生类与继承
一.课程内容
- 派生类的概念
- 派生类的构造函数与析构函数
- 调整基类成员在派生类中的访问属性的其他方法
- 多重继承
- 赋值兼容规则
- 应用举例
二.学习目的与要求
了解类体系构筑的重要机制━继承。掌握类体系结构的设计能力。
重点是:类体系的构造;多重继承体系下存在的二义性;赋值兼容规则。
三.考核知识点与考核要求
第一节 派生类的概念,要求达到“识记”层次。
- 为什么要使用继承
- 派生类的声明
- 基类成员在派生类中的访问属性
- 派生类对基类成员的访问规则
第二节 派生类的构造函数与析构函数,要求达到“简单应用”层次。
- 派生类构造函数和析构函数的执行顺序
- 派生类构造函数和析构函数的构造顺序
第三节 调整基类成员在派生类中的访问属性的其他方法,要求达到“识记”层次。
- 同名成员
- 访问声明
第四节 多重继承,要求达到“领会”层次。
- 多重继承的声明
- 多重继承的构造函数与析构函数
- 虚基类
第五节 赋值兼容规则,要求达到“领会”层次。
-
- 应用举例,要求达到“综合应用”层次。
第五章 多态性
一.课程内容
- 编译时的多态性与运行时的多态性
- 函数重载
- 运算符重载
- 类型转换
- 虚函数
- 应用举例
二.学习目的与要求
理解多态性;虚函数;抽象类与具体类之间的区别。掌握在用户定义的类类型中重新定义运算符操作的方法;实现编译时的多态性和运行时的多态性的方法。
重点是:运算符重载的规则;运行时多态性的使用。
三.考核知识点与考核要求
第一节 编译时的多态性与运行时的多态性,要求达到“领会”层次。
-
- 函数重载,要求达到“简单应用”层次。
- 运算符重载,要求达到“简单应用”层次。
- 以外的运算符重载
- 友元运算符重载
- 成员运算符重载
- 成员运算符重载与友元运算符重载的比较
- “++”和“--”的重载
- 赋值运算符“=” 的重载
- 下标运算符“[]” 的重载
- 函数调用运算符“()” 的重载
- 类型转换,要求达到“领会”层次。
- 系统预定义类型间的转换
- 类类型与系统预定义类型间的转换
- 类型转换,要求达到“领会”层次。
第五节 虚函数,要求达到“简单应用”层次。
- 引入派生类后的对象指针
- 虚函数的定义及使用
- 纯虚函数和抽象类
第六节 应用举例,要求达到“综合应用”层次。
第六章 模板
一.课程内容
- 模板的概念
- 函数模板与模板函数
- 类模板与模板类
- 应用举例
二.学习目的与要求
了解模板机制。掌握设计函数模板和类模板的方法;使用模板函数和模板类的方法。
重点是设计及应用函数模板和类模板的方法。
三.考核知识点与考核要求
第一节 模板的概念,要求达到“识记”层次。
-
- 函数模板与模板函数,要求达到“领会”层次。
- 函数模板的声明与模板函数的生成
- 函数模板的异常处理
- 类模板与模板类,要求达到“领会”层次。
- 应用举例,要求达到“领会”层次。
- 函数模板与模板函数,要求达到“领会”层次。
第七章 C++的I/O流类库
一.课程内容
- C++为何建立自己的输入输出系统
- C++的流及流类库
- 预定义类型的输入输出
- 用户定义类型的输入输出
- 应用举例
二.学习目的与要求
了解C++用于输入输出操作的类体系━流类库。掌握为用户定义的类类型重载输入输出运算符>>、<<的方法。
重点是重载输入输出运算符。
三.考核知识点与考核要求
第一节 C++为何建立自己的输入输出系统,要求达到“识记”层次。
-
- C++的流及流类库,要求达到“识记”层次。
- C++的流
- 流类库
- C++的流及流类库,要求达到“识记”层次。
第三节 预定义类型的输入输出,要求达到“领会”层次。
- 无格式输入输出
- 输入输出的格式控制
第四节 用户定义类型的输入输出,要求达到“简单应用”层次。
- 重载输出运算符“<<”
- 重载输入运算符“>>”
第五节 应用举例,要求达到“简单应用”层次。
Ⅲ. 有关说明与实施要求
一.关于本考试大纲中有关术语的说明
在本大纲的“考核要求”中提出了“识记” 、“领会” 、“简单应用” 和“综合应用”四个能力层次,它们之间是递进等级关系,后者必须建立在前者的基础上。它们的含义是:
- “识记”:要求考生能够对大纲中的知识点,如定义、定理、公式、性质、法则等有清晰准确的认识,并能做出正确的判断和选择。(考题中占20%)
- “领会”:要求考生能够对大纲中的概念、定理、公式、法则等有一定的理解,清楚它与有关知识点的联系与区别,并能做出正确的表述和解释。(考题中占30%)
- “简单应用”:要求考生能够运用大纲中各部分的少数几个知识点,解决简单的计算、证明或应用问题等。(考题中占30%)
- “综合应用”:要求考生在对大纲中的概念、定理、公式、法则熟悉和理解的基础上,会运用多个知识点,分析、计算或推导解决稍复杂的问题。(考题中占20%)
简单地说,识记,能够指出是什么;领会,要能回答为什么;简单应用和综合应用,要能回答干什么和怎么干。
二.教材
《C++面向对象程序设计教程》,陈维兴、林小茶编著,清华大学出版社,2009年6月第3版。
《C++面向对象程序设计教程习题解析与上机指导》,陈维兴、陈昕编著,清华大学出版社,2003年5月第一版。
三.课程学分
本课程4学分。
四.对社会助学的要求
- 应熟悉本考试大纲提出的课程总要求和各章的知识点。
- 应掌握各知识点要求达到的考核层次,并理解对各知识点的具体考核要求。
- 教学过程中应以本大纲为依据,以本大纲指定的教材进行教学和辅导,不要随意增删内容或更改要求,以免与考试大纲脱节。
- 助学辅导时应重视基础知识和应用技能的培养,根据考生的特点,按照本大纲的具体要求制定并实施教学计划。
- 注意对考生自学能力的培养,要引导考生逐步学会独立思考,能自己提出问题、分析问题、做出判断和解决问题。
- 要使考生了解试题的难易程度和能力层次的高低要求不完全是一回事,每个能力层次中都可能出现不同难度的试题。
五.学习方法指导
本课程是一门计算机上机实践性较强的课程,考生应该创造条件多上机练习,将书中的例题和练习题录入计算机,通过编译、运行及分析程序结果来加深对课本知识的理解,并积累程序调试和开发的经验。
六.关于命题和考试的若干规定
- 本大纲各章提到的“考核知识点与考核要求”中的各条知识细目,都属于考核的内容。考试命题覆盖到章,并适当考虑课程重点、章节重点,加大重点内容的覆盖度。
- 试卷中对不同能力层次要求的分数比例大致为:识记占20%,领会占30%,简单应用占30%,综合应用占20%。
- 试题的难易程度可分为四档:易、较易、较难和难。这四档在每份试卷中所占的分数比例一般为2:3:3:2,而且各能力层次中都存在着不同难度的试题。
- 试题的主要题型有:单项选择题、填空题、阅读程序题、程序检错题、编程题。
- 考试方式为闭卷、笔试。考试时间为150分钟。评分采用100分制,60分为及格。考试时只允许携带笔和橡皮,答卷必须用蓝色或黑色水笔,不允许使用其他颜色。
在命题工作中应该按照本考试大纲中所规定的题型来命制,考试试卷所使用的题型可以略少,但不能超出规定。
附录 题型举例
一、填空题:
- C++有三个主要特性,它们是( )、继承性和多态性。
- 开发一个C++程序需要经过四个步骤,它们是:( )、编译、链接和运行。
二、单项选择题:
从备选的4个答案中选定1个最符合题目要求的答案。
1.适合采用内联形式的函数是( )。
A、函数体的语句很多的函数
B、函数体中包含switch语句的函数
C、函数体中包含循环语句的函数
D、常被调用、小而简单的函数
2.对于带缺省参数的函数,以下( )的说法是正确的。
A、只允许在说明函数原型时为参数指定缺省值。
B、只允许在定义函数时为参数指定缺省值。
C、应该同时在函数原型声明和函数定义中指定缺省值。
D、定义缺省参数时按照从右至左的顺序,调用时将实参从左至右逐一传递给形参。
三、阅读程序题
1.阅读下列程序,写出程序运行后的输出结果。
#include<iostream.h>
#include<math.h>
class complex{
private:
double real;
double imag;
public:
complex(double r=0.0,double i=0.0);
~complex();
double abscomplex();
};
complex::complex(double r,double i)
{
cout<<"constructing..."<<endl;
real=r;
imag=i;
}
complex::~complex()
{ cout<<"destructing..."<<endl;}
double complex::abscomplex()
{
double t;
t=real*real+imag*imag;
return sqrt(t);
}
main()
{
complex A(3.0,4.0);
cout<<"abs of complex A="<<A.abscomplex()<<endl;
return 0;
}
四、程序检错题
1.下列程序段中是否有错?如果有,请划出错误点并说明原因。
class point {
private:
int x=0,y=0;
public:
void point();
point(int,int);
point(point &objr);
int getx();
int gety();
};
五、编程题
1.以下程序包含5个空白处,分别用① ~ ⑤标明,请用合适的语句或者表达式来代替它们。
1. student类的声明如下所示
class student
{ char *name;
int score;
public:
student(char *ps, int scr);
~student( );
};
student::student(char *ps, int scr)
{ name =① ;
strcpy(②, ③);
④ ; }
student::~student()
{ ⑤ ;}

