面向过程和面向对象的对比(转)

 

  在阅读张孝祥《Java就业培训》的一书中,关于面向过程和面向对象的描述,摘录如下:

一:什么是面向过程

  在早期出现的编程语言中,如大家非常熟悉的C语言,要用这种语言来定义一个复杂的数据类型,譬如Windows窗口时,可以用结构体(struct)来实现,只要在结构体中使用那些基本的数据类型来定义窗口的大小、位置、颜色、背景等属性就可以了。如果要对一个Windows窗口进行各种操作,如隐藏窗口、移动窗口、最小化窗口等,就要为每个操作都定义一个函数,这些函数与窗口本身的定义没有任何关系,如HideWindows、MoveWindows、MinimizeWindow,这些函数都需要接收一个参数,即要操作的窗口。这是一种谓语和宾语的关系,“隐藏”、“移动”等是谓语,“窗口”是宾语。程序的重心集中在函数(宾语)上。

 

二:什么是面向对象

  在C++和Java语言中,我们可以将一个窗口当做一个主题(对象)来看待,定义窗口时,除了要指定在面向过程中规定的那些属性,如大小、位置、颜色、、背景等外,还要指定可能具有的动作,如隐藏、移动、最小化等。在定义窗口时,就要定义好对应这些动作的函数(也叫方法),如Hide、Move、Minmize,注意体会这些函数名称与上面的名称的区别,这是作者刻意这么安排的,让读者更好地去对比,从函数名称上就能看出,这些函数都不再接受代表窗口的参数。这些函数被调用时,都是以某个窗口要隐藏、某个窗口要移动、某个窗口要最小化的语法格式来使用的。这是一种主语和谓语的关系,程序的重点集中在主体/对象(主语)上。虽然读者在下面的讲解中会发现面向对象的知识远不止这一点(刚才讲的只是面向对象的一个方面,即封装性,用类封装性了数据和函数),真正能体现面向对象的强大优势的地方,是在面向对象的继承与多态性方面,但作者认为,封装性是面向对象的根源和最根本的属性。

  Java类同其他面向对象的编程语言一样,也支持面向对象(OOP)的三个特征:

  1:封装

  2:继承

  3:多态

posted @ 2017-06-07 14:30  reedom1991  阅读(136)  评论(0编辑  收藏  举报