《How Objects Work》第2~3章

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

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