自学Python5.1-面向对象与面向过程

自学Python之路html

自学Python5.1-面向对象与面向过程

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

   优势:性能比面向对象高,由于类调用时须要实例化,开销比较大,比较消耗资源;好比单片机、嵌入式开发、 Linux/Unix等通常采用面向过程开发,性能是最重要的因素。 算法

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

面向对象:将数据与函数绑定在一块儿,进行封装,这样可以更快速的开发程序,减小了重复代码的重写过程。安全

   优势:易维护、易复用、易扩展,因为面向对象有封装、继承、多态性的特性,能够设计出低耦合的系统,使系统 更加灵活、更加易于维护。  编程语言

   缺点:性能比面向过程低模块化

1、面向过程

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

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

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

  1. 将要实现的功能描述为一个从开始到结束循序渐进的连续的步骤(过程);
  2. 依次逐步完成这些步骤,若是某一步的难度较大,又能够将该步骤再次细化为若干个子步骤,以此类推,一直到结束获得想要的结果;
  3. 程序的主体是函数,一个函数就是一个封装起来的模块,能够实现必定的功能,各个子步骤每每就是经过各个函数来完成的,从而实现代码的重用和模块化编程!

案例:学生到校报道注册

面向过程流程图:

面向过程,就是按照咱们分析好了的步骤,循序渐进的依次执行就好了!因此当咱们用面向过程的思想去编程或解决问题时,首先必定要把详细的实现过程弄清楚。一旦过程设计清楚,代码的实现简直垂手可得。

2、面向对象

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

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

  如今让咱们思考下,上述注册报名的每个步骤都有哪些动词?

  提出 提供 缴 收 得到 分配 增长

  有动词就必定有实现这个动做的实体!

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

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

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

    1. 分析哪些动做是由哪些实体发出的;
    2. 定义这些实体,为其增长相应的属性和功能;
    3. 让实体去执行相应的功能或动做。

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

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

  • 学生提出报名
  • 学生缴费
  • 机构收费
  • 教师分配教室
  • 班级增长学生信息

  因而,在整个过程当中,一共有四个实体:

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

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

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

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

    • 人的属性:姓名、性别、身高、三围、体重、电话号码、家庭住址、籍贯等
    • 手机的属性:品牌、价格、颜色、尺寸、待机时间等

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

    • 人的动做(功能):吃饭、睡觉、学习、打游戏、走路、跑步、缴费!
    • 手机的动做(功能):打电话、发短信、拍照、打游戏、视频、看电影等

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

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

  • 学生提出报名
  • 学生缴费
  • 学校收费
  • 教师分配教室
  • 班级增长学生信息

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

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

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

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

可总结为下面三点:

  • 均可以实现代码重用和模块化编程,可是面对对象的模块化更深,数据更封闭,也更安全!由于面向对象的封装性更强!
  • 面对对象的思惟方式更加贴近于现实生活,更容易解决大型的复杂的业务逻辑
  • 从前期开发角度上来看,面对对象远比面向过程要复杂,可是从维护和扩展功能的角度上来看,面对对象远比面向过程要简单!

4、面向对象的软件开发

软件的开发其实一整套规范,咱们所学的只是其中的一小部分,一个完整的开发过程,须要明确每一个阶段的任务,在保证一个阶段正确的前提下再进行下一个阶段的工做,称之为软件工程

    面向对象的软件工程包括下面几个部:

4.1 面向对象分析(object oriented analysis ,OOA)

    软件工程中的系统分析阶段,要求分析员和用户结合在一块儿,对用户的需求作出精确的分析和明确的表述,从大的方面解析软件系统应该作什么,而不是怎么去作。面向对象的分析要按照面向对象的概念和方法,在对任务的分析中,从客观存在的事物和事物之间的关系,贵南出有关的对象(对象的‘特征’和‘技能’)以及对象之间的联系,并将具备相同属性和行为的对象用一个类class来标识。

    创建一个能反映这是工做状况的需求模型,此时的模型是粗略的。

4.2 面向对象设计(object oriented design,OOD)

    根据面向对象分析阶段造成的需求模型,对每一部分分别进行具体的设计。

    首先是类的设计,类的设计可能包含多个层次(利用继承与派生机制)。而后以这些类为基础提出程序设计的思路和方法,包括对算法的设计。

    在设计阶段并不牵涉任何一门具体的计算机语言,而是用一种更通用的描述工具(如伪代码或流程图)来描述

4.3 面向对象编程(object oriented programming,OOP)

    根据面向对象设计的结果,选择一种计算机语言把它写成程序,能够是python

4.4 面向对象测试(object oriented test,OOT)

    在写好程序后交给用户使用前,必须对程序进行严格的测试,测试的目的是发现程序中的错误并修正它。

    面向对的测试是用面向对象的方法进行测试,以类做为测试的基本单元。

4.5 面向对象维护(object oriendted soft maintenance,OOSM)

    正如对任何产品都须要进行售后服务和维护同样,软件在使用时也会出现一些问题,或者软件商想改进软件的性能,这就须要修改程序。

    因为使用了面向对象的方法开发程序,使用程序的维护比较容易。

    由于对象的封装性,修改一个对象对其余的对象影响很小,利用面向对象的方法维护程序,大大提升了软件维护的效率,可扩展性高。

 

在面向对象方法中,最先发展的确定是面向对象编程(OOP),那时OOA和OOD都尚未发展起来,所以程序设计者为了写出面向对象的程序,还必须深刻到分析和设计领域,尤为是设计领域,那时的OOP实际上包含了如今的OOD和OOP两个阶段,这对程序设计者要求比较高,许多人感到很难掌握。

如今设计一个大的软件,是严格按照面向对象软件工程的5个阶段进行的,这个5个阶段的工做不是由一我的从头至尾完成的,而是由不一样的人分别完成,这样OOP阶段的任务就比较简单了。程序编写者只须要根据OOd提出的思路,用面向对象语言编写出程序既可。

在一个大型软件开发过程当中,OOP只是很小的一个部分。

对于全栈开发的你来讲,这五个阶段都有了,对于简单的问题,没必要严格按照这个5个阶段进行,每每由程序设计者按照面向对象的方法进行程序设计,包括类的设计和程序的设计。

相关文章
相关标签/搜索