为了能将书籍的作用最大化,在每次看完之后我都会写一个总结性的概要。这本面向对象是怎样工作的说实话我看了大约有二十天,中间断断续续的拿起来不少次,像这种比较笼统性的概念解释的书籍读起来会有些吃力,这算是我真正意义上从头到尾读完的一本技术书,只要继续坚持不断的看下去效率就能够逐步提高上来,前面基本都是学过的一些简单的概念陈述,主要是后面有些词汇对于还是小白的我来说是需要花费点时间去看它的解释的。
从结构上来看本书最大的特点就是在封面处就强调了三个理念混乱:术语洪流、比喻滥用以及“一切都是对象”综合征,这三种逻辑混乱在一定层面上加深了理解面向对象的困难,如果只是理解概念,就容易混乱。前两章大致在讲这三个问题的为什么以及如何解决它的方法。后面第三章开始介绍OOP(Object Oriented Programming)的概念和历史,然后就是oop的重头戏,从技术实现上先给出最重要的三种结构类、继承和多态,以及详细介绍了如何利用类实现OOP在计算机上的运用,随后进一步给出OOP进化结构的包、异常和垃圾回收。第五章详细讲述了OOP编写的程序在内存中运行的机制,一直到第十章都是对OOP的各种方法特性的介绍,大致有这些重要的概念分别是类库、GoF设计模式、UML(Unified Modeling Language)、嵌入式软件、内聚度、耦合度。第十一章是我认为写的最好的部分,后面十二章是对面向对象进行的总结和历史分析,十三章是在面向对象的基础上具体介绍了另一种与面向对象十分类似却又截然不同的开发技术——函数式语言。
一开始的时候软件开发遵循的是瀑布式开发。传统的开发流程着重于通过确定作业顺序和成果的形式,避免对特定人的依赖,按计划推进软件开发,这种开发流程的目标是避免返工,我们很难在成堆的文档和呆板的需求定义中找出它的优点,于是就有了后面的迭代式开发流程,其中最具代表性的是RUP和XP。RUP(Rational Unified Process)“软件统一开发过程”提供了将整个工程计划划分为4个阶段的方针,他们分别是“初始阶段(inception)、细化阶段(elaboration)、构造阶段(construction)、交付阶段(transition)”,具体实施步骤就是将整个工程按照时间的顺序分割来管理开发进度,并且以客户化为前提;XP(eXtreme Programming)“极限编程”与RUP不同,它没有定义形式上的作业步骤和文档形式的成果,而是定义了“4个价值“的基本理念和实践XP的“12个实践”。这些具有类似思想的轻量级迭代式开发流程被统一命名为敏捷开发方法,开发这些方法的推进者在2001年总结了敏捷软件开发宣言。随后介绍了三种支持敏捷开发的实践:测试驱动开发(Test Driben Develement,TDD)、重构(refactoring)和持续集成(Continuous Integration,CI)。函数式语言最重要的概念有柯里化、高阶函数、多态(这里的多态与OOP中不同,是通过将函数作为参数进行传递来实现与多态相同的结构)、函数组合、类型推断、副作用。