冒号课堂节选:对象范式

来源:互联网 发布:mac usb3.0 wifi 编辑:程序博客网 时间:2024/05/17 06:36

对象范式

OOP是一种计算机编程模式,它以对象作为问题空间的基本元素,利用对象和对象间的相互作用来设计程序。所谓对象,是实际问题中实体的抽象,具有一定的属性和功能。OOP的三个基本特性是:封装性、继承性和多态性。

OOP虽然是在命令式的基础上发展起来的,但其基本思想可泛化为:以数据为中心组织逻辑,将系统视为相互作用的对象集合,并用继承与多态来增强重用性。这种思想也能应用到函数式和逻辑式中,只不过对象的方法从命令式中的过程分别换成函数式中的函数和逻辑式中的断言罢了。大致说来,命令式、函数式和逻辑式互相平行,而OOP与它们正交。

 

过程式编程与OOP在设计理念上有什么区别?

过程式编程理念是重在过程,自顶向下,逐步求精。OOP则正相反,重在数据,自底向上,逐步实现。

如果把整个流程看作一颗倒长的大树,过程式编程自树根向下,逐渐分支,直到每片树叶,类似数学证明中的分析法,即执果索因的逆推法;OOP则从每片树叶开始,逐渐合并,直到树根,类似数学证明中的综合法,即执因索果的正推法。

倘若把树根看成主函数,离树根越近,离用户需求也越近。如果用过程式编程,由于是逆推法,树干改变容易导致树枝相应改变,因此一旦用户需求发生变化,可能会从树根波及到树枝甚至树叶,维护起来殊为不易。相反OOP从树叶开始设计,离用户需求较远,抽象程度较高,受波及的程度较小,因此更易维护和重用。

“OOP以对象为基本模块单位,而对象是现实中具体事物和抽象概念的模拟,这使得编程设计更自然更人性化。

OOP流行的主因:更接近人类的认知模式;表现是其接口简洁易记;更具易用性(更简洁的接口(封装数据,自带状态),更高的抽象层次,更高层次的重用)

 

新视点:过程式编程的模块以函数为单位,OOP的模块以对象为单位,二者的区别是:函数是被动的实体,对象是主动的实体。过程式程序的世界是君主制的,主函数是国王,其他函数是臣民,等级分明,所有臣民在听命于上级的同时也对下级发号施令,最终为国王服务;OO程序的世界是民主制的,所有对象都是独立而平等的公民,有权力保护自己的财产和隐私并向他人寻求服务,同时有义务为他人提供承诺的服务,公民之间通过信息交流来协作完成各种任务。

 

原创粉丝点击