面向对象程序设计(C++)(自主模式)

自主模式

  • 什么是随堂模式?

    随堂模式课程一般为每学期一轮次,课程每周更新,作业、考试有截止时间,由课程提供方老师、助教指导,课程完结,成绩由老师确认后,统一发放证书。

  • 什么是自主模式?

    自主模式课程常年开放加入,课件全部开放,作业、考试无截止时间,有学堂在线招募选拔的助教指导,考核通过即可自动获得证书。

来自于: 清华大学 | 分类: 计算机(428)

课程描述

以C++语言为基础,从设计层面介绍程序设计的重要设计思想和经典设计模式,如面向对象程序设计、基于接口编程、泛型编程等,还将介绍对标准模板库STL。

什么是认证证书?
免费学习
认证学习
名师签名
实名认证
权威性
纸质证书
付费购买
免费赠送

课程简介

本课程是“程序设计基础”的后续课程,重点在于提升和强化学习者的抽象思维能力,培养对于变与不变的深刻理解。课程将以C++语言为媒介,以任务驱动为手段,引领学习者掌握如何用C++语言提供的各种技术手段来对复杂世界及其蕴含的关系进行描述。

本课程希望学习者已学习过一门高级语言,已掌握了一些基本的编程技能,也适合于那些希望了解C++语言并运用C++语言进行高质量程序设计的学习者。

课程使用的语言是C++,在通过一定篇幅介绍C++的主要语法知识后,将重点围绕什么是接口、怎么设计、实现和使用接口、如何在程序设计中体现“开闭”原则,以及如何实现数据表示与操作的分离等内容展开介绍和讨论。课程除了介绍传统的面向对象程序设计的基础知识,还会讨论如何进行基于接口编程,如何进行泛型程序设计,还会讨论到C++语言的标准模板库的核心内容。

展开

课程章节

第一讲 课程简介与编程环境
1.0 课程定位、教学内容
1.1 编程环境与工具
1.2 main函数的命令行参数
作业一
第一章讨论区
第二讲 基础语法(1)
2.1 变量定义
2.2 变量的初始化、类型推导与基于范围的循环
2.3 函数重载
2.4 函数参数的缺省值与追踪返回类型的函数
2.5 类的定义
2.6 类成员的访问权限与友元
作业二
第二章讨论区
第三讲 基础语法(2)
3.1 构造函数析构函数
3.2 赋值运算符重载
3.3 流运算符重载
3.4 函数运算符重载
3.5 下标运算符与自增减运算符重载
3.6 静态成员与常量成员
3.7 对象组合
3.8 移动构造函数
3.9 default修饰符
作业三
第三章讨论区
第四讲 基础语法(3)
4.1 继承
4.2 函数重写
4.3 虚函数
4.4 自动类型转换
4.5 禁止自动类型转换
4.6 强制类型转换
4.7 函数模板
4.8 类模板
4.9 成员函数模板
4.10 模板特化
作业四
第四章讨论区
第五讲 找到对象,确定接口
5.0 引言
5.1 从FOP到OOP
5.2 对象在哪里
5.3 接口在哪儿
5.4 实现接口
5.5 变与不变:多态的威力
5.X 小结
第六讲 算法横向拆分,分离步骤
6.0 引言
6.1 从负载监视器的设计开始
6.2 接口的分离与单一责任原则
6.3 委托与接口的进一步分解
6.4 分离不同层面的可变性
6.X 小结
第七讲 算法纵向拆分,分离表示
7.0 引言
7.1 迭代器
7.2 迭代器的实现
7.3 迭代器与模板
7.4 算法与数据的解耦
7.5 抽象结构与类模板
7.6 函数对象与算法分解
7.7 基于模板的策略模式
7.X 小结
第八讲 基于接口组合,应对复杂变化
8.0 引言
8.1 已有资源的组合
8.2 适当引入接口
8.3 接口不变时的功能变化
8.4 装饰
8.5 责任的传递与责任链
8.X 小结
第九讲 增加抽象层级,隔离复杂变化
9.0 引言
9.1 通过封装增加隔离、应对变化
9.2 增加抽象层,应对变化
9.3 相互关联对象的创建
9.4 示例:自动组卷系统设计
9.5 设计思路(上)
9.6 设计思路(中)
9.7 设计思路(下)
9.X 小结
课程总结
期末考试
期末考试

授课教师

  • 徐明星 清华大学 计算机系 副教授

    徐明星,博士,副教授。国家级精品课程“程序设计基础”课程负责人、国家级精品资源共享课“计算机语言与程序设计”建设负责人。主讲《程序设计基础》、《面向对象程序设计基础》、《信号处理原理》等计算机专业基础课程。作为主要成员参与编写的《程序设计基础(第3版)》(清华大学出版社出版)评为普通高等教育“十二五”规划教材。曾获北京市高等教育教学优秀成果一等奖、清华大学青年教师教学优秀奖、清华大学清韵烛光“学生最喜爱的老师”称号。主要研究兴趣包括:语音识别与理解、情感计算和跨媒体计算等。目前,作为项目负责人承担国家自然科学基金面上项目1项;作为项目骨干或子课题负责人参与国家973项目1项、自然科学基金重点项目1项、社会科学基金重点项目1项、863项目1项。

精华笔记

精华笔记正在评选中,去看看全部笔记

常见问题

学习本课程,需要先学习一门介绍C语言的课程吗?

本课程主要是以C++语言为基础来介绍面向对象的设计思想,需要具有一定的编程基础,掌握基本概念,例如:分支、循环、函数、指针、变量等。建议大家先学习《程序设计基础》课程(30240233X),掌握过程式程序设计的基本方法,掌握cin/cout等输入输出方法。

学习本课程时,对编程环境有要求吗?

本课程不限定编程环境,对操作系统也没有限定,主要内容是与平台无关的面向对象的设计思想的介绍。

课程示例与作业,使用哪个版本的C++标准?

本课程的示例与作业,将使用已得到广泛支持的C++ 2011版本。