本人是初学者一枚,写下笔记分享自己的一些见解,若有错误之处希望各位大神多多海涵,并请指出理解有误的地方,谢谢
- 首先说明的数面向对象与面向过程是一种编程思维上的不同。
- 通过书本或视频的介绍,基本都理解什么是类,什么是对象,什么是属性,但是这些知道以后,我个人还是无法理解面向对象和过程是有什么区别。
举一个实际的例子:编写一个计算器的软件。
面向过程的程序员:
1、 定义变量用于保存用户的输入
2、 实现一个加法函数,完成数据的加法
3、 实现一个减法函数,完成数据的减法
4、 实现一个乘法函数,完成数据的乘法
int data1;
int data2;
int calc_add(data1,data2):
{
return data1+data2;
}
int calc_sub(data1,data2):
{
return data1-data2;
}
int calc_mul(data1,data2):
{
return data1*data2;
}
面向对象的程序员:
1、 定义一个计算器的对象
2、 计算器对象应该含有保存数据的变量
3、 计算器对象应该有完成某些计算的方法
这两种思维方式最大的区别在于:面向对象是从计算器这个总体出发,把计算器需要的变量和计算的方法全都封装在一个对象里。
class calc
{
int data1;
int data2;
int calc_add()
{
return data1+data2;
}
int calc_sub()
{
return data1-data2;
}
int calc_mul()
{
return data1*data2;
}
};
而在调用这个对象的时候就只要实例化对象就可以了。
如果遇到另一种情况,现在不只是编写一个计算器程序,还要加入打电话的程序,播音乐的程序。
如果是面向对象的程序员以前有写过打电话的程序和播音乐的程序就可以直接复制黏贴使用了。
1、计算器是一个对象,包含一些数据和方法
2、打电话是一个对象,包含一些数据和方法
3、播放音乐是一个对象,包含一些数据和方法
class calc
{……}
//通过寻找以前写过类抽出来的
class phone
{……}
class music
{……}
calculation = new calc();
call=new phone()
mus=new music()
……
但是到了面向过程的程序员就不能这么方便了。
1、 定义变量用于保存用户的输入
2、 实现一个加法函数,完成数据的加法
3、 实现一个减法函数,完成数据的减法
4、 实现一个乘法函数,完成数据的乘法
5、 实现一个打电话的函数
6、 实现一个播音乐的函数
int data1;
int data2;
int calc_add(data1,data2):
{
return data1+data2;
}
int calc_sub(data1,data2):
{
return data1-data2;
}
int calc_mul(data1,data2):
{
return data1*data2;
}
//通过寻找以前写过的n个文件n条代码抽出来的
xxx//打电话的变量
xxx//播放音乐的变量
void xxx()
{
xxxxx//打电话的代码段
}
void xxx()
{
xxxxx//播放音乐的代码段
}
即使这样还要查看变量函数有没有定义,定义的时候有没有重名等情况,不然统统报错。
到这里也可以看出,面向对象的一些特点:
1、 重复利用很方便,即使在这个基础上做出一点修改也是可以的。
2、 一个对象包含数据以及方法,一个对象是一个独立的个体
3、 在写程序的时候把所有的对象先封装好然后再实例化。
------------------------------------------------------------------华丽分界线--------------------------------------------------------------------------------
感谢以下文章给予我的帮助:
面向对象与面向过程编程的区别