首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

一篇文章快速学会python面对对象的编程思维!

面向过程:根据业务逻辑从上到下写代码。

如果你感觉学不会?莫慌,小编推荐大家加入群,

前面548中间377后面875,群里有志同道合的小伙伴,

互帮互助,还可以拿到许多视频教程!

优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、 Linux/Unix等一般采用面向过程开发,性能是最重要的因素。

缺点:没有面向对象易维护、易复用、易扩展。

面向对象:将数据与函数绑定在一起,进行封装,这样能够更快速的开发程序,减少了重复代码的重写过程。

优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护。

缺点:性能比面向过程低

一、面向过程

面向过程?面向过程就是面向解决问题的过程进行编程。

我们在学习和工作中,当我们去实现某项功能或完成某项任务时,是不是会不自觉的按部就班的罗列出我们要做的事情?(如果没有,建议以后试着步骤化解决问题)。而当我们按着我们罗列的步骤去解决问题时,实质上就是按照面向过程的思想去解决问题。我们罗列的步骤就是过程,按照步骤解决问题就是面向过程。

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

将要实现的功能描述为一个从开始到结束按部就班的连续的步骤(过程);

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

程序的主体是函数,一个函数就是一个封装起来的模块,可以实现一定的功能,各个子步骤往往就是通过各个函数来完成的,从而实现代码的重用和模块化编程!

案例:学生到校报道注册

面向过程流程图:

面向过程,就是按照我们分析好了的步骤,按部就班的依次执行就行了!所以当我们用面向过程的思想去编程或解决问题时,首先一定要把详细的实现过程弄清楚。一旦过程设计清楚,代码的实现简直轻而易举。

二、面向对象

所谓的面向对象,就是在编程的时候尽可能的去模拟真实的现实世界,按照现实世界中的逻辑去处理一个问题,分析问题中参与其中的有哪些实体,这些实体应该有什么属性和方法,我们如何通过调用这些实体的属性和方法去解决问题。

现实世界中,任何一个操作或者是业务逻辑的实现都需要一个实体来完成,也就是说,实体就是动作的支配者,没有实体,就肯定没有动作发生!

现在让我们思考下,上述注册报名的每一个步骤都有哪些动词?

提出 提供 缴 收 获得 分配 增加

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

所谓的模拟现实世界,就是使计算机的编程语言在解决相关业务逻辑的方式,与真实的业务逻辑的发生保持一致!需要使每一个动作的背后都一个完成这个动作的实体!

因为任何功能的实现都是依赖于一个具体的实体的“动作|操作|行动”,可以看作是一个又一个的实体在发挥其各自的“能力”并在内部进行协调有序的调用过程!

当采用面向对象的思想解决问题时,可分为下面几步:

分析哪些动作是由哪些实体发出的;

定义这些实体,为其增加相应的属性和功能;

让实体去执行相应的功能或动作。

采用面向对象的思想,解决上面的报名问题,应该如下:

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

学生提出报名

学生缴费

机构收费

教师分配教室

班级增加学生信息

于是,在整个过程中,一共有四个实体:

学生、机构、教师、班级!

在现实中的一个具体的实体,就是计算机编程中的一个对象!

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

属性就是实体在现实世界中的一些特征表现。如:

人的属性:姓名、性别、身高、三围、体重、电话号码、家庭住址、籍贯等

手机的属性:品牌、价格、颜色、尺寸、待机时间等

功能就是能完成的动作,在面向对象的术语中,动作就叫作方法或者函数。如:

人的动作(功能):吃饭、睡觉、学习、打游戏、走路、跑步、缴费!

手机的动作(功能):打电话、发短信、拍照、打游戏、视频、看电影等

下图显示了在上述实例中出现的实体以及相应的属性和功能:

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

学生提出报名

学生缴费

学校收费

教师分配教室

班级增加学生信息

所以说,面向过程主要是针对功能,而面向对象主要是针对能够实现该功能的背后的实体。面向对象实质上就是面向实体,所以当我们使用面向对象进行编程时,一定要建立这样一个观念:万物皆对象!

三、面向对象和面向过程的比较

面向过程简单直接,易于入门理解,模块化程度较低。

面向对象相对于面向过程较为复杂,不易理解,模块化程度较高。

可总结为下面三点:

都可以实现代码重用和模块化编程,但是面对对象的模块化更深,数据更封闭,也更安全!因为面向对象的封装性更强!

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

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

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181019A19ZPM00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券