1.1 抽象过程
1.所有编程语言都提供抽象编程机制。
2.人们所能够解决的问题的复杂性直接取决于抽象的类型(所抽象的是什么)和质量。
3.“命令式”语言(basic,c等)都是对汇编语言的抽象,但是仍然要求解决问题时依赖计算机的结构,程序员必须建立起在机器模型(如计算机)和实际待解决问题(例如一项业务)之间的关联。
4.对机器建模的方式就是只针对待解问题建模。如 lisp和apl,只能解决某个特定问题。
5.面向对象方式则通过向实际待解问题提供表示问题元素的工具而更进一步。这种表示方式非常通用,不会局限于特定问题。我们将实际待解问题中的元素在机器模型中的表示叫做“对象”。这种思想的实质就是:通过添加新类型的对象来使自己适应于某个特定问题。
归纳:编程语言的演变实质上是人们利用计算机解决实际问题的思维演变。
1.2 对象的基本特性
1.万物皆为对象
2.程序是对象的集合,他们同于发送消息来告知彼此所要做的。
3.每个对象都有自己的由其他对象所构成的存储。
4.每个对象都拥有其类型。
5.某一特定类型的所有对象都可以接受同样消息。
对象的描述:对象具有状态(内部数据)、行为(方法)和标识(彼此区分)。
1.3 每个对象都有一个接口
类:描述了具有相同特性(数据元素)和行为(功能)的对象集合。实际上就是一种数据类型。
(对象)类 解决了实际问题元素如何在机器模型中如何表示的问题。
要解决问题,就得按照一定的方法操作对象(实际问题元素),而请求的方法是什么?这个则由接口来定义。接口确定了对某一个特定对象所能发出的请求。决定接口的便是类型。
例如:我们可以将男人和女人都以人的类型在机器模型中表示。而人这个类型决定了其接口可以定义:吃饭,思考这样的请求方法。
1.4 继承
1.类型不仅描述了作用于一个对象集合上的约束条件,同时还有与其他类型之间的关系。比如:子类继承父类。
2补充:类:数据元素+方法+相互关系
1.5 多态
1.把一个对象不当做它所属的特定类型来对待,而是将其当做其基类的对象对待。这使得人们编写出不依赖特定类型的代码。
2.当一个对象发送消息时,即使涉及向上转型该对象也知道要执行什么样的正确行为。
总结:面向对象的思想就是万物皆为对象,将实际问题中的元素以对象的形式在计算机中表示,通过对对象的归纳划分不同的类型,根据具体类型定义对应的接口。