spContent=面向对象技术从二十世纪90年代软件开发方法的成为软件开发的主流方法,至今依然是计算机设计人员必须掌握的核心技术。面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。
面向对象技术从二十世纪90年代软件开发方法的成为软件开发的主流方法,至今依然是计算机设计人员必须掌握的核心技术。面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。
—— 课程团队
课程概述
- 《面向对象程序设计》是重要的专业基础课和必修课,是计算机类专业的核心课程之一。课程以C++为核心编程语言、以主流开发工具为编程平台,主要讲授面向对象程序设计的思想和方法,使学生充分掌握面向对象程序设计的精髓,具备运用面向对象的程序设计方法分析和求解程序设计领域问题的能力。学习了该课程后达到如下要求:
- 1:能够熟练掌握面向对象程序设计的编程核心思想、语法规则和面向对象的基本原理。
- 2:能够明白继承与派生,多态、文件处理的技术特点和应用场景,并能在具体的应用中采用合适的技术进行设计。
- 3:理解面向对象程序设计的机理,清楚基于面向对象进行程序设计的思路和程序运行机制。
- 4:具有对面向对象的代码进行阅读、分析和理解的能力,能够理解面向对象设计中的关键技术和方法。
- 5:能够使用面向对象思想对应用问题进行分析和识别,能够实现软件设计,并编写程序进行模拟和仿真。
- 6:能够熟悉常用的面向对象编程工具和它们的特点,能够使用期中的一种进行程序开发。
- 为后续课程和项目开发打下良好的理论和技术基础,同时也能为就业提供支撑。
授课目标
课程目标1:从程序设计基础的微观思维逐渐转换到面向对象的宏观思维,培养学生的大局意识。
课程目标2:能够熟练掌握面向对象程序设计的编程核心思想、语法规则和面向对象的基本原理。
课程目标3:能够明白继承与派生,多态、文件处理的技术特点和应用场景,并能在具体的应用中采用合适的技术进行设计。
课程目标4:理解面向对象程序设计的机理,清楚基于面向对象进行程序设计的思路和程序运行机制。
课程目标5:具有对面向对象的代码进行阅读、分析和理解的能力,能够理解面向对象设计中的关键技术和方法。
课程目标6:能够使用面向对象思想对应用问题进行分析和识别,能够实现类和类之间关系的设计,并编写程序进行模拟和仿真。
课程目标7:能够熟悉常用的面向对象编程工具和它们的特点,能够使用期中的一种进行程序开发。
课程大纲
第1章 类和对象
课时目标:本章支持课程目标:课程目标1:从程序设计基础的微观思维逐渐转换到面向对象的宏观思维,培养学生的大局意识。课程目标2:能够熟练掌握面向对象程序设计的编程核心思想、语法规则和面向对象的基本原理。课程目标课程目标3:理解面向对象程序设计的机理,清楚基于面向对象进行程序设计的思路和程序运行机制。5:能够使用面向对象思想对应用问题进行分析和识别,能够实现类和类之间关系的设计,并编写程序进行模拟和仿真。课程目标6:能够熟悉常用的面向对象编程工具和它们的特点,能够使用期中的一种进行程序开发。教学要求:1.了解面向对象编程思想,识别与事件驱动方法、面向过程等程序设计方法的异同、以及了解面向对象开发的优劣,掌握抽象和封装技术的实现和应用。2.掌握构造函数和析构函数的定义和作用。3.掌握类成员的静态特性的用法,掌握友元机制。4.具有使用类设计简单数据结构的能力。5.具有为数学、物理及工程中的实体设计类模块的能力。6.具有能够封装数学、物理及工程中数学表达式、算法及操作的能力。
3. 构造函数和析构函数。(讲授+案例+演示)
4. 对象的使用。(讲授+案例+演示)
5. 静态成员。(讲授+案例)
6. 友元。(讲授+案例)
7. 常对象和常成员。(讲授)
8. 对象内存空间的分配和释放。(讲授+案例+演示)
9. 组合
10. 编程实例:单向链表。
第2章 继承和派生
课时目标:本章支持课程目标:课程目标1:从程序设计基础的微观思维逐渐转换到面向对象的宏观思维,培养学生的大局意识。课程目标2:能够熟练掌握面向对象程序设计的编程核心思想、语法规则和面向对象的基本原理。课程目标3:能够明白继承与派生,多态、文件处理的技术特点和应用场景,并能在具体的应用中采用合适的技术进行设计。课程目标4:理解面向对象程序设计的机理,清楚基于面向对象进行程序设计的思路和程序运行机制。教学要求:1.掌握单继承和多继承中派生类的定义和使用。2.掌握继承中二义性问题的解决措施;掌握虚基类的应用场合与方法。3.掌握继承与派生技术,能将数学、物理与工程中的一些复杂问题模块化,并实现模块的协同工作。
1. 基类和派生类。(讲授+自学)
思政元素:继承革命先辈的遗志,弘扬中华优秀传统文化,继承和发扬伟大民族精神,继承革命光荣传统传承红色基因,为中华民族的伟大复兴作出我们的贡献!“不忘初心,牢记使命”
2. 单继承。(讲授+案例+演示)
3. 多继承。(讲授+案例+演示)
思政元素:光荣传统:尊老爱幼、与人为善、爱国爱家....... 都需要继承。
4. 虚基类。(讲授+案例+演示)
多态性
课时目标:本章支持课程目标:课程目标2:能够熟练掌握面向对象程序设计的编程核心思想、语法规则和面向对象的基本原理。课程目标3:能够明白继承与派生,多态、文件处理的技术特点和应用场景,并能在具体的应用中采用合适的技术进行设计。课程目标4:理解面向对象程序设计的机理,清楚基于面向对象进行程序设计的思路和程序运行机制。课程目标5:具有对面向对象的代码进行阅读、分析和理解的能力,能够理解面向对象设计中的关键技术和方法。课程目标6:能够使用面向对象思想对应用问题进行分析和识别,能够实现类和类之间关系的设计,并编写程序进行模拟和仿真。教学要求:1. 了解多态性的概念及实现;掌握运算符重载、虚函数设计及抽象类设计。2.掌握多态性技术,数学、物理及工程中的数学公式、算法及操作能用成员函数多态设计。3.通过函数重载、运算符重载、虚函数、抽象类等的学习,了解面向对象系统的静态联编和动态联编技术的实现。4.通过函数指针的应用,了解事件驱动机制工作的原理。
1. 多态性的概念及实现。(讲授+自学)
2. 运算符重载。(讲授+案例+演示)
3. 虚函数。(讲授+案例+演示)
4. 抽象类。(讲授+案例+演示)
第4章 模板
课时目标:本章支持课程目标:课程目标1:从程序设计基础的微观思维逐渐转换到面向对象的宏观思维,培养学生的大局意识。课程目标2:能够熟练掌握面向对象程序设计的编程核心思想、语法规则和面向对象的基本原理。课程目标6:能够使用面向对象思想对应用问题进行分析和识别,能够实现类和类之间关系的设计,并编写程序进行模拟和仿真。教学要求:1. 理解模板的概念;掌握函数模板和模板函数;掌握类模板和模板类;了解STL编程技术。2.利用模板技术解决数学、物理及工程中类型参数化问题。3.通过模板的学习,了解了STL编程技术。
1. 模板的概念。(讲授+自学)
2. 函数模板和类模板。(讲授+案例+演示)
3. 类模板和模板类。(讲授+案例+演示)
4. STL编程。(讲授+自学)
第5章C++输入输出处理和文件系统
课时目标:本章支持课程目标:课程目标2:能够熟练掌握面向对象程序设计的编程核心思想、语法规则和面向对象的基本原理。课程目标3:能够明白继承与派生,多态、文件处理的技术特点和应用场景,并能在具体的应用中采用合适的技术进行设计。课程目标7:能够熟悉常用的面向对象编程工具和它们的特点,能够使用期中的一种进行程序开发。教学要求:1.了解I/O流的概念及基本的输入输出流;掌握流的格式控制;掌握流的错误检测与处理;了解字符和字符串的处理函数;掌握文件处理;了解字符串流及其处理。2. 掌握输入输出格式控制及文件系统,可以解决数学、物理及工程中的实体对象的输入输出问题。
1. I/O流的概念。(自学)
2. 基本的输入输出流。(自学)
3. 流的格式控制。(讲授+案例+演示)
4.流的错误检测与处理。(讲授+案例+探究+演示)
5.字符和字符串的处理函数。(讲授+自学)
6. 文件处理。(讲授+案例+探究+演示+实验)
7. 字符串流及其处理。(自学)
展开全部
预备知识
证书要求
序号 | 考核方式或途径 | 考核要求 | 考核权重 | 考核对应的 课程目标 | 备注 |
| 平时作业 | 按照作业进行评分,总分数平均计算 | 10% | 1,2 | |
| 上机实验 | 主要考查学生分析能力、程序设计能力 | 15% | 1,2,6,7 | |
| 上机考试 | 考查编程能力 | 15% | 6 | |
| 期末考试 | 闭卷考试,选择题和判断题(或填空题)占比30%,阅读程序写结果约20%,阅读程序并填空 约25%,编程题 约25% | 60% | 2,4,5,6 | |
总评成绩 | | 100% |
| |
参考资料
1.《C++Primer Plus(第六版)中文版》[美]Stephen Prata著,人民邮电出版社,2010年第6版。
2.《C++同步练习及实验指导》,潘雨清、曹汉清、郑文怡、刘金平编著,江苏大学出版社,2012年第1版。
3. 编程学习网站:https://www.codewars.com/
4. 在线学习C++的网站:https://en.cppreference.com/w/
5. C++学习网站:https://www.runoob.com/cplusplus/cpp-tutorial.html
6. Internet sites and files of interest to C++ users:
https://www.robertnz.net/cpp_site.html