前言
在当今的编程世界中,面向对象和面向过程是两种重要的编程思想。本文简单论述了两种编程思想的主要区别(个人也在学习过程中)。采用的例子是较为简单的算术运算,虽然可以一步执行完毕,但此处将其分解步骤完成,目的是更容易理解两者的思想。
一、面向过程-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.总结
面向对象通过抽象关注事物的本质属性和行为,弱化了具体的实现细节。通过对象使用类中的方法与属性解决问题
三.对比总结
上述例子比较简单,但只为强调解决问题本身的思想。
面向过程编程强调的是解决问题的过程和步骤,将问题分解为一系列的函数或过程,通过依次执行这些函数来完成任务。它以过程为中心,关注的是 “怎么做”。
面向对象编程则以对象为中心,将问题看作是由一系列相互交互的对象组成。它关注的是 “谁来做”,(弱化了怎么做本身)通过定义不同的对象,每个对象负责特定的任务,并通过对象之间的消息传递来协同工作。
简言之,面向对象增加了做这件事的主语(即对象),而弱化了“如何做”;“如何做”正是面向过程所关注的。
以上均是个人观点,因为本人自身也在学习过程中,可能理解有些错误,欢迎批评指正!!!