面向对象的介绍 | 学习笔记

简介: 快速学习 面向对象的介绍

开发者学堂课程【Python入门 2020年版面向对象的介绍】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/639/detail/10366


面向对象的介绍


内容介绍:

一、面向过程编程

二、面向对象编程

三、面向对象基本概念


一、面向过程编程

面向对象是什么?

在我们学习面向对象之前,我们曾学到一个概念,叫面向过程。

其实以前写的这个代码,都是面向过程的一个代码,面向过程就是根据业务逻辑从上到下的写代码,就把这个代码一行行写。

而面向对象,就是把变量与函数绑定在一起,分类进行封装,每个程序只需要负责分给自己的分类,这样就能够快速的开发接口的代码的代码的编辑量。

这个意思是里面的那些过程,大家最容易接受。因为面向过程的代码是非常简单的,一步一步走的。

新建一个 python 文件命名为05-面向过程,写入代码:

while True:

print(“””------------------------

名片管理系统-v1 0

1:添加名片

2:删除名片

3:修改名片

4:查询名片

5:显示所有名片

6:退出系统

--------------------------“”“)

operator = input(‘请输入要进行的操作(数字)’)

运行后会得到结果:

image.png

现在需要把用户所选择的选项进行对应的操作,代码内容为:

def add_user():

pass

def dal_user():

pass

def modify_user():

pass

def query_user():

pass

def show_all():

pass

def start():

while True:

print(“””------------------------

名片管理系统-v1 0

1:添加名片

2:删除名片

3:修改名片

4:查询名片

5:显示所有名片

6:退出系统

--------------------------“”“)

operator = input(‘请输入要进行的操作(数字)’)

if operator == ’1:

add_user()

elif operator ==2:

del_user()

elif operator == 3:

modify_user()

elif operator == 4:

query_user()

elif operator == 5:

show_all()

elif operator == 6:

pass

else:

print(‘输入有误,请重新输入……’)

这段代码中,开始就是一个死循环,其次是让用户输入一个数字,每一个数字都有对应的操作,每一个操作有对应的函数。这个代码就是面向过程的写法,即在做一件事,一个操作对应一个行为。

while True 之后的内容都放在 def start()函数中,整个程序由 start 函数开始,start()函数启动后会根据所选择的数字会选择函数

在最后加入之前学的

if __name__ == ‘__main__’:

start()

代码整体变为:

def add_user():

pass

def dal_user():

pass

def modify_user():

pass

def query_user():

pass

def show_all():

pass

def start():

while True:

print(“””------------------------

名片管理系统-v1 0

1:添加名片

2:删除名片

3:修改名片

4:查询名片

5:显示所有名片

6:退出系统

--------------------------“”“)

operator = input(‘请输入要进行的操作(数字)’)

if operator == 1:

add_user()

elif operator == 2:

del_user()

elif operator == 3:

modify_user()

elif operator == 4:

query_user()

elif operator == 5:

show_all()

elif operator == 6:

pass

else:

print(‘输入有误,请重新输入……’)

if __name__ == __main__:

start()

整个代码处于结构清晰的状态,它有一个总的 start 入口,start 启动之后,对于每一次的点击都会有一个操作,这整个代码在具体写操作的时候把每一个函数补充完整。这种每一步开发的过程都能看到叫做面向过程开发


二、面向过程编程

面向过程编程的关注点在于怎么做

把完成某一个需求的 所欲步骤 从头到尾 逐步实现

根据开发需求,将某些 功能独立的代码封装成一个又一个函数

最后完成的代码,就是顺序的调用不同的函数

特点:

注重步骤与过程,不注重职责分工

如果需求复杂,代码会变得很复杂

开发复杂项目,没有固定的套路,开发难度很大!

下图中,主函数是一个入口,当它启动之后,每一个会自动调用下面的函数,通过函数调函数,函数套用函数的形式。前面的例子是在 start 函数中调用每一种函数这就是面向过程的开发

image.png


三、面向对象基本概念

面向对象编程( Object Oriented Programming OOP,面向对象程序设计)和面相过程编程,是两种不同的编程方式。

