Post

C++面向对象高级编程(上)

C++面向对象高级编程(上)

C++面向对象程序设计

英文:Object Oriented Programming, OOP 面向对象是一种观念,用这种观念来写程序,需要面向对象的语言,而C++就是一个支持面向对象观念的一种语言。

1. C++ 编程简介

应该具备的基础:

  • 曾经学过 procedural language( C 语言最佳)
    • 变量(variables)
    • 类型(types): int, float, char, struct…
    • 作用域(scope): 像我们以前我们写一个函数,函数有大括号,大括号里头那变量(variables)在这里头的生命,这个就是它的作用域。
    • 循环(loops): while, for
    • 流程控制:if-else, switch-case
  • 知道一个程序需要编译、链接才能被执行
    • 现在的软件开发工具很发达,所以有很多的集成环境。不管你过去是用一种比较比较低阶的用命令行的模式的形式去做,去编译链接。
    • 或者是在集成环境底下去建立一个程序,只要你曾经有过这样的经验就可以。
  • 知道如何编译和链接
    • (如何建立一个可运行程序)

我们的目标:

  • 培养正规的、大气的编程习惯
  • 以良好的形式编写 C++ class

    这里为什么谈到class呢?因为 C++ 代码里面的每一个单元,最重要的每一个单元就是一个class,所以这边就出现了这个字眼。

    class 有两种经典的分类:

    • class without pointer members: Complex
    • class with pointer members: String

    Object Based(基于对象):单一 class 的设计

    学习 Classes 之间的关系:

    • 继承(inheritance)
    • 复合(composition)
    • 委托(delegation)

    Object Oriented(面向对象):几个class彼此之间有关联

    整个课程呢,是分为两大类,一个是基于对象,一个是面向对象。

    首先要培养好的对单一 class 的正规的,好的习惯写法。然后我们才可以扩大好几个 class 之间,好几个类之间,他们彼此有怎么样的关系

将习得的代码

  • Object Based:
    • without pointer

      complex.h
      complex-test.cpp

    • with pointer

      string.h
      string-test.cpp

  • Object Oriented:

    oop-demo.h
    oop-test.cpp

C++ 的历史

  • B 语言(1969)
  • C 语言 (1972)
  • C++ 语言 (1983)
    (new C -> C with Class -> C++)

    C++ 语言是在1983年。他早期不叫 C++,早期叫做 C with Class,所以从这名称就更清楚了啊,他是以 C 语言为基础。

  • Java 语言
  • C# 语言

面向对象语言呢,不是只有 C++, C++ 可能是第一个最大规模的被全世界广泛接受的语言。在他的后面还有很有名的啊,也很多人在使用的是 JAVA 语言跟 C# 以及其他的语言。那事实上,这些语言呢?嗯,精神都一样,关键字也都差不多。所以我们学了一种语言,基本上也就可以了解另外的两三种语言了,当然它细节会有所不同。

C++ 演化

  • C++ 98 (1.0)
  • C++ 03 (TR1, Technical Report 1)
  • C++ 11 (2.0)
  • C++ 14

C++ 他这个出现的时间,其实刚刚各位已经看到了1983 年就有了,但是他真正正规化变成有一个国际规范呢,是在 1998 年我们叫 C++ 98。经过了 13 年之后 C++ 11, 2011年才出现 2.0。

我们学习 C++。可以分为语言的部分,还有标准库的部分,现在几乎学任何一个语言呢,都都是这样子,要把这两个分开来。

在比较早期,也许在 C 的时代呢啊,大家很关注的是语言的部分。当然了,其实你也脱不开标准库的部分 C 也有他的标准库,所以我现在要传达的概念是,像现在语言越来越复杂,所以他们的标准库所给各位的东西也是越来越多,那使用这些标准库。也是一个非常非常重要的事情。我们在这一门课程上,现在的你所看到的这门课程呢,我们主要谈语言,我们用到标准库的部分,只有最简单的啊,一些东西的输出。

那事实上,标准库是非常庞大,非常有用的。可以说这么一句话,如果你是一个 C++ programmer 程序员,但是你不怎么去用标准库的话,你不能算是一个合格的好的 C++ 程序员,有生产力的,你可能不能算是

Bibliography (书目誌)

  • 《C++ Primer》– C++ 的第一个编译器的作者所写的书籍
  • 《The C++ PROGRAMMING LANGUAGE》– C++ 之父

那毕竟我们这课程里面涵盖的是非常还算是非常小的一部分,你还是需要更多的这方面的信息。这边有本书,可以对大家带来很好的帮助。

  • 《Effective C++》– Scott Meyers
    • 中译版 《Effective C++》– Scott Meyers, 译者:侯捷

    里面以条款的方式告诉你什么该做。什么不该做?你如果做什么动作,会影响什么样的效率啊?所以这是专家给我们的心得,给我们的经验非常好。

另外呢,有一个很重要的是标准库。标准库现在是很庞大,所以我们也需要好的书籍来帮助学习,我也看过很多很多的这方面的书。

  • 《The C++ STANDARD LIBRARY – A Tutorial and Reference》

对于初学者来讲,这条路已经很遥远了啊,再深入下去的话,深入到什么?如果你有兴趣,想要看看标准库的源代码。那这种书就很少了啊,就是很很深的部分,有这么一本书:

  • 《STL 源码剖析》– 侯捷

2. 头文件与类的声明

This post is licensed under CC BY 4.0 by the author.