面向对象和面向过程的区别

面向过程的程序:

     是一种以过程为中心的编程思想,分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。这个思路很像下棋的流程, 也就是我们通常习惯使用的自低向上, 逐层精确。这种编程的主导思想是在设计时就把实现的细节考虑好了, 从而在低层就实现了程序满足应用软件要求的目的。

 优点:性能比面向对象高,因为(面向对象)类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。

 缺点:没有面向对象易维护、易复用、易扩展  

面向对象的程序:

    在于考虑问题的思路是从人的一般思维习惯出发来考虑的, 这样就改变并打破了程序员以往的编程习惯, 而把人们解决日常问题的思维方法逐步翻译成程序能接受的算法的过程, 使用面向对象的思维方法, 其实是一个将程序设计思维方式从具体的编程技术当中抽象出来的过程, 而这个抽象的过程是自上而下的, 较符合人类的思维习惯, 就是先不考虑问题解决的细节, 把问题的最主要的方面抽象成为一个简单的框架, 集中精力思考如何解决主要问题, 然后在解决问题的过程中, 再把问题的细节分割成一个一个小问题, 再专门去解决细节问题。其次就是,处理实际对象的关系上升为处理抽象对象之间的关系,这样可以做到易复用,易扩展,以维护。因而一旦牢牢的抓住了这一 点, 我们就会发现在软件设计和开发过程中, 总是会不知不觉的 运用面向对象的思维方法来设计和编写程序, 并且程序的设计 和开发也变得不再那么枯燥, 而一个合理运用面向对象技术进 行设计和架构的软件, 更是具备了思维的艺术感。最终使软件系统更可靠, 容易维护, 风格一致, 可重用, 代码清晰。在实际开发过程中,一些细节问题的处理往往用到面向过程的编程。


  优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护 

 缺点:性能比面向过程低 

面向对象程序设计的一些显著的特性包括: 
  .程序设计的重点在于数据而不是过程; 
  .程序被划分为所谓的对象; 
   .数据结构为表现对象的特性而设计; 
  .函数作为对某个对象数据的操作,与数据结构紧密的结合在一起; 
  .数据被隐藏起来,不能为外部函数访问; 
  .对象之间可以通过函数沟通; 
  .新的数据和函数可以在需要的时候轻而易举的添加进来; 
  .在程序设计过程中遵循由下至上(bottom-up)的设计方法。

     面向对象程序设计是一种方法,这种方法为数据和函数提供共同的独立内存空间,这些数据和函数可以作为模板以便在需要时创建类似模块的拷贝。

  一个对象被认为是计算机内存中的一个独立区间,在这个区间中保存着数据和能够访问数据的一组操作。因为内存区间是相互独立的,所以对象可以不经修改就应用于多个不同的程序中。 

  通常,在面向对象的程序设计风格中,你会将一个问题分解为一些相互关联的子集(相当于若干个if语句),每个子集内部都包含了相关的数据(相当于if语句中的条件)和函数(相当于if语句中的执行代码)。同时,你会以某种方式将这些子集分为不同等级(相当于if语句中的嵌套),而一个对象就是已定义的某个类型的变量。当你定义了一个对象,你就隐含的创建了一个新的数据类型。

  一旦定义了一个类,我们就可以创建这个类的多个对象,每个对象与一组数据相关,而这组数据的类型在类中定义。因此,一个类就是具有相同类型的对象的抽象。

  把数据和函数包装在一个单独的单元(称为类)的行为称为封装。数据不能被外界访问,只能被封装在同一个类中的函数访问。这些函数提供了对象数据和程序之间的接口。

  简单的说,一个对象就是一个封装了数据和操作这些数据的代码的逻辑实体。

面向过程和面向对象在实际生活的体现

         用面向过程的方法写出来的程序是一份蛋炒饭,而用面向对象写出来的程序是一份盖浇饭。所谓盖浇饭就是在一碗白米饭上面浇上一份盖菜,你喜欢什么菜,你就浇上什么菜。
  蛋炒饭制作的细节,我不太清楚,因为我没当过厨师,也不会做饭,但最后的一道工序肯定是把米饭和鸡蛋混在一起炒匀。盖浇饭呢,则是把米饭和盖菜分别做好,你如果要一份红烧肉盖饭呢,就给你浇一份红烧肉;如果要一份青椒土豆盖浇饭,就给浇一份青椒土豆丝。 
  蛋炒饭的好处就是入味均匀,吃起来香。如果恰巧你不爱吃鸡蛋,只爱吃青菜的话,那么唯一的办法就是全部倒掉,重新做一份青菜炒饭了。盖浇饭就没这么多麻烦,你只需要把上面的盖菜拨掉,更换一份盖菜就可以了。盖浇饭的缺点是入味不均,可能没有蛋炒饭那么香。 
  到底是蛋炒饭好还是盖浇饭好呢?其实这类问题都很难回答,非要比个上下高低的话,就必须设定一个场景,否则只能说是各有所长。如果大家都不是美食家,没那么多讲究,那么从饭馆角度来讲的话,做盖浇饭显然比蛋炒饭更有优势,他可以组合出来任意多的组合,而且不会浪费。 
  盖浇饭的好处就是"菜""饭"分离,从而提高了制作盖浇饭的灵活性。饭不满意就换饭,菜不满意换菜。用软件工程的专业术语就是"可维护性"比较好,"饭" 和"菜"的耦合度比较低。蛋炒饭将"蛋""饭"搅和在一起,想换"蛋""饭"中任何一种都很困难,耦合度很高,以至于"可维护性"比较差。软件工程追求的目标之一就是可维护性,可维护性主要表现在3个方面:可理解性、可测试性和可修改性。面向对象的好处之一就是显著的改善了软件系统的可维护性。

你可能感兴趣的:(java,面向对象,面向过程)