《How Objects Work》第四章

面向对象编程的基本结构,对于程序员来说都不陌生,即类、多态、继承这三种结构。
1、“类”能给我们带来什么好处?
类可以帮我们汇总很多的变量和方法;可以帮我们隐藏功能,把不需要向外界透露的变量或者方法,进行很好的封装;可以在运行时,就能创建很多个实例,让其简单的实现该类内部的逻辑。
2、“多态”顾名思义,即可变为各种状态。能给我们带来什么好处?
它可以帮助我们的程序得以扩展。
3、“继承”相当于是我们数学中所学过的全集和子集。能给我们带来什么好处?
它整理了相似事物的共同点和不同点,然后把相同的点汇总在一起,帮我们去除重复部分。
4、这三种结构能给我们带来什么好处?
它为我们提供了去除冗余逻辑、进行整理,使我们工作变得轻松。
在编程中,如果仅仅使用这三种结构,也许不能提高程序的可维护性和可重用性。但是,这些结构,如果弄错了一个,也会让问题变得棘手。所以,别胡乱使用。我们目的是编写高质量、易维护、可重用的程序,而OOP只是我们实现该目的的一种手段而已。

《How Objects Work》第2~3章

第2章 似是而非:面向对象与现实世界
如果站在面向对象直接表示现实世界的角度,是无法很好地解释设计模式和类库等编程派生出来的技术的。如果将所有内容都对应到现实世界来掌握概念,就会感觉面向对象难以理解,十分混乱。变成影响正确理解面向对象的最大障碍。
对照现实世界来解释面向对象编程的三大要素:类(封装)、多态和继承。这三大要素被明确定义为能提高软件的可维护性和可重用性的结构。
面向对象和现实世界是似是而非的。在面向对象和现实世界中,对类的定位有很大不同。在面向对象中,类是用来创建实例的结构,实例只属于一个类。而在现实世界中,首先有具体的实物(实例)然后再根据观察该物的人的立场和兴趣而采用不同的基准进行分类(类)。
注意仿照现实世界进行讲解只是一种比喻,大家应该按照编程结构来理解。而且软件并不会直接表示现实世界。

第3章 理解OOP:编程语言的历史
最初使用机器语言编写程序。因为计算机只可以解释用二进制数编写的机器语言。并且,计算机对机器语言不进行任何检查,只是飞快地执行。
机器语言编写的程序示例:
A10010
8B160210
这只是编写了能执行极其简单的算术计算的命令而已,但是我们看不懂写的是什么?
编程语言的第一步是汇编语言。为改善低效的编程而应运而生。
汇编语言编写的示例:
MOV AX, X
MOV DX,Y
ADD AX,DX
除非是专业人士,否则也很难理解程序内容。不过,即使不是汇编语言的程序员,只要稍加想象,大概也能理解代码所表达的意思。
高级语言的发明使程序更加接近人类。用更贴近人类的表达式形式来编写程序。
使用FORTRAN编写的程序示例:
z=x+y
相对比机器语言和编程语言,我们会发现高级语言的便捷性非常明显。
结构化语言。由循序、选择和重复三种基本结构进行表达逻辑。提高子程序的独立性,强化可维护性。
但是结构化编程有两个无法解决的问题,即全局变量和可重复性差。