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

278 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 8 天,点击查看活动详情

面向过程和面向对象是两种截然不同的编程思想,像C语言是完全面向过程的编程思想,Java则是完全面向对象的编程思想,那么这两种编程思想有什么区别呢?

1. 面向过程

面向过程是一种自顶向下的编程模式,以过程为中心,将需要执行的任务拆分成多个步骤,将步骤用一个个方法包装起来,依次执行步骤直到任务完成。

以启动车辆为例,使用面向过程的思想编程,代码如下:

applyBrakes(); // 踩住刹车
turnKey(); // 拧动钥匙
carStart(); // 车辆启动
releaseBrakes(); // 松开刹车
carMoveForward(); // 车辆前进

将任务拆分成步骤,步骤转化成方法,以方法为最小单位,依次执行完成任务。

2. 面向对象

面向对象是将事物高度抽象化的编程模式,以对象为中心,将任务才分出来的步骤都交给各个对象实现,每个对象之间互不相干,只需要完成自己的工作就可以了。

就以启动汽车为例,该任务涉及到了人和车辆两个对象,人只要负责踩刹车、拧钥匙、松刹车就可以了,汽车则负责启动和前进,两者互不相干,每个对象只需要管好自己的事,无需管其他对象在干嘛,代码如下:

public static void main(String[] args) {
    Person person = new Person();
    Car car = new Car();
    person.applyBrakes();
    person.turnKey();
    car.carStart();
    person.releaseBrakes();
    car.carMoveForward();
}
public static class Person {
    private void applyBrakes() { }
    private void turnKey() { }
    private void releaseBrakes() { }
}

public static class Car {
    private void carStart() { }
    private void carMoveForward() { }
}

定义人和车辆两个对象并实例化,每个对象自己完成自己负责的事情,Person实现自己的方法,Car也是,两者互不相干。

3. 异同

面向过程与面向对象都是对软件分析、设计和开发的一种思想。其中面向对象可以说是包含了面向过程,是在面向过程的基础上抽象出来的,相对于面向过程来说更复杂,模块化程度更高。从开发角度看,面向对象更容易后期的扩展和维护。