面向对象与面向过程
本帖最后由 yis1 于 2022-12-17 18:29 编辑# 面向对象与面向过程
面向对象与面向过程是两种编程的方式或者是两种思维,在学习过程中常对这两种编程方式有疑惑,经过学习后,我将自己的学习笔记与理解记录
## 面向过程
### 简单理解面向过程
面向过程指将我们的程序的逻辑分解为一个一个的步骤,通过对每个步骤的抽象,来完成程序。
我们来举个例子
叫孩子上学(妈妈早上叫孩子起床上学的过程步骤)
-1.妈妈起床
-2.妈妈上厕所
-3.妈妈洗漱
-4.妈妈做早饭
-5.妈妈叫孩子起床
-6.孩子上厕所
-7.孩子要洗漱
-8.孩子吃饭
-9.孩子背着书包上学校
在上面的过程中我们将“叫孩子上学”的过程,细细的划分为一个一个的步骤,来实现这个面向过程编程。
### 面向过程的编程思想
将一件事情的每一个步骤,规划的清楚每一步都写出来,这比较符合我们去完成事情的步骤,所以我们更方便的理解
## 面向对象(oop)
面向对象,简单理解就是语言中的所有操作都是通过对象来进行的。
### 对象(object )是什么?
#### 1.对象的定义
内存中专门用来存储数据的一块区域。在对象中我们可以存放各种各样的数据(数值,布尔值,代码(我在目前的阶段觉得最重要的部分));我们拥有一个收纳盒,里面存放着各种各样的工具,当我们需要给手机充电时,从收纳盒中拿出充电器,这些收纳盒里的东西可以称为对象
#### 2.对象的组成
(1)对象的标识(id)
(2)对象的类型(type)
(3)对象的值(value)
注意:
对象的标识和类型,创建之后不可改变;
用变量保存的对象是保存对象的标识(id);
对象的值,分为可变对象(如列表,字典),不可变对象(如数值,字符串)
### 简单理解面向过程
同样的是叫孩子上学的事情,在面向对象的编程中,千言万语汇聚成一句话"孩子妈妈起床叫孩子去上学“,非常简便,此时我们就有一个疑问对象,怎么不见了,是不是你偷了我的“对象”,nono,现在的对象是构成这句话的元素,例如孩子的妈妈,孩子,这样的行为
### 面向对象的编程思想
我们通过叫对象实现这个编程,不需要像面向过程那样将每一句的话全部的写出来,是不是有一种熟悉的感觉,没错就是函数类似,我们将面向过程的中的每一个步骤划分给了,中间使用的对象来实现编程,我们可以简单归纳一下就是(1).找对象(2).搞对象(实现功能,计算)
## 优缺点
### 面向对象
比较容易阅读,并且比较易于维护,容易复用,不太符合常规的思维,编写起来稍微麻烦一点。
```python
#面向对象时,实现人物开关门
#创建一个字典保存两种行为
door_behaviours = {
"开门": 1,
"关门": -1
}
#创建人物
def people(name,behaviour):
peopledata = {
'name' : name,
'behaviours' : behaviour
}
if behaviour in door_behaviours:
peopledata['behaviours'] = door_behaviours
return peopledata
people1 = people('小明','开门')
people2 = people('小红','关门')
print(people1)
print(people2)
```
从上面可以看出添加一个人物和人物行为很简单,仅需要添加一个
peoplenum = people('name','behavuour')
### 面向过程
编程方式,符合我们人类的思维,编写起来相对比较简单。但是这种方式编写代码的往往只适用于一个功能 ,如果要在实现别的功能,即使功能相差极小,也往往要重新编写代码,所以它可复用性比较低,并且难于维护。
```python
#面向编程时,实现人物开关门
#创建人物1
people1 = {
"name": "小红",
"open_door": 1,
"close_door":1
}
#人物1开门
def doorvalue1():
people1["open_door"] +=1
#创建人物2
people2 = {
"name": "小明",
"open_door": 1,
"close_door":1
}
#人物1关门
def doorvalue2():
people2["close_door"] -=1
print(people1)
print(people2)
```
在这里我们添加一个程序就要很多次重复一样的东西,复用性很低的,就算添加函数的功能,也仅仅提交了一部分的复用性
## 总结
我的理解是
面向过程更像是一个事无巨细的部门领导,他会将一个工作分配好给部门员工来完成工作,类似于编写一个函数;
面向对象是公司的老板,诶,我发现一个商机,我叫那个部门和另一个部门一起来完成这样一个工作,具体完成工作的步骤,由部门完成。更加倾向于函数,类的调用
但是两者在最根本的上逻辑实现,是有相同点的都是需要实现的,面向对象是对工具的使用,面向过程是将工具完善。
以上是我现阶段对这两类编程的理解,有什么不足之处,欢迎大家指出,感谢观看面向对象与面向过程
面向对象与面向过程是两种编程的方式或者是两种思维,在学习过程中常对这两种编程方式有疑惑,经过学习后,我将自己的学习笔记与理解记录
页:
[1]