面向对象与面向过程

我们执行相同的操作,总是喜欢将过程封装到一个方法里面,之后就不再从底层做起了,直接调用。
当需求越来越多,方法也就越来越多,我们使用类封装方法。后面使用该操作就直接找到类,然后再找方法。
面向过程:
针对你的需求一步一步实现,全部自己参与执行。
面向对象:
使用封装好了的一面向过程操作,直接调用,简化自己。小程序短时间或许看不出什么优势,但是后来处理多了就发现这是一种必须的聪明的做法。
现实举例:
吃饭:
面向过程:

饭怎么来?-->买米,买菜
做饭-->洗菜,煮饭,炒菜,洗碗
吃饭
家务-->洗碗,抹桌子。。。

面向对象:

我要吃饭,尽快?
餐馆可以直接吃饭。
点菜-->吃饭-->付账-->玩去了

面向对象是基于面向过程的,因为过程是必须有人完成的。面向对象的选择性更大,重视的是结果而不是过程。
可以理解成面向对象是面向过程的优化。
面向对象开发的程序,结构清晰,便于维护。

例子:

将大象装进冰箱:

面向过程做法:

打开冰箱门

大象进去

关上冰箱门

代码体现:

class DxToBx{
  public static void main(String[] args){
          open();
          void();
          out();
    }   
    public static void open(){
       //打开冰箱门   
    }    
    public static void in(){
       //大象进去
    }   
    public static void out(){
      //关上冰箱门
    }
}

方法调用时面向过程中非常实用的一种方法。如上图所示,结构清晰,简单快捷。但这种状况紧紧表现在小程序当中。过程中不含有对象的话,比如我的打开冰箱门又涉及到将手放到冰箱门上、往外拉等方法,那么在打开方法里面就需要调用手放到冰箱门上,往外拉等方法,还有更多可能。这样的话,在DxToBx中就存在好多并列的方法,因为方法是不允许在其他方法中声明的。过多的时候,你需要改变一个操作,就需要从上往下找过去找到对应的方法,不便于维护而且也不是那么直观了。

面向对象做法:

怎么才能符合面向对象思想呢?

A.需要哪些类

B.每个类要做什么

C.类和类的关系

把大象装进冰箱的分析。(如何分析有哪些类呢?UML类图。名词提取法)

大象

进去

冰箱

打开

关闭

Demo

main方法

类与类的关系:

Demo中使用大象和冰箱的功能

代码实现:

Class Dx{
    public void in(){
     //..
    }   
}
Class BX{
    public void open(){
    //..
    }
    public  void close(){
    //..
   }   
}
Class Demo{
    public static void main(String[] args){
         Dx dx=new Dx();
         Bx bx=new Bx();
         bx.open();
         dx.in();
         bx.close();
    }
}

虽然这样看起来代码更复杂,但结构更加清晰,更易于后期的维护

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

微信扫一扫

微信扫一扫

微信扫一扫,分享到朋友圈

面向对象与面向过程