《How Objects Work》第2~3章

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

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

《How Objects Work》第1章

第一章 面向对象:让软件开发变轻松的技术
面向对象是软件开发的综合技术,它涵盖从java、Ruby等编程语言到需求规格书和设计内容的图形表示、可重用的软件构建群、优秀的技术窍门、业务分析和需求定义的有效推进方、顺利推进系统开发的开发方法等软件的所有领域。
虽然面向对象的技术是软件开发的综合技术,但是经常会被认为很难理解,很难对付。也有人认为不擅长抽象思考的人,在学习面向对象时会感觉很难,要经过很多年才能掌握。造成这种困扰的主要原因是在混乱的状态去理解。让人产生这种混乱的原因大致归纳于三点:1、术语洪流(如继承、泛化、特化、超类、子类等);2、比喻滥用(如只强调比喻而不详细介绍编程语言的结构和目的,那么就只有比喻能留下深刻的印象);3、一切都是对象。这三种混乱增大了对面向对象的理解难度,不仅不能让人正确的理解该技术,反而容易引起混乱和误解,使其难以被看透。
另外面向对象技术的目的是使软件的维护和重用变得更容易,其基本思想是重点关注各个构件,提高构件的独立性,将构件组合起来,实现系统整体功能。