Class Central is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Tsinghua University

面向对象程序设计(C++)

Tsinghua University via XuetangX

Overview

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

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

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

Syllabus

  • 第一讲 课程简介与编程环境
    • 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 变与不变:多态的威力
  • 第六讲 算法横向拆分,分离步骤
    • 6.0 引言
    • 6.1 从负载监视器的设计开始
    • 6.2 接口的分离与单一责任原则
    • 6.3 委托与接口的进一步分解
    • 6.4 分离不同层面的可变性
  • 第七讲 算法纵向拆分,分离表示
    • 7.0 引言
    • 7.1 迭代器
    • 7.2 迭代器的实现
    • 7.3 迭代器与模板
    • 7.4 算法与数据的解耦
    • 7.5 抽象结构与类模板
    • 7.6 函数对象与算法分解
    • 7.7 基于模板的策略模式
  • 第八讲 基于接口组合,应对复杂变化
    • 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.8 小结
    • 课程总结
  • 期末考试

    Taught by

    Zhenchun Huang and Mingxing Xu

    Tags

    Reviews

    Start your review of 面向对象程序设计(C++)

    Never Stop Learning.

    Get personalized course recommendations, track subjects and courses with reminders, and more.

    Someone learning on their laptop while sitting on the floor.