当前课程知识点:面向对象程序设计(C++) >  第一讲 课程简介与编程环境 >  1.0 课程定位、教学内容 >  课程定位与教学内容

返回《面向对象程序设计(C++)》慕课在线视频课程列表

课程定位与教学内容在线视频

课程定位与教学内容

下一节:程序结构与编译链接

返回《面向对象程序设计(C++)》慕课在线视频列表

课程定位与教学内容课程教案、知识点、字幕

朋友们好

欢迎大家参加面向对象

程序设计基础的部分课程的学习

我是清华大学计算机系的徐明星

我是清华大学计算机系黄震春

那么这门课程呢将由我们两位老师

一起来给大家带着大家一起来学习

然后我们这门课程呢

也建设了一个微信的公众号

公众号的名字叫程设论道

大家可以到时候通过扫描网上的二维码

能够关注公众号参与到这个里头来

那么这个公众号呢将为大家提供

我们平时的课程内容的讨论交流

和答疑的一些事情

我想我们首先可以讨论一下

就是课程的教学的计划

我想我们这个课程呢

应该是分成几个不同的部分

首先先是就今天这节课

主要就是介绍一下

最简单我们的课程的目的

教学理念教学方法

还有后面的一些最基础的知识

比如说怎么去怎么去在这节课里面

教的这些内容你用什么方式去用它呀

去进行最基础的编程啊这些环节

一些最基本的知识

再有的话就是说把这个我们去学习

这个面向对象课程所基本需要的

一些环境呀工具对吧

先在第一次的时候给大家介绍一下

然后完了之后我想应该

还有一部分需要去讲这个面向对象的一些

我们所用到的这个语言

我们语言是C++

然后呢C++已经到了二零一四版了

但是我们这个基本上

还是基于二零一一版的这个C++

来做一些基本语法的一个介绍

最后呢也就是说我们这个最大头

最重头的一段呢

就是怎么样用使用这个C++

或者说使用对象这种思维方式

或者说这种方法论上的东西吧

去解决我们现实生活中

遇到的这个编程的问题

怎么样把这个用在我们这个实际编程里面

而且就是这个虽然说是一个编程序的

但是实际上这个里头在我们去

用这个语言来把这个实际问题做解决的时候

它的这种思考方式对吧思维的这种

这种技巧其实可能超出这个语言本身

也超出了这个编程序本身

甚至是不仅仅编程序时候用

我们去认识各种东西的时候

都可以采用这种分析呀

怎么样去判断这些方法

对所以我想这也是我们

这个教学课程理念里头一个

很重要的一个方面

不仅是教会你去用那一个C++的这种语言

也不仅是这个C++ 具体的这种

OO 的这种思想去解决编程

更主要的可能还是提升了一个人认识世界

所谓计算人生吗对吧

我想还有一个可能要跟大家去讨论交流的

就是我们这个课程跟后续的

或者跟前面的这两个方面的课程

这一种关系

首先一个呢就是我们这个课程

实际上是接在这个程序设计基础

就是我们另外一门慕课课程

是由我还有吴晓君老师王玉萍老师来讲的

在这个课程之后来讲的

所以有一些这个我们在讲那门课程的时候

有一些C++ 的一些基本的用法

在那个课程里头已经有讲到了

比方说大家可以看到像这种cin cout

其实在我们面向对象在程序设计基础课程里头

已经提到过了

其实就是说换句话说如果你还没看过那课的话

至少先把那课看一遍然后再看这个

然后接下来呢这门课还会后续的几门课

作为一个引导吧包括像数据结构软件工程

这种这实际上在计算机教学里边

也都是属于非常重要 的课程

对而且特别要提到的是

如果你去选择我们清华大学邓菊辉老师上的

这个数据结构那那个里头会讲到

用到大量的这个模板用到这个类

还有一些接口这种概念

所以我想我们这个课程呢

本身也是有很多的知识要去讨论

实际上去讨论这个接口啊模板啊

这些知识

所以是后续你选择选上那门慕课课程

一个很重要的前提一个基础

至于软件工程那就更不用说了

咱们都知道这design pattern 设计模式

可以被认为是软件工程的一个

最基础的组成部分之一

我想大家可能一直有一个疑问

就是说我们去拿一个语言去编程序

到底我选哪些知识才能把这个程序编出来

这个说实话跟你到底要编啥程序有关

这个关系非常大

那从最基础来讲呢至少第一你得有

你得会一种语言

对你否则的话听不懂你的话

这是最基础的

第二你得知道怎么去编程序去

像什么排序呀什么

你知道怎么用语言表达出来

