JAVA 面向对象与面向过程区别

JAVA 面向对象与面向过程区别

什么是面向过程

概述:自上而下的编程模式

将我们所需要的问题(需求)拆分成一个个步骤,把每个步骤使用函数进行实现,再根据解决问题的步骤逻辑将函数依次调用即可。
可以通俗的理解成为,再进行面向过程的编程过程中,我们不需要去考虑复杂的逻辑问题,而是先定义一个函数,再使用类似于if-else,for-each等方式方法进行代码的实现,逐步分解解题逻辑以达到解决问题的最终方法。
其中最典型的方法就是实现一个简单的算法,“冒泡排序”,调用冒泡算法函数进行数组的排序
代码实现

// An highlighted block
import com.jiajia.ArrayUtil.*;  // 按包名导入

public class BubbleSortMain {

    public static void main(String[] args) {
        int[] arr = {2,5,1,3,8,5,7,4,3};
        bubbleSort(arr);
        ArrayUtil.print(arr);
    }
    /**
     * 冒泡排序
     * @param arr
     */
    private static void bubbleSort(int[] arr) {
        if(arr==null || arr.length < 2 ){
            return;
        }
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - i -1; j++) {   // 这里说明为什么需要-1
                if (arr[j] > arr[j + 1]) {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
    }
}

什么是面向对象

概述:将事物高度抽象化的编程模式

将问题分解成一个个的步骤,对每个步骤进行相应的抽象,形成对象,通过不同对象之间的调用,组合解决问题。通俗一点讲,在进行面向对象的编程过程中,要把属性、行为等封装成为对象,而后基于这些对象及对象的能力进行业务逻辑的实现。
譬如:我们想要造一辆车,那么我们就把车的属性定义出来,然后抽象成为一个Car类。

举例说明其二者之间的区别

比如我们可以通过象棋的设计来具体问题具体分析;
面向对象:创建黑白双方的对象负责演算;创建棋盘对象负责画布;规则对象进行判断;
这样就可以看出,面向对象更重视不重复造轮子,即可以理解为
创建一次,重复使用

面向过程:(开始-黑棋走-棋盘-判断-白棋走-棋盘-判断)循环。我们只是需要去关注每一步怎么走,怎么实现即可。
优劣对比:
面向对象:占用资源比重较高,速度相对较慢。易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统
面向过程:占用资源比重较低,速度相对较快,没有面向对象易维护、易复用、易扩展

总结

其实上面所讲到的都是一些官方的解释,对于初学者来说是比较难以理解的或者说是比较容易记混的,那不如通过生活中的实例进行演示可能会更加的好理解,更容易记住,下面就举一个简单的例子通俗的解释这些官方给出的释义。
干饭人,干饭魂,干饭都是人上人
每天我们都在干饭,一日三餐必不可少,偶尔来顿宵夜加餐也未尝不可,那么我们就从干饭这个角度来说明面向对象面向过程
我们把面向过程定义为一份蛋炒饭 ;把面向对象定义为盖浇饭
虽然没有亲手做过这两道饕餮大餐,但是没吃过猪肉还没见过猪跑吗?
蛋炒饭的步骤虽然说不是很清楚但是有一步肯定是重中之重那就是把蛋液和米饭混搭在一起,OK,那么这个时候问题来了,我们把如何做蛋炒饭的步骤一个个想象出来,第一步该干什么,第二步该干什么…直到出锅,饭好了开干。如果恰好有人反悔了不喜欢鸡蛋,喜欢榨菜,要是榨菜炒饭那么这个时候怎么办呢,那我们只能倒掉重来,在制作过程的某一步把鸡蛋换成榨菜;这就体现出了面向过程的基本要素,你仔细想想是不是这么回事?
盖浇饭如果是面向对象的话,就可以理解为每个菜都是不同的对象,米饭也是一个对象,你要吃鱼香肉丝盖浇饭,那么好米饭+鱼香肉丝,OK出锅,你说你反悔了不想吃鱼香肉丝(对象),想吃酱香猪蹄(对象),我把鱼香肉丝扒拉掉,换成酱香猪蹄,我只需要换菜(对象),而不是整个倒掉重来,这和面向对象的基本要义完全相符。
这样的比较可以说是把二者之间的区别展现了出来,也让我们有了更加具体的理解。
相信会对你的编程之路有好的帮助,为你开个好头!

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值