浏览 2316 次
锁定老帖子 主题:面向对象编程 vs 面向过程编程
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-10-20
最后修改:2011-10-29
面向对象支持:封装、继承、多态 封装: 面向对象的编程方法,要求把数据和数据相关的操作放到一个对象中,从而在语言层面上,支持逻缉的对象分解。这自然的使逻缉模块化了。程序的模块化,是大型程序所必须的,面向过程编程一样需要程序模块化。面向对象编程扩展了面向过程编程的模块划分方法。 对象分解,为逻缉分解提供了依据,从而导致逻缉的简洁表达(过程的表达,变为对相关对象发消息)和复用。 之所以会导致复用是因为: 对象会出现在各种与它相关的逻缉中,这样对象自身的逻缉就可能被复用。这是面向对象编程的魔咒。更令人激动的是,软件中的对象是可以和领域对应上的。领域中的对象的可复用性,直接导致了软件中对应的对象的可复用性。 而面向过程编程的逻缉化分是随意的。在一个过程中混合多个对象的逻缉,很可能导致重复代码。 继承: 继承如果从复用方向理解,和面相向过程相比,并没什么新能力。 然而,继承所代来的革新是利用多态,在程序中直接表达泛化关系。 这是很重要的,使得程序可以处理抽象的对象,而不只是具体的对象。这正是人类处理问题的常用手段。 多态: 提供了将基类具体化的能力。 面向对象编缉改变了程序的内在结构,但注意:程序中的对象,并非是事物的等效表达。 对象的属性是对象相关的数据信息,而方法是外界可对对象进行的操作。也就是说,对象有什么方法,是由外界需要对它进行什么操作决定的。而不是对象天生固有的。 比如说:书, 是一个对象, 翻书是一个方法。而书需不需要有翻书的方法,取决于程序中是不是需要这个方法。又如:也许程序中需要一个方法计算书本身的分子总数,这样书对象就需要加上一个 “获得分子总数” 的方法了。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |