第1章 对象入门

来源:互联网 发布:javascript和node.js 编辑:程序博客网 时间:2024/06/05 02:58

关键词:面向对象编程的概念
所有编程语言的最终目的都是提供一种抽象的方法。
机器模型(方案空间 )问题模型(问题空间)的联系。
什么是对象:问题空间中的元素和方案空间中的表示物称为对象。

面向对象编程语言的5大特征: 1. 所有东西都是对象 2. 程序是一大堆对象的组合:通过消息传递,各对象知道自己该做什么。 3. 每个对象都有自己的存储空间,可容纳其他对象。或者通过封装现有对象,可制作出新型对象。 4. 每个对象都有一种类型。每个对象都是类的一个实例。一个类最重要的特征是能发什么消息给它 5. 同一个类所有的对象都能接受相同的消息。这是oop最重要的概念之一。这意味着程序可以控制同一类的所有对象。

根据oop举个书中的例子:

问题模型:银行有一笔交易,客户要求出纳向一个账户存一笔钱。机器模型:转化成程序。根据面向对象编程语言的第1大特征:一切皆对象。那么,客户是一个对象,出纳是一个对象,账号也是一个对象。根据面向对象编程语言的第2大特征:程序是一大堆对象的组合。那这次交易由客户、出纳、账户三个对象组成。根据面向对象编程语言的第3大特征:每个对象都有自己的存储空间,可容纳其他对象。每个客户都有自己的账户,每个出纳都能对账户操作。根据面向对象编程语言的第4大特征:每个对象都有一种类型,一个类最重要的是能发什么消息给它。客户可以把账户消息发给出纳,出纳把余额消息发给账户。根据面向对象编程语言的第5大特征:同一个类所有的对象都能接受相同的消息。比如说因为有利率,账户余额要增加,所有的账户都不一样,但因为所有的账户对象都是账户这个类的一个实例,所以都能接受利率这个消息,而不用每个账户都要传递一个利率才能增加余额。

关键词:接口 访问控制、
接口:Interface,预先定义好的类,规定了可对一个特定的对象发出哪些请求。

从业人员分类:类创建者,创建新数据类型的人           客户程序员,使用现成数据类型的人

接口由类创建者提供给客户程序员。为了安全和解耦,这涉及到了访问控制的问题。

访问控制的原因: 6. 防止程序员接触他们不该接触的东西,通常是内部数据类型的设计思想。客户程序员只需懂得操作接口,毋需明白内部实现原理。 7. 允许开发人员修改内部结构,不用担心这会对客户程序员造成影响。因为接口与实现方法隔离开来,只需重新链接一下即可。
类边界 8. public:谁都可以访问 9. protected:继承的类可以访问受保护的成员,但不能访问私有成员 10. private:除了你自己,类型的创建者和那个类型的内部函数成员,其他任何人都不能访问后续的定义信息。 11. friendly:只能在这个包装的范围内使用

方案的重复使用:最简单的做法是仅使用那个类的对象,但同时将那个类的一个对象置入一个新类,这个新类可有任意数量和类型的对象构成,这些对象称为“成员对象”。只要它满足设计要求即可,这种概念叫“组织”,在现有类的基础上组织一个新类。对象的组织具有很大的灵活性,通常我们将成员对象设为private,这样客户程序员就不能访问他们,我们就可以在不干扰客户代码的前提下从容的修改成员对象,而继承不具备这种灵活性,因为编译器会必须对通过继承创建的类加以限制。

继承

创建一个类(称之为衍生类或子类),通过extends关键字继承了另一个类(称之为基础类,父类或超类),包含了基础类的所有成员变量,更重要的是,复制了基础类的接口。这就叫继承。
继承存在的意义:若没有继承,当我们需要一个相似的类的话就要重新创建一个类,而有了继承,我们只需去增加成员变量或者修改成员变量。

等价和类似: 1. 仅仅改善成员变量:可以完全替换基础类和衍生类 2. 还添加了新的接口:之前的系统无法调用新的接口。比如房间有开灯和关灯的开关,换了新的灯,新的还可以调节亮度,但是房间只有开关的功能不能调亮度。

上溯造型:基础类的句柄连接衍生类的对象
动态绑定:编译器和运行期系统负责调用具体的代码。
抽象的基础类和接口:基础类只为自己的衍生类提供接口。

集合:容纳了其他对象的句柄的对象。
继续器:Iterator,负责选择集合内的元素,并把它们提供给继承器的用户。
继承器:将集合抽象成一个简单的序列,继承器允许我们遍历这个序列,而毋需担心基础结构是什么

原创粉丝点击