《面向对象程序设计》课程标准
一、课程概述
《面向对象程序设计》是计算机科学与技术专业的重要专业课程。当前面向对象方法已逐渐取代面向过程方法成为程序设计领域的主流技术,这是程序设计发展历史的一个里程碑。本课程的教学目标是以C++语言为工具,向学生介绍面向对象程序设计语言与面向对象程序设计方法。通过课堂教学、课外练习与上机实习相结合,使学生在程序设计方法、程序设计语言与程序设计工具三方面受到严格、系统的训练,培养学生更系统、更严密地分析问题和解决问题的思维能力,从而能熟练地利用计算机解决实际问题,为后续专业课程打下扎实的基础。
通过本课程的教学,要求学生:
(1) 牢固掌握C++语言基本数据类型、 复合数据类型、 基本控制结构、 函数以及面向对象程序设计中类与对象、 继承、 多态性等基本概念;
(2) 掌握类属机制、 C++输入输出机制、程序断言、异常处理等高级机制;
(3) 对面向对象程序构造方法、抽象数据类型、软件重用思想、其他程序设计风范, 其他面向对象程序设计语言有所了解。
本课程的先修课程为“计算机导论”、 “C语言”,后续课程主要是“数据结构与算法”、 “编译原理”与“软件工程”。
二、课程目标
1. 知道《面向对象程序设计》这门学科的性质、 地位、 研究范围、 学科进展和未来方向等。对面向对象程序构造方法、 抽象数据类型、 软件重用思想、 其他程序设计风范、 其他面向对象程序设计语言有所了解。
2. 理解该门学科的主要概念、 基本原理和策略等。
3. 掌握C++语言基本数据类型、复合数据类型、基本控制结构、函数以及面向对象程序设计中类与对象、继承、多态性等基本概念;掌握类属机制、C++输入输出机制、 程序断言、异常处理等高级机制。
4. 能够把所学的原理应用到具体的实践中去,如能利用C++语言编写程序解决一些具体的问题,培养学生发现、分析和解决问题的能力等。
三、课程内容和教学要求
这门学科的知识与技能要求分为知道、理解、掌握、学会四个层次。这四个层次的一般涵义表述如下:
知道———是指对这门学科和教学现象的认知。
理解———是指对这门学科涉及到的概念、原理、策略与技术的说明和解释,能提示所涉及到的教学现象演变过程的特征、形成原因以及教学要素之间的相互关系。
掌握———是指运用已理解的教学概念和原理说明、解释、类推同类教学事件和现象。
学会———是指能模仿或在教师指导下独立地完成某些教学知识和技能的操作任务,或能识别操作中的一般差错。
教学内容和要求表中的“√”号表示教学知识和技能的教学要求层次。
本标准中打“*”号的内容可作为自学,教师可根据实际情况确定要求或不布置要求。

教学内容
教学要求
知道
理解
掌握
学会
第1章 绪论
  1.1 计算机程序设计语言的发展
1.2 面向对象的方法
1.3 面向对象的软件开发
1.4 信息的表示与存储
1.5 程序的开发过程
第2章 c++简单程序设计
2.1  c++语言概述
2.2 基本数据类型和表达式
2.3 数据的输入输出
2.4 算法的基本控制结构
2.5 自定义数据类型
第3章 函数
3.1 函数的定义与使用
3.2 内联函数
3.3 带默认形参值的函数
3.4 函数重载
3.5 使用c++系统函数
第4章 类与对象
4.1 面向对象程序设计的基本特点
4.2 类和对象
4.3 构造函数和析构函数
4.4 类的组合
4.5 uml图形标识
4.6 程序实例——人员信息管理程序
第5章 c++程序的结构
5.1 标识符的作用域与可见性
  5.2 对象的生存期
