当前位置:首页>python>小白学python第64天之面向对象编程思想

小白学python第64天之面向对象编程思想

  • 2026-08-26 20:38:12
小白学python第64天之面向对象编程思想

2.9

面向对象编程思想

?

学前疑问

你是不是也曾遇到过这样的困扰:当程序功能越来越复杂,代码量从几百行扩展到几千行后,突然发现自己陷入了一种“牵一发而动全身”的困境——修改一个小功能,却意外引发多个地方的错误?

1

面向对象编程思想

(1)什么是面向过程

传统的面向过程的编程思想总结起来就八个字——自顶向下,逐步细化!

→ 将要实现的功能描述为一个从开始到结束按部就班的连续的“步骤”。

→ 依次逐步完成这些步骤,如果某一个步骤的难度较大,又可以将该步骤再次细化为若干个子步骤,以此类推,一直到结尾并得到我们想要的结果。

就是把要开发的系统分解为若干个步骤,每个步骤就是函数,当所有步骤全部完成以后,则这个系统就开发完毕了!

举个栗子:大家以来传智教育报名学习这件事情,可以分成哪些步骤?开始 → 学员提出报名,提供相关材料 → 学生缴纳学费,获得缴费凭证 → 教师凭借学生缴费凭证进行分配班级 → 班级增加学生信息 → 结束所谓的面向过程,就是将上面分析好了的步骤,依次执行就行了!

(2)什么是面向对象

思考:上面的整个报名过程,都有哪些动词?

提出、提供、缴纳、获得、分配、增加

有动词就一定有实现这个动作的实体!

所谓的模拟现实世界,就是使计算机的编程语言在解决相关业务逻辑的时候,与真实的业务逻辑的发生保持一致,需要使任何一个动作的发生都存在一个支配给该动作的一个实体(主体),因为在现实世界中,任何一个功能的实现都可以看做是一个一个的实体在发挥其各自的“功能”(能力)并在内部进行协调有序的调用过程!

(3)举个栗子:使用面向对象实现报名系统开发

第一步:分析哪些动作是由哪些实体发出的

学生提出报名

学生提供相关资料

学生缴费

机构收费

教师分配教室

班级增加学生信息

于是,在整个过程中,一共有四个实体:学生、机构、教师、班级!在现实中的一个具体的实体,就是计算机编程中的一个对象!

第二步:定义这些实体,为其增加相应的属性和功能

属性就是实体固有的某些特征特性信息,在面向对象的术语中,属性就是以前的变量。

比如:

一个人的属性有:身高、体重、三围、姓名、年龄、学历、电话、籍贯、毕业院校等;

一个手机的属性有:价格、品牌、操作系统、颜色、尺寸等。

功能就是就是实体可以完成的动作,在面向对象的术语中,功能就是封装成了函数或方法。

第三步:让实体去执行相应的功能或动作

学生提出报名

学生提供相关资料

教师登记学生信息

学生缴费

机构收费

教师分配教室

班级增加学生信息

(4)面向对象编程思想迁移

以前写代码,首先想到的是需要实现什么功能——调用系统函数,或者自己自定义函数,然后按部就班的执行就行了!

以后写代码,首先想到的是应该由什么样的主体去实现什么样的功能,再把该主体的属性和功能统一的进行封装,最后才去实现各个实体的功能。

注意:面向对象并不是一种技术,而是一种思想,是一种解决问题的最基本的思维方式!

所以,面向对象的核心思想是:不仅仅是简单的将功能进行封装(封装成函数),更是对调用该功能的主体进行封装,实现某个主体拥有多个功能,在使用的过程中,先得到对应的主体,再使用主体去实现相关的功能!

(5)面向对象要比面向过程好?

一个面试题:面向过程和面向对象的区别?

① 都可以实现代码重用和模块化编程,面向对象的模块化更深,数据也更封闭和安全。

② 面向对象的思维方式更加贴近现实生活,更容易解决大型的复杂的业务逻辑。

③ 从前期开发的角度来看,面向对象比面向过程要更复杂,但是从维护和扩展的角度来看,面向对象要远比面向过程简单!

④ 面向过程的代码执行效率比面向对象高。

今日学习完毕,课后作业:

场景描述:

假设你需要开发一个简单的学生成绩统计程序,主要功能是读取一组分数,然后计算平均分。未来,这个程序有可能需要扩展,例如增加计算中位数、排序或图形化显示成绩分布图等功能。

题目:

在项目初期,从长期可维护性和扩展性的角度出发,选择哪种编程范式作为基础架构更为合适?(   )

A. 面向过程编程

B. 面向对象编程

C. 两者差别不大,任意选择即可

D. 应根据首次开发的功能是否复杂来决定

最新文章

随机文章