面向对象编程的关注点在于谁来做

相比较函数,面向对象是更大的封装,根据职责在一个对象中封装多个方法

在完成某一个需求前,首先确定职责——要做的事情(方法)

根据职责确定不同的对象,在对象内部封装不同的方法(多个)

最后完成的代码,就是顺序地调用不同对象的相应方法。

特点:

注重对象和职责,不同的对象承担不同的职责。

更加适合应对复杂的需求变化,是专门应对复杂项目开发,提供的固定套路。

需要在面向过程基础上,再学习一些面向对象的语法。

如果将之前的例子改为面向对象开发,就不是把 start 中的函数进行调用,而是找到一个对象来去完成,语法上会发生变化,基本的思想不会差太多。需要把调用的函数封装起来,创建一个类,根据类来创建一个实际的对象出来。然后就在 start 中直接调用对象的方法来完成操作。

如下图中的这款游戏,按以前的想法,需要了解到花、僵尸、以及豌豆都在做些什么,这种做法相对来说是麻烦的。

在写这段代码的时候,如果使用面向过程就比较麻烦,但如果使用面向对象就较为简单。

image.png

在做这个游戏的时候,要考虑许多东西。按照面向对象的思想需要先分类,大方向上是两类,植物和僵尸,在对每一类分为特征和行为。植物的特征分为 hp(血量)、cost(所花费的太阳)、position(在图上的位置,需要建立一个坐标轴);行为有 shake(会摇动)。植物中又会被分为 ProtectPlant AttackPlant,而从 Plant 指向这两种的关系叫做继承。

AttackPlant 又具备 damege(伤害值)、attack_cd(攻击间隔时间)的特征和 attack()行为。在这以类图的形式进行呈现:

image.png

分析到目前为止,可以看到这个代码也没有特别复杂。整个界面就分为两部分,左边的是植物部分,右边的是僵尸部分。

它实际上所要写的分支是特别多的,需要大量的人力共同完成,在这不详细说明,只用明白这个所体现的思想。会有专门的工具叫类图,来完成这种分析,它最后会详细到每一个对象,同一个事物有几个就会有对应的几个对象,然后使用这个类来创建对象。

所以这里使用面向对象思想书写代码,还是具有一定的可行性。每一个类中对象都会具有一样的特征和行为。

图中的每一个对象就会使用一个类来创建对象,同一个事物有几个即创建几个对象,每增加一个就需要新建一个对象。

僵尸也是一样的,每来一个僵尸就会有一个类,每一种僵尸都要创建对应的类,如果需要哪一种僵尸,就创建哪一种类图下的对象,需要几个僵尸就创建几个对象,就是面向对象思想。就是通过类创建对象,在创建对象的时候还要为类创建属性。

相关文章
|
2月前
什么叫做 “面向对象” 编程?
本文介绍了面向对象编程(OOP)的概念、核心组件(类和对象)、三大特性(封装、继承和多态)以及六大设计原则,强调了面向对象编程在提高代码的可重用性、模块化、扩展性和维护性方面的优点。
92 1
|
7月前
|
算法 Java 程序员
【C++专栏】C++入门 | 类和对象 | 面向过程与面向对象的初步认识
【C++专栏】C++入门 | 类和对象 | 面向过程与面向对象的初步认识
67 0
|
5月前
|
Java C++ iOS开发
|
7月前
|
人工智能 运维 Java
面向对象进阶
面向对象进阶
73 0
|
程序员 测试技术 C语言
c++面向对象程序设计入门
c++面向对象程序设计入门
164 0
|
数据挖掘 PHP 开发者
面向对象简单技术实现|学习笔记
快速学习面向对象简单技术实现
面向对象简单技术实现|学习笔记
|
存储 开发者 Python
面向对象练习 | 学习笔记
快速学习 面向对象练习
面向对象练习 | 学习笔记
|
存储 PHP 开发者
面向对象基础总结|学习笔记
快速学习面向对象基础总结
|
开发者 Python
面向对象回顾 | 学习笔记
快速学习 面向对象回顾
|
存储
笔记08-面向对象
笔记08-面向对象
笔记08-面向对象