From Book Thinking in Java------learn together

来源:互联网 发布:sql文 意义 编辑:程序博客网 时间:2024/06/05 04:00

Chapter One 对象的入门
1.1 抽象的进步
金句:

1.所有编程语言的最终目的都是提供一种“抽象”方法.eg:汇编语言是对基础机器的少量抽象----后来的许多“命令式”语言(如FORTRAN,BASIC 和 C)是对汇编语言的一种抽象2.机器模型(位于“方案空间”)与实际解决的问题模型(位于“问题空间”)之间,程序员必须建立起一种联系。3.早期语言如 LISP 和 APL,它们的做法是“从不同的角度观察世界”——“所有问题都归纳为列表”或“所有问题都归纳为算法”。PROLOG则将所有问题都归纳为决策链。每种方法都有自己特殊的用途,适合解决某一类的问题。但只要超出了它们力所能及的范围,就会显得非常笨拙。4.面向对象的程序设计:将问题空间中的元素以及它们在方案空间的表示物称作"对象"(Object)每个对象都类似一台小计算机;它们有自己的状态,而且可要求它们进行特定的操作。  5.五大基本特征:(1) 所有东西都是对象(2) 程序是一大堆对象的组合(3) 每个对象都有自己的存储空间,可容纳其他对象。(4) 每个对象都有一种类型。(5) 同一类所有对象都能接收相同的消息。

1.2 对象的接口
金句:

1.有些人认为“类型”决定了接口,而“类”是那个接口的一种特殊实现方式。eg:鱼类和鸟类(不断向上抽象)2.实体便是“对象”,而且每个对象都隶属一个特定的“类”,那个类具有自己的通用特征与行为。3.进行面向对象的程序设计时,面临的最大一项挑战性就是:如何在“问题空间”(问题实际存在的地方)的元素与“方案空间”(对实际问题进行建模的地方,如计算机)的元素之间建立理想的“一对一”对应或映射关系。4.向对象发出的请求是通过它的"接口"Interface定义的,对象的“类型”或“类”则规定了它的接口形式。“类型”与“接口”的等价或对应关系是面向对象程序设计的基础

1.3 实现方案的隐藏
金句:

1.这一领域的从业人员,大致有两方面的人员“类创建者”(创建新数据类型的人)以及“客户程序员”(在自己的应用程序中采用现成数据类型的人)2.类边界关键字public,private,protected 以及暗示性的friendly。

1.4 方案的重复使用
金句:

1.许多人认为代码或设计方案的重复使用是面向对象的程序设计提供的最伟大的一种杠杆。

1.5 继承:重新使用接口

 1.5.1 改善基础类 1.5.2 等价与类似关系

1.6 多形对象的互换使用

本段落主要讲继承接口,以及向上转型void doStuff(Shape s){    s.erase();    //....    s.draw();}Shape接口定义了一些共有的方法,Circle与Square还有Triangle这3个类都实现了这个接口,所以我们做doStuff这个方法的时候,只需传具体实现类就(向上转型)**1.6.1 动态绑定**将一条消息发给对象时,如果并不知道对方的具体类型是什么,但采取的行动同样是正确的,这种情况就叫作“多形性”(Polymorphism)**1.6.2 抽象的基础类和接口**需求:设计程序时,我们不想其他任何人实际创建基础类的一个对象,只对上溯造型成它,以便使用它们的接口。实现:abstract 关键字,与interface(接口)

1.7 对象的创建和存在时间

最重要的问题之一是对象的创建及破坏方式。对象需要的数据位于哪儿,如何控制对象的“存在时间”呢?C++允许程序员为获得最快的运行速度,存储以及存在时间可在编写程序时决定,只需将对象放置在堆栈或者静态存储区域即可。但是这种在编写程序时,必须知道对象的准确的数量、存在时间、以及类型。如果要解决的是一个较常规的问题,如计算机辅助设计、仓储管理或者空中交通控制,这一方法就显得太局限了。第二个方法是在一个内存池中动态创建对象,该内存池亦叫“堆”或者“内存堆”。
原创粉丝点击