yis1 发表于 2022-12-17 13:05

面向对象与面向过程

本帖最后由 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]
查看完整版本: 面向对象与面向过程