当然这个就是咱们这节课主要内容

这个就是我们刚才说的

就是前面那个面向

就是那个程序设计课

就是那个课程里头我们重点解决的

除了这些之外呢还有就是说

你总要依托计算机那好

计算机本身的东西你得会

比如说最典型就是操作系统那些东西

再有你编啥程序

你编啥程序你得会啥东西

你说你要是编一个这个游戏程序

你连这个显卡驱动你都搞不定

对那就是专的一个部门啦

但是你如果不编游戏

那个其实你可以不用管

但是你如果要编那些地方缺少的话

那程序你是编不出来的

但说实话这些都不是咱们

咱们这节课不管那些

咱们这门课管什么

一个设计方法

或者说是个程序设计的方法论的问题

就是说到底怎么来去做这种设计

使得我们开发的效率更高

然后维护的这个成本更低

说白了就是写一个真正所谓的好程序

尤其是当你做大型系统的时候

你写一个几百行 的程序

可能在这儿你看不出来

当你一旦一个程序个大了

上万行十万行那你如果要是没有这些东西的话

你这个程序很可能会按我们的说法

就是把自己拖死了

所以这就是有的时候

我们在社会上也是有这种情况

就是你有一个好的指导的思想

对吧你可能做事情

或者你做事情的方法正确的话

这个事情就事半功倍能够完成它

所以我想我们课程里头一个很重要的一点

其实我们是要来介绍到底一个

面对复杂的问题去解决它的时候

我们应该怎么去思考它

对有解决方案对所谓方法论的角度吧

下面给大家列一下这个我们在

这个准备这门课程

以及希望大家在学习这门课程的时候的一些

参考的目录

大家可以看这个ppt的内容

将来我们也会放到网上去把这个文字数目放上去

这个里头列的比较多

当然了不是让你每本都看了

那不可能的有选择性的

所以我建议大家是说我们如果讲到哪个部分

你最好呢是在对应这个各种书里头

如果它有对应的章节或者相近的章节的话

专门针对那一小节去看

或者去对照的学习

这样的话会比较好一点

这个书目比较多

大家这个自己底下根据实际情况去选择来看

我想在我们介绍正式的内容之前呢

我们有必要跟同学们一起来探讨一下

本课程的一些学习的方法

因为这是我们在备课时的一个考虑

以及根据以前的教学经验

我们大概总结出来的

其实这门课程里

因为咱们这门课程本质上来讲

还是教你怎么样去做一件事的这门课程

所以呢咱们还是从这个角度去出发

那么你做要想学会做一件事

那无非是首先先去学嘛

看别人怎么做的多看书

多去看相关的资料

然后看完了之后接着自己动手自己试

那么多学多试多用多做做题目

然后对于自己有一些东西

你还搞不清楚你自己上手试一试

而且这里头我想有一个要补充的

就是说我们前面虽然列了

很多的那种参考书

对吧那是纸质已经出版了的

但其实现在目前还有一个很重要的资源

大家也应该去弄

就是网络上面其实有很多的问题

那上面都有现成的答案

别人有问到同样的问题的

所以这些互联网的资源

是希望大家充分去发挥

包括大家来这个学习这个慕课课程

其实也是一种以网络为载体的一个东西

所以大家要善于使用网络

然后呢在上面多查一些东西

然后呢多去看相关的书

说到这个还有就是说再一个就是说

在网络上你也不要说光去查

因为有一些常见的网络社区呢

也都你得去发问

但前提是你发的问最好是

你查了很大的你再没有查到结果

不要一个很基础的东西发问

而且呢我们前面也给大家介绍了

我们课程呢会有一个微信的公众号

所以特别因为这个就比较集中了

这专门针对我们这个课程

而且是我们老师跟助教

一起来维护和管理的

所以希望大家如果有什么

重要的一些问题希望得到解答啦

也能够希望大家通过这个公众号

来直接来进行关注来进行参与这个讨论

除了这些之外呢其实因为它是

咱们这门课吧

它本质上是一个方法论上的东西

一个涉及思想涉及思路

那么既然是思路吗所以脑筋就得多用

多想多去琢磨

你不琢磨的话那东西始终是别人的

所以我们可能不是简单地说

一个语法的知识

或者某一个开发的一种什么小技巧

你照猫画虎就完了

这个动脑筋对吧是非常重要的

而且在这个学习和动脑筋的过程中

真正把自己的这种思维能力提高上来

把思维的这个深度加深下去

多琢磨琢磨反正一个方法出来之后

你要想一下它为什么会用这样的方法

它背后体现了一种什么样的思维模式

最后当然是更重要的就是

