面向对象程序设计
以对象为中心的思维方式,每个对象用自己的方法来管理数据,也就是说只有对象内部的代码能够操作对象内部的数据。只要暴露出的接口稳定,即使对象内部发生变化,对外界来说也不认为它发生了变化。同类对象还可抽象出共性,形成类(class)。
程序 = 对象 + 对象 + 对象 + 消息传递
对象 = (算法 + 数据结构)
从计算机的观点看对象
1.对象是计算机内存中的一块区域,通过内存分块每个对象在功能上相对保持独立.
2.内存既存数据,又存代码,只有对象中的代码能访问存储于对象中的数据。这清楚地限定了对象所具有的功能,并且使得对象不受未知外部事件的影响,从而使自己的数据和功能不会遭受破坏.
3.对象之间只能通过函数调用来实现相互通信.
4.当对象的一个函数被调用时,对象执行内部的代码来响应该调用,从而使对象呈现一定的行为。这个行为及其呈现出来的结果就是该对象所具有的功能.
面向对象的特征
1.抽象
抓住事物本质,而不是内部具体细节或具体实现(一般无此特征)。
2.封装
按照信息屏蔽的原则,把对象的属性和操作结合在一起,形成一个独立的对象。
通过限制对属性和操作的访问权限,可以将属性”隐藏”在对象内部,对外提供一定的接口,在对象之外,只能通过接口对对象进行操作。
封装性增加了对象的独立性,从而保证了数据的可靠性。
比如:我们不关心电视机的内部工作原理,我们直接使用选台、调音量等功能。
3.继承
当定义了一个类之后,又需定义一个新类,这个新类与原来的类相比,只是增加或修改了部分属性和操作,这时可以用原来的类派生出新类,新类中只需描述自己所特有的属性和操作。
继承性大大简化了对问题的描述,大大提高了程序的可重用性。
比如汽车是机动车的一种,具有机动车的性质,又有自己特殊的性质,机动车又具有车的性质。
4.多态
同一个消息发送给不同的对象,产生不同的结果,即实现同一接口,不同方法。
继承与多态的组合,可以生成很多相似但又独一无二的对象。继承使这些对象可以共享许多相似特性,而多态又使同一个操作对不同的对象产生不同表现形式。这样不仅提高了程序设计的灵活性,而且减轻了分别设计的负担。