美文网首页Java程序栈
十六、面向对象VS面向过程

十六、面向对象VS面向过程

作者: 一直想上树的猪 | 来源:发表于2018-12-05 15:42 被阅读4次

    在所有的计算机编程语言中,其思想大致分为两种:面向对象和面向过程。那么,两者有什么区别呢?今天我们来聊一聊。
    首先,我们提出一个需求:将一个大象,装进一个冰箱里面(人生在于离谱)

    面向过程

    面向过程:针对需求,将需求划分成若干个功能模块。将这几个功能的模块,有序的串联起来执行。
    面向过程是一个线性的。

    使用面向过程的思路实现:
    三步:
    1:打开冰箱门
    2:把大象放进去
    3:把冰箱门带上

    面向对象

    根据需求,列出思路:
    1:分析:这个需求中有几个对象。(名词分析法)。
    结果有两个对象,一个大象,一个冰箱。

    2:分析:这两个对象具有什么样的功能(方法),和属性。就可以实现我们想要的需求。

    结果:如果冰箱具有 开门,关门的功能,以及大象会钻冰箱的功能。那么就可以实现需求。
    功能:功能具体作用到谁的身上,那么该功能就属于谁。

    3:创建类描述 具有指定功能的对象。
    如何创建? 必须通过代码去描述 大象,,描述冰箱。
    使用什么去描述 大象和冰箱? 用类。
    创建了2个类。一个大象类,一个冰箱类。

    4:创建对象。通过类去创建对象。
    Elephant e = new Elephant();//创建了一个大象
    int i = 0;
    Fridge f = new Fridge();//创建了一个冰箱

    5:让我创建的对象,去执行自己具有的功能就OK了。
    使用对象 . [点引用符] 去调用对应的方法。

    最终执行的时候还是需要使用面向过程的方式去执行。

    面向对象的实现

    package com.bjsxt.oop.first;
    
    public class Main {
    
        public static void main(String[] args) {
            Fridge fridge = new Fridge();
            fridge.capacity = 30;
            Elephant elephant = new Elephant();
            elephant.size = 30;
            
            fridge.openDoor();
            elephant.enterFridge(fridge);
            fridge.closeDoor();
            
        }
    
    }
    
    
    package com.bjsxt.oop.first;
    
    public class Fridge {
        
        int capacity;
        int height;
        int age;
        
        void openDoor(){
            System.out.println("冰箱门打开了!");
        }
        
        void closeDoor(){
            System.out.println("冰箱门关闭了!啊");
        }
        
    }
    
    
    package com.bjsxt.oop.first;
    //Elephant 就是用来描述大象的,大象的属性和功能都要在大括号中描述。
    class Elephant {
        int size;
        //类体
        boolean enterFridge(Fridge f){
            if(size > f.capacity){
                System.out.println("大象该减肥了!!好大象不过1000!");
                return false;
            }else{
                System.out.println("大象成功的钻到了冰箱里面 啊!");
                return true;
            }
        }
        
    }
    

    小结

    好了,说了这么多,面向对象虽然对于小需求来说相比面向过程比较繁琐,代码量比较多,但是在实际工作的过程中,我们不可能只是面对单一不变的需求的,为了适应需求的变更,面向对象能很好地优化我们代码以及减少工作量。面向过程固然有其好处,思路清晰且容易理解,但是它只适合一些比较简单的需求。下面我将分几个部分介绍面向对象。

    相关文章

      网友评论

        本文标题:十六、面向对象VS面向过程

        本文链接:https://www.haomeiwen.com/subject/lrhwcqtx.html