你这些东西看也看了问也问了

然后这个最后别都忘了

最后还给我们了

那这个就有问题了

所以希望大家通过在这个

理论的学习的同时加强实践的锻炼

在实践锻炼的时候加强对理论的理解

所有的这些东西

最后都要变成你自己的能力

变成你的脑袋里的东西要把它记住

而且这个记忆的时候不是说死记硬背

也得讲点办法就是你得整理梳理归纳

在这个层面上面

可能更容易把它掌握牢靠

所以这样的话

我想经过这样的一些办法呢

可能课程的学习

第一个呢能够降低难度

第二个的话呢也能够取得效果

收获更多

所以这是我们在开篇的时候

特别想跟同学们去交待和介绍的

面向对象程序设计(C++)课程列表:

第一讲 课程简介与编程环境

-1.0 课程定位、教学内容

--课程定位与教学内容

-1.0 课程定位、教学内容--作业

-1.1 编程环境与工具

--程序结构与编译链接

--源程序拆分

--多文件编译链接的方法

-1.2 main函数的命令行参数

--main函数的命令行参数

-作业一--作业

第二讲 基础语法(1)

-2.1 变量定义

--变量定义

-2.2 变量的初始化、类型推导与基于范围的循环

--变量的初始化、类型推导与基于范围的循环

-2.3 函数重载

--函数重载

-2.4 函数参数的缺省值与追踪返回类型的函数

--函数参数的缺省值与追踪返回类型的函数

-2.5 类的定义

--类的定义

-2.6 类成员的访问权限与友元

--类成员的访问权限与友元

-第二讲 基础语法(1)--作业二

第三讲 基础语法(2)

-3.1 构造函数析构函数

--构造函数析构函数

-3.2 赋值运算符重载

--赋值运算符重载

-3.3 流运算符重载

--流运算符重载

-3.4 函数运算符重载

--函数运算符重载

-3.5 下标运算符与自增减运算符重载

--下标运算符与自增减运算符重载

-3.6 静态成员与常量成员

--静态成员与常量成员

-3.7 对象组合

--对象组合

-3.8 移动构造函数

--Video

--Video

-3.9 default修饰符

--Video

-第三讲 基础语法(2)--作业三

第四讲 基础语法(3)

-4.1 继承

--Video

-4.2 函数重写

--Video

-4.3 虚函数

--Video

--Video

-4.4 自动类型转换

--Video

-4.5 禁止自动类型转换

--Video

-4.6 强制类型转换

--Video

-4.7 函数模板

--Video

-4.8 类模板

--Video

-4.9 成员函数模板

--Video

-4.10 模板特化

--Video

-作业四--作业

第五讲 找到对象,确定接口

-5.0 引言

--Video

-5.1 从FOP到OOP

--Video

-5.2 对象在哪里

--Video

-5.3 接口在哪儿

--Video

-5.4 实现接口

--Video

-5.5 变与不变:多态的威力

--Video

第六讲 算法横向拆分,分离步骤

-6.0 引言

--讨论

-6.1 从负载监视器的设计开始

--从负载监视器的设计开始

-6.2 接口的分离与单一责任原则

--接口的分离与单一责任原则

-6.3 委托与接口的进一步分解

--委托与接口的进一步分解

-6.4 分离不同层面的可变性

--分离不同层面的可变性

第七讲 算法纵向拆分,分离表示

-7.0 引言

--Video

-7.1 迭代器

--Video

-7.2 迭代器的实现

--Video

-7.3 迭代器与模板

--Video

-7.4 算法与数据的解耦

--Video

-7.5 抽象结构与类模板

--Video

-7.6 函数对象与算法分解

--Video

-7.7 基于模板的策略模式

--Video

第八讲 基于接口组合,应对复杂变化

-8.0 引言

--Video

-8.1 已有资源的组合

--Video

-8.2 适当引入接口

--Video

-8.3 接口不变时的功能变化

--Video

-8.4 装饰

--Video

-8.5 责任的传递与责任链

--Video

-8.X 小结

--Video

第九讲 增加抽象层级,隔离复杂变化

-9.0 引言

--Video

-9.1 通过封装增加隔离、应对变化

--Video

--Video

-9.2 增加抽象层,应对变化

--Video

--Video

-9.3 相互关联对象的创建

--Video

-9.4 示例:自动组卷系统设计

--Video

-9.5 设计思路(上)

--Video

-9.6 设计思路(中)

--Video

-9.7 设计思路(下)

--Video

-9.X 小结

--Video

-课程总结

--Video

期末考试

-期末考试--作业

课程定位与教学内容笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。