5.3 类的静态成员
5.4 类的友元
5.5 常引用
5.6 多文件结构和编译预处理命令
5.7 程序实例——人员信息管理程序1
第6章 数组、指针与字符串
6.1 数组
6.2 指针
6.3 动态内存分配
6.4 深拷贝与浅拷贝
windows程序设计第7版6.5 字符串
6.6 程序实例——人员信息管理程序
第7章 继承与派生
7.1 类的继承与派生
7.2 访问控制
7.3 类型兼容规则
7.4 派生类的构造和析构函数
7.5 派生类成员的标识与访问
7.6 程序实例——用高斯消去法解线性方程组
7.7 程序实例——人员信息管理程序
第8章 多态性
8.1 多态性概述
8.2 运算符重载
8.3 虚函数
8.4 抽象类
8.5 程序实例——用变步长梯形积分算法求解函数的定积分
8.6 程序实例——人员信息管理程序
第9章 体类和体数据的组织
9.1 函数模板与类模板
9.2 线性体
9.3 体数据的组织
9.4 程序实例——人员信息管理程序
第10章 泛型程序设计与C++标准模板库
第11章 流类库与输入/输出
11.1 I/O流的概念及流类库结构
11.2 输出流
11.3 输入流
11.4 输入/输出流
11.5 程序实例——人员信息管理程序
第12章 异常处理
第13章 MFC库与Windows程序开发概述
13.1 Windows的编程模式
13.2 MFC库简介
13.3 使用VisualcC++开发Windows程序的步骤
13.4 综合实例——人员信息管理程序
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
四、课程实施
1、 课时安排与教学建议。
计算机科学与技术专业安排72课时,其中理论讲授36课时,自主学习18课时,实验课18课时。通信工程专业、信息管理与信息系统专业安排54课时, 其中理论讲授44课时,实验课10课时。具体课时安排如下:
主要内容
课时建议
教与学的方法建议
按72课时计
(讲授36课时)
按54课时计
(讲授44课时)
第1章 绪论
讲课1学时
讲课1学时
讲授为主
第2章 c++简单程序设计
讲课2学时、 习题与实验讲解1学时
讲课2学时、 习题与实验讲解1学时
讲授为主并辅以实例讨论、 分析
第3章 函数
讲课2学时
讲课2学时、习题与实验讲解2学时
讲授为主并辅以实例讨论、 分析
第4章 类与对象
讲课3学时、 习题与实验讲解1学时
讲课4学时、习题与实验讲解2学时
讲授为主并辅以实例讨论、 分析
第5章 c++程序的结构
讲课2学时
讲课2学时
讲授为主并辅以实例讨论、 分析、 多媒体演示
第6章 数组、指针与字符串
讲课3学时、 习题与实验讲解1学时
讲课4学时、习题与实验讲解2学时
讲授为主并辅以实例讨论、 分析
第7章 继承与派生
讲课4学时
讲课4学时、习题与实验讲解2学时
讲授为主并辅以实例讨论、 分析
第8章 多态性
讲课4学时,习题与实验讲解2学时
讲课4学时、习题与实验讲解2学时
讲授为主并辅以实例讨论、 分析
第9章 体类和体数据的组织
讲课2学时
讲课2学时
讲授为主、多媒体演示
第11章 流类库与输入/输出
讲课2学时、 习题与实验讲解2学时
讲课2学时、 习题与实验讲解2学时
讲授为主并辅以实例讨论、 分析
第13章 MFC库与Windows程序开发概述
讲课2学时
讲课2学时
讲授、多媒体演示与讨论
复习
2学时
2学时
2、 教学组织形式与教学方法要求。
1)打破传统的教学模式,注意教学方法的灵活性,建立多种教学媒体综合运用的运行机制,逐步建立适合学生个别化自主学习的支持服务体系和质量保证体系。
2)充分发挥学生的主动性,并能激发学生的学习热情,使学生会学和主动学习。注意教学方法的灵活性,组织学生自我经验叙述、讨论、问题教学、阅读指导等
(3)培养学生发现问题、 分析问题、 解决问题的能力和探究意识。
五、教材选用
教材
[1] 郑莉、董渊、张瑞丰,《C++语言程序设计(第3版)》,清华大学出版社,2003
参考资料
[2] 郑莉、董渊、张瑞丰,《C++语言程序设计(第3版)学生用书》,清华大学出版社,2004
[3] 李师贤、 李文军、 周晓聪,《面向对象程序设计基础》,高等教育出版社,1998
[4] 周晓聪、 李师贤、 李文军,《面向对象程序设计-实践与提高》,中山大学计算机科学系讲义1999
[5] 林锐,《高质量程序设计指南——C++/C语言》,电子工业出版社,2002
[6]  Herbert Schildt,《C++从入门到精通》,学苑出版社,1994
六、课程评价
1、 这门学科的评价依据是本课程标准规定的课程目标、 教学内容和要求。
2、 考试时间:120分钟。
3、 考试方式、 分制与分数解释
采用闭卷+笔试的期终考试、实验考核和和平时成绩(主要为作业和实验报告)相结合方式评定学生成绩。以百分制评分,60分为及格,满分为100分。其中,平时成绩为10分,实验考核为20分,期终考试卷面为70分。
4、 题型:填空题,选择题,简答题,改错题,程序分析题,编程题等。
5、 样题与目标定位示例
A. 填空题
面向对象程序中,实体的状态由_____表示,其行为由______表示。
B. 选择题
下面哪个变量说明定义了一个字符串数据?
A) char string[20]      B)  char string[]="A string!"; 
C)  char string[8]="Astring!";      D) char *string;   
C. 简答题
什么是类的构造函数?
D. 改错题:
指出下列程序的错误
class Line  { 
int x = 0, y = 0; 
public:    int setx(int x = 0) {Line::x = x; return 0;}
              int sety(int y = 0) {Line::y = y; return 0;}
};
E. 程序分析题
给出下面程序的输出结果
#include <iostreamh>
#include <stringh>
class BASE {
public:
        BASE()    { cout << "\nConstruct BASE!";    }
        ~BASE()    {cout << "\nDestruct BASE!";    }
};
class DERIVE: public BASE {
public:
        DERIVE() {    cout << "\nConstruct DERIVE!";    }
        ~DERIVE()    {cout << "\nDestruct DERIVE!";    }
};
int main(){
        BASE base;
        DERIVE derive;
        return 1;
}
F. 编程题
编写一程序,要求至少包含一个类的定义,使其计算下面数列的前n项和。
a1=1,  a2=1,  a3=1,  a4=4,    an=an-3+2*an-2+an-1, 
制定该课程标准小组成员签名:
审核者签名: