对比面向对象与面向过程编程思想

前言

在当今的编程世界中,面向对象和面向过程是两种重要的编程思想。本文简单论述了两种编程思想的主要区别(个人也在学习过程中)。采用的例子是较为简单的算术运算,虽然可以一步执行完毕,但此处将其分解步骤完成,目的是更容易理解两者的思想。

一、面向过程-C语言

1.引例

面向过程编程则侧重于以过程为导向,将问题分解为一系列的步骤和函数,通过依次执行这些函数来完成任务。典型代表C语言,在此用算术运算question1:a*b+c和question2:(a+b)*c来举例子。
question1:可以将此运算分成三步,第一步调用mul()函数,实现乘法;第二步调用add()函数实现加法;第三步调用display方法显示结果
question2:可以将此运算分成两步,第一步调用add()函数,实现乘法;第二步调用mul()函数实现加法;第三步调用display方法显示结果

# include<stdio.h>
//a*b+c和(a+b)*c
int mul(int a,int b) {
    return a * b;
}
int add(int a, int b) {
    return a + b;
}
void display(int result) {
    printf("结果是:%d\n", result);
}
int main()
{
    //创建变量的同时进行初始化
    int a = 2;
    int b = 3;
    int c = 4;
    //分别保存两个运算的结果
    int result1,result2;
    //创建中间变量(实现a*b+c)
    int r = mul(a, b);
    result1 = add(r, c);
    display(result1);
    //当然也可以执行在一条语句,不用创建中间变量,但为了强调过程本身此处还是分开写了
    //display(add(mul(a, b), c));

    //实现(a+b)*c
    int s = add(a, b);
    result2 = mul(s, c);
    display(result2);


    return 0;
}

2.特点

1.以解决问题的过程为核心,将一个复杂的问题分解为一系列具体的步骤或函数。
2.在面向过程编程中,数据和对数据的操作通常是分离的。数据被存储在变量中,而操作数据的函数则独立存在。
3.面向过程编程中经常出现函数的复用
4.函数的执行过程缺少主语

3.总结

面向过程编程以解决问题的过程为核心,将一个复杂的问题分解为一系列具体的步骤或函数。每个步骤都有明确的开始和结束,以及特定的输入和输出。这种方式使得程序的执行流程清晰可见,易于理解和调试。例如,在实现一个简单的计算器程序时,可以将其分解为输入数据、进行运算、输出结果等几个步骤,每个步骤都可以用一个独立的函数来实现。

二、面向对象-Java

1.引例

面向对象编程强调以对象为中心,将数据和操作封装在对象中,通过对象之间的交互来实现程序的功能。典型代表为Java,为了方便对比,我们仍使用上述例子算术运算question1:a*b+c和question2:(a+b)*c来举例
根据该问题特点,此处将其抽象为一个类,一个成员变量result 用于保存运算结果,三个方法(默认的类构造方法不计入)mul(),add(),display()

class Question{
    //该类定义了一个成员变量保存运算结果,三个方法
    int result;
    int mul(int x,int y){
        return x*y;
    }
    int add(int x,int y){
        return x+y;
    }
    void display(int result){
        System.out.println("结果是:"+result);
    }
}
public class Compute {
    public static void main(String[] args) {
        int a=2,b=3,c=4;
        //创建问题1的对象
        Question q1 = new Question();
        int r = q1.mul(a,b);
        q1.result = q1.add(r,c);
        q1.display(q1.result);
        //创建问题2的对象
        Question q2 = new Question();
        int s = q2.add(a,b);
        q2.result = q2.mul(s,c);
        q2.display(q2.result);
    }
}

2.特点

1.它将数据和操作这些数据的方法封装在一个类中,通过对象来调用类中的变量和方法
2.给所有方法的执行加了一个主语(对象),强调“谁去做”
3.由于类的封装特点,弱化了“如何做”本身这件事

3.总结

面向对象通过抽象关注事物的本质属性和行为,弱化了具体的实现细节。通过对象使用类中的方法与属性解决问题

三.对比总结

上述例子比较简单,但只为强调解决问题本身的思想。
面向过程编程强调的是解决问题的过程和步骤,将问题分解为一系列的函数或过程,通过依次执行这些函数来完成任务。它以过程为中心,关注的是 “怎么做”。
面向对象编程则以对象为中心,将问题看作是由一系列相互交互的对象组成。它关注的是 “谁来做”,(弱化了怎么做本身)通过定义不同的对象,每个对象负责特定的任务,并通过对象之间的消息传递来协同工作。
简言之,面向对象增加了做这件事的主语(即对象),而弱化了“如何做”;“如何做”正是面向过程所关注的。
以上均是个人观点,因为本人自身也在学习过程中,可能理解有些错误,欢迎批评指正!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值