概要
OO所要解决的事情首先是找出事物的共性、分离事物,然后是抽象不同事物的共同行为模型,通过行为来聚合某些事物,通过某些机制来简化事物之间的关联。这也就是OO方法论中的普遍性和抽象性。本文简单地描述了OO的普遍性和抽象性。
关键词 OO,抽象性,具体,普遍性
目录
概述
当软件越来越复杂,面向过程的方法论无以承受这种复杂的时候,面向对象(OO)的方法论出现了。软件的复杂度可表现为两个方面,一个是事物的繁多,二个是事物之间的联系错综复杂。OO所要解决的事情首先是找出这些事物的共性、分离事物,然后是抽象不同事物的共同行为模型,通过行为来聚合某些事物,通过某些机制来简化事物之间的关联。这也就是OO方法论中的普遍性和抽象性。
OO基本特点
OO是一种视事物为程序世界中的对象的方法论,它使用Generalization和Abstraction来归纳和抽象事物的本质特征和共同行为。OO有三个基本特点,那就是封装、继承、多态。封装是对事物的变化的封装,这种变化是使软件趋于复杂的根本原因;继承是处理事物的普遍性和特殊性的一种机制,它更多的注重的是对事物的固有属性的处理;多态用于处理同类事物的不同的行为特征。
OO普遍性
世界中的事物具有普遍性和特殊性。如哲学中提到的“黑马和白马都是马“,在这句话中,”马“相对”黑马“或/和”白马“具有普遍性,而”黑马“或/和”白马“相对“马”则是特殊的。因此使用OO分析某个系统的时候,我们需要找出这种普遍和特殊。在一般的情况下,特殊的事物相对普遍的事物的区别在于本质特征的不同。如“马“具有”颜色“这一本质特征,”黑马“和”白马“就是“颜色”特殊化了的马。这也就是OO中的继承。因此,继承通过事物的本质特征来区分普遍性和特殊性的事物,这种本质特征包括事物的固有属性也包括事物的固有行为。从某种程度上来说,这也是一种抽象。不过这种抽象是基于事物的本质特征的。
OO抽象性
在OO的世界中,抽象上必不可少的,它往往表现为对事物行为的抽象。而这种行为的抽象主要表现在两个方面:同类事物的不同行为的抽象;不同事物的相同行为的抽象。同类事物的不同的行为特征,我们很容易进行区分,因为人们一直都在关注这一点。不同事物的相同行为往往都是很隐蔽的,需要我们去努力挖掘,比如说卵生动物都是产“卵”来繁育后代的,这是动物学家通过很久的探索和研究才得出的结论。
结束语
因为事物的行为可能因为这样和那样的原因,它们很容易发生变化。所以我们需要通过OO的封装来隔离这种变化。“变化”是一个开放性的词语,它可以用“形容词”来修饰,也可以给它添加“宾语”。往往,在解决具体问题的时候,我们谈论的变化都是具体的。而这种具体的变化是存在共性的,因为它们都是变化。
因此,我们需要通过抽象事物的不同行为,通过OO的封装来隔离这些变化。而对于变化的普遍性和特殊性,我们可以使用OO的继承来进行处理。