我们平常使用的语言大多数都是面向对象的语言。
所有编程语言都提供抽象机制,人类能够解决的问题复杂度,直接取决于抽象的类型和质量。汇编语言是对底层机器语言的轻微抽象。接着出现的 "命令式"语言(BASIC、C等)是对汇编语言的抽象;这类语言建立的抽象在解决问题时,仍然需要基于计算机的结构,而不是所要解决问题的结构。程序员需要建立起机器模型与实际业务模型之间的映射。
面向对象的思想,可以使程序员根据问题来描述问题。OOP 编程语言有以下特性:
1)万物皆对象。对象可以储存数据 ,可以在自身上进行操作;
2)程序是对象的集合,他们通过发送消息来告诉彼此所要做的。要请求一个对象就要给该对象发送一条消息,消息相当于对对象方法的调用请求;
3)每个对象都有自己由其他对象所构成的储存,多个简单对象可以构造复杂对象,可以把程序的复杂性 隐藏在对象后面。
4)每个对象都有类型,每个对象都是类的实例,类的区别在于可以发送什么样的消息给它;
5)某一类型的对象的所有对象可以接收同样的消息。总结为:对象具有状态、行为和标识。这意味着每一个对象都可以拥有内部数据(描述对象的状态)和方法(描述对象的行为),每一个对象都是唯一的(在内存中拥有唯一的地址)。
每个对象都提供服务;当试图开发或理解一个程序设计时,最好的方法之一就是将对象想象为"服务提供者"。程序将会向用户提供服务,它将调用其他对象提供的服务来完成这一目的。你的目标就是创建能够提供理想的服务来解决问题的一系列对象。将对象看做是服务提供者,你就不会把过多的功能放到一个对象里,可以提高对象的内聚性。高内聚是软件设计的一个基本要求。
复用具体实现;一个类创建完毕后,它就代表一个有用的代码单元。在建立新类时,我们就可以优先考虑使用组合,用现有的类去构建新类,这样设计会更加清晰。继承只在两个类真正存在子父关系时才使用,乱用继承会使整个代码比较臃肿。
参考:《Java编程思想》