目录
艾伦凯:你要到达那个星球,不能瞄准他现在的位置,而是要瞄准他未来的位置。
愿景(即星球未来的位置)大于近期的目标,愿景可以自己去创造。
一、面向对象的概述
1.面向对象中的对象类比细胞,细胞间的通信(化学交流)类比对象间的通信。细胞有相似性也有差异性。
2.一个可持续发展的系统,要关注对象间的通讯,而不仅仅是对象内部的属性和方法(行为特性)。
3.类完全就是柏拉图的理念论,类是一个抽象的概念,对象就是类的实例化。
现实中只有实例化的对象,没有类。世界为对象的集合
4.类中,其实属性和方法都是方法。属性中的数据(属性)也可以看做是方法(函数)
5.自己的思考模型(目前的思考模型为直面,正视问题),影响着你看到的信息。
二、面向对象和面向过程
面向对象:一场篮球赛,球员的位置打法并不确定,将数据和方法封装在一起,通信时传递数据也传递方法。
面向过程:流水线,工人得操作规范都已经完全确定。c语言中的main(),只考虑方法,不考虑数据在哪里。
通信中,面向过程,client 和server 间提前约定好解释方式。
面向对象,client 和server间传递的是对象,其中有数据也有处理数据的方式。
面向过程和面向对象的核心问题是,事物的内部及外部稳定度问题。
事物内部属性稳定(如操作员),领导让你干嘛你就干嘛,没有灵活性,但执行力好。但工厂环境要求苛刻,甚至有时需要无尘车间。
事物属性多,事物是否执行领导指令有其自己的判断。可以处理更不确定性高的外部环境,比如足球赛,球员可以根据形势有自己的判断。
从这方面讲,面向对象就是赋能。
三、面向对象的特征(如何定义类的参考):
1.封装
隐藏不必要的数据和方法,及其实现的代码,以减低事物构成的复杂性,保护对象内部数据(保护对象内部的稳定性)。隐私性数据。
原则:只留必要的属性和方法,其他的封装起来,对外留接口提供调用。
2.继承
base class、super class 是基类,继承他的属性或方法的是子类。
3.多态
类族(抽象的程度不同):交通工具-飞机-喷气式飞机
发送同一个消息对众多对象后,对象会根据自己的判断及属性做自己的操作。且发送方不必知道接收到对象是谁。
如形状属性,要求画形状时,不同的对象会画不同的形状。
4.聚合:如大学有老师和学生组成,之间没有依存关系
组合:如树叶和大树,树叶的生命周期由大树的生命周期决定
5.接口(interface):api(应用程序接口)提供给其他人调用
实现:实现功能的内部代码
实现的人不需要知道客户的具体操作。只需要提供接口功能就可以了
客户也不需要知道发电厂是怎么发电的就可以用电。
6.抽象:抽象的能力决定能处理的对象的数量
抽取对象的共有特征,做出一个类。如人 猫 狗 都是动物。
站在自己需求的角度,剔除现实世界中对象的无关的属性,抽取关联的属性。