= 《面向对象程序设计(C++)》理论教学大纲 = 1. 课程名称:面向对象程序设计(Object-Oriented Programming (C++)) 1. 学分/总学时:2/36 1. 开课单位:计算机科学与工程学院 == 课程的性质、目的和任务 == 《面向对象程序设计(C++)》是讲授面向对象程序设计的课程,选用C++做为程序语言,以Microsoft的Visual C++ 6.0做为集成开发环境。开设本课程旨在向学生传授最纯粹的面向对象程序设计概念和最先进的可视化编程技术。 本课程的内容有: 1. C++语法知识,包括C++语言在面向过程方面的扩充、类与对象、构造函数和析构函数、类的静态成员、类的常成员、继承与派生、多态性和虚函数、友元、运算符重载、流类库的输入/输出、异常处理等; 2. Windows程序机制和MFC编程:消息循环和事件驱动,API,MFC,消息映像、常用类和控件、应用程序体系结构; 3. 简单的应用编程:数据库编程、Internet编程、DLL编写。 本大纲不包括C语言的内容,要求学生已修过《C语言程序设计》。 本课程有理论课36学时,上机36学时,另外需要安排课外实践20-36学时(在另一门课《C++课程设计》中)。 通过本课程的学习,要求学生达到: 1. 掌握C++的主要语法,能读懂C++编制的程序,能编写简单的C++程序;在掌握C++语言的同时,能够对现实世界中较简单的问题及其解决方法用计算机语言进行描述。深刻理解面向对象程序设计思想和Windows应用程序机制,彻底从面向过程的C程序设计中脱胎换骨; 2. 对MFC库,常用的会使用,一般的在借助于工具书和其它文档时会使用;掌握4种应用程序体系结构:CWinApp/CWnd、基于对话框、SDI、MDI; 3. 了解一些DLL、数据库、网络等编程技术。 == 学习本课程学生应掌握的前设课程知识 == 本课程的先行课程有:《C语言程序设计》、《计算机原理》。 == 学时分配 == 课程授课时间为72学时,其中讲课36学时,实验36学时 ||章节||理论||实验||合计|| ||第1章||1||0||1|| ||第2章||1||2||3|| ||第3章||2||2||4|| ||第4章||4||2||6|| ||第5章||2||2||4|| ||第6章||2||2||4|| ||第7章||4||2||6|| ||第8章||4||4||8|| ||第9章||2||4||6|| ||第10章||2||4||6|| ||第11章||2||4||6|| ||第12章||2||4||6|| ||第13章||8||4||12|| ||合计||36||36||72|| == 课程内容和基本要求 == 1. 概述(1学时) a. 计算机程序设计语言的发展 a. 面向对象的方法 a. 面向对象的软件开发 基本要求: 了解计算机程序设计语言的发展;理解面向对象的概念和方法;理解程序的开发过程和面向对象程序的开发过程。 1. C++简单程序设计(3学时) a. C++语言概述 a. 基本数据类型和表达式 a. 数据的输入与输出 基本要求: 掌握C++的新注释、作用域限定符、变量的声明位置;掌握符号常量const的用法;掌握基本的I/O流与cin、cout用法;掌握类型定义语句typedef和枚举类型enum。 1. 函数(4学时) a. 函数的定义与使用 a. 内联函数 a. 带默认形参值的函数 a. 函数重载 a. 函数模板 基本要求: 牢固掌握引用类型的使用;深刻理解函数的参数传递,值调用和引用调用;掌握内联函数、带默认形参值的函数的语法和适用场合;牢固掌握函数重载的用途、定义和静态联编机制;掌握函数模板的使用;理解template和typename保留字。 1. 类与对象(6学时) a. 面向对象的思想 a. 面向对象程序设计的基本特点 a. 类和对象 a. 构造函数和析构函数 a. 类的组合 a. 类模板 a. 面向对象标记 基本要求: 领会结构化程序设计和面向对象程序设计的思想和区别;掌握面向对象程序设计的基本概念:抽象、封装、继承和多态;牢固掌握类的声明,类成员的访问控制,类的成员函数,对象的声明等类与对象的基本语法内容;牢固掌握构造函数和析构函数,拷贝构造函数的概念和写法;掌握类的组合,前向引用声明;掌握类模板,template保留字,class保留字,类模板的声明和模板参数,模板类的实例化,类模板的成员函数。 1. C++程序的结构(4学时) a. 作用域与可见性 a. 生存期 a. 数据与函数 a. 静态成员 a. 友元 a. 共享数据的保护 基本要求: 领会作用域和可见性,对象的生存期的概念;理解数据成员在类内的共享;理解静态数据成员和静态函数成员的用法及static保留字;理解并掌握友元函数和友元类,friend保留字;理解并掌握常引用、常对象和常成员函数,const保留字。 1. 数组、指针与字符串(4学时) a. 数组 a. 指针 a. 动态内存分配 a. 字符串 基本要求: 深刻理解对象数组,对象指针;深刻理解指针参数,指针型函数和指向函数的指针;理解动态内存分配和new、delete运算;掌握字符串类string的定义和使用。 1. 继承与派生(6学时) a. 继承与派生 a. 访问控制 a. 派生类的构造和析构函数 a. 派生类成员的标识与访问 a. 赋值兼容规则 基本要求: 彻底掌握派生类的声明,派生的访问控制;理解派生类的构造和析构函数;深刻理解赋值兼容规则,了解虚基类的用法。 1. 多态性(8学时) a. 多态性概述 a. 运算符重载 a. 虚函数 a. 抽象类 基本要求: 理解多态的概念、种类和区别;彻底掌握运算符重载,掌握重载为成员函数、友元函数两种方法的用法;理解虚函数的概念:一般虚函数成员,虚析构函数;掌握纯虚函数和抽象类。 1. 群体类(6学时) a. 线性群体 a. C++标准库中的容器类 基本要求: 掌握数组类、链表类、栈类和队列类的C++描述;了解标准C++库中的容器类,容器概念,迭代子,算法,适配子,容器的接口。 1. 群体数据的组织(6学时) a. 插入排序 a. 选择排序 a. 交换排序 a. 顺序查找 a. 折半查找 a. 标准C++库中的算法 基本要求: 掌握标准C++库中的排序算法;掌握标准C++库中的查找算法。 1. 流类库与输入/输出(6学时) a. I/O流的概念 a. 输出流 a. 输入流 a. 输入/输出流 基本要求: 理解I/O流的概念;掌握输出流,输出流对象的构造,格式控制及成员函数;掌握输入流,输入流对象的构造,提取运算符和操纵符及成员函数。 1. 异常处理(6学时) a. 异常处理的基本思想 a. C++异常处理的实现 a. 异常处理中的构造与析构 基本要求: 理解异常处理的基本思想;掌握C++异常处理的实现,异常处理中的构造和析构。 1. MFC库与Windows程序开发概述(12学时) a. Windows的编程模式 a. MFC简介 a. 使用Visual C++开发Windows程序的步骤 基本要求: 理解Windows的编程模式;掌握使用Visual C++开发Windows程序的步骤;了解MFC库的种类、作用和内容;掌握VC的四种应用程序体系结构:CWinApp/CFrameWnd结构、基于对话框的体系结构、单文档结构(SDI)和多文档结构(MDI);了解VC的主要控件及其类的方法(公有成员函数):按钮、单选框、复选框、编辑框、列表框、组合框、列表控件、滚动条、进度条等;掌握初步的数据库应用编程,ODBC,Cdatabase类,Crecordset类,CrecordView类及其重要成员函数;掌握初步的网络应用编程,CWebBrowser控件,CSocket类,WinInet类族;了解DLL的编写和使用,LoadLibrary()、GerProcAddress()函数。了解VC的多媒体应用编程;了解VC打印程序的几种常用编程方法。 == 教材及学生参考书 == 教材: 1. 《C++语言程序设计》 郑莉、董渊编著.清华大学出版社 2001 参考书和网站: 1. 《面向对象程序设计》 刘振安主编.经济科学出版社 1. 《Visual C++ 6.0实例教程》 门槛创作室.电子工业出版社 1. 《Visual C++简明教程》 邓力编著.海洋出版社 1. 《Visual C++ 6.0编程实例·技巧》 李国徽等编著.华中理工大学出版社 1. 《深入浅出MFC》 俊杰著.电子版 1. http://www.ccw.com.cn ── E海航标 1. http://www.vcfan.com ── 程序家园 1. http://msdn.microsoft.com ── MSDN在线帮助 == 课外学习要求 == 为了培养学生主动学习能力,综合分析和解决问题的能力,要求学生在课外阅读参考书目,并要有相当多的动手实践,培养类的设计与修改能力,学会MFC类库的使用和借鉴;彻底掌握VC调试、帮助、出错信息处理、MFC源代码查阅等实践能力。 == 考核方式及成绩评定方法 == 期末采用闭卷考试形式。 总评成绩:作业、平时考勤及学习态度(含实验)占 30% ;期末闭卷考试占 70%。 == 其它说明 == C++语言的集成开发环境一般选用Microsoft的Visual C++ 6.0,但也可以选Visual C++ .Net。甚至在前面的纯语法部分选Turbo C++,都是可以的。