关于面向对象和面向过程的程序设计的区别

面向对象设计(oop)是当今主流的程序设计范型,它取代了20世纪70年代的“结构化”过程化程序设计开发技术。java是完全面向对象的,必须熟悉oop才能够编写java程序
面向对象的程序由对象组成的,每个对象包含对用户公开的特定功能部分和隐藏的实现部分。程序中的很对对象来自标准库,还有一些是自定义的。究竟是自己构造对象,还是从外界购买对象完全取决于开发项目的预算和时间。但是从根本上来说,只要对象能够满足要求,就不必关心其功能的具体实现过程。在oop中,不必关心对象的具体实现,只要能够满足用户的需求即可。
传统的结构化程序设计通过一系列的过程(即算法)来求解问题。一旦确定了这些过程,就开始考虑存储数据的方式。这就是Pascal语言的设计者Niklaus Wirth将其著作命名为《算法+数据结构=程序》的原因。需要注意的是在Wirth命名的书名中,算法是第一位的,数据结构是第二位的,这就名确地表述了程序员地工作方式,首先要确定如何操作数据,然后再决定如何组织数据,以便于数据操作。而oop却调换了这个次序,将数据放在第一位,然后再考虑操作数据的算法。对于面向对象的程序设计来说,我们更看重的是结果,而结构化程序设计更看重的是程序设计的过程。就好比炒菜而言,oop更看重的做出来的菜,而面向过程的厨师重视炒菜的工具一样。
如今,面向对象的程序设计已经在逐步取代面向过程的程序设计,因为oop更具有优势,对于一个含有500个过程的项目而言,oop便于将项目分解,比如将用20个类来描述这500个过程,每个类中包含25个方法,而面向过程的程序设计就很实现这种分解,要实现全局数据操作,这对程序本身或者程序员来说都是极大的挑战,而且也不便于修改和查找bug。

猜你喜欢

转载自blog.csdn.net/Crush777/article/details/86626320