自学Python之路html
面向过程:根据业务逻辑从上到下写代码。python
优势:性能比面向对象高,由于类调用时须要实例化,开销比较大,比较消耗资源;好比单片机、嵌入式开发、 Linux/Unix等通常采用面向过程开发,性能是最重要的因素。 算法
缺点:没有面向对象易维护、易复用、易扩展。编程
面向对象:将数据与函数绑定在一块儿,进行封装,这样可以更快速的开发程序,减小了重复代码的重写过程。安全
优势:易维护、易复用、易扩展,因为面向对象有封装、继承、多态性的特性,能够设计出低耦合的系统,使系统 更加灵活、更加易于维护。 编程语言
缺点:性能比面向过程低模块化
面向过程?面向过程就是面向解决问题的过程进行编程。函数
咱们在学习和工做中,当咱们去实现某项功能或完成某项任务时,是否是会不自觉的循序渐进的罗列出咱们要作的事情?(若是没有,建议之后试着步骤化解决问题)。而当咱们按着咱们罗列的步骤去解决问题时,实质上就是按照面向过程的思想去解决问题。咱们罗列的步骤就是过程,按照步骤解决问题就是面向过程。工具
传统的面向过程的编程思想总结起来就八个字——自顶向下,逐步细化!实现步骤以下:性能
案例:学生到校报道注册
面向过程流程图:
面向过程,就是按照咱们分析好了的步骤,循序渐进的依次执行就好了!因此当咱们用面向过程的思想去编程或解决问题时,首先必定要把详细的实现过程弄清楚。一旦过程设计清楚,代码的实现简直垂手可得。
所谓的面向对象,就是在编程的时候尽量的去模拟真实的现实世界,按照现实世界中的逻辑去处理一个问题,分析问题中参与其中的有哪些实体,这些实体应该有什么属性和方法,咱们如何经过调用这些实体的属性和方法去解决问题。
现实世界中,任何一个操做或者是业务逻辑的实现都须要一个实体来完成,也就是说,实体就是动做的支配者,没有实体,就确定没有动做发生!
如今让咱们思考下,上述注册报名的每个步骤都有哪些动词?
提出 提供 缴 收 得到 分配 增长
有动词就必定有实现这个动做的实体!
所谓的模拟现实世界,就是使计算机的编程语言在解决相关业务逻辑的方式,与真实的业务逻辑的发生保持一致!须要使每个动做的背后都一个完成这个动做的实体!
由于任何功能的实现都是依赖于一个具体的实体的“动做|操做|行动”,能够看做是一个又一个的实体在发挥其各自的“能力”并在内部进行协调有序的调用过程!
当采用面向对象的思想解决问题时,可分为下面几步:
采用面向对象的思想,解决上面的报名问题,应该以下:
第一步:分析那些动做是由哪些实体发出的
因而,在整个过程当中,一共有四个实体:
学生、机构、教师、班级!
在现实中的一个具体的实体,就是计算机编程中的一个对象!
第二步:定义这些实体,为其增长相应的属性和功能
属性就是实体在现实世界中的一些特征表现。如:
功能就是能完成的动做,在面向对象的术语中,动做就叫做方法或者函数。如:
下图显示了在上述实例中出现的实体以及相应的属性和功能:
第三步:让实体去执行相应的功能或动做
因此说,面向过程主要是针对功能,而面向对象主要是针对可以实现该功能的背后的实体。面向对象实质上就是面向实体,因此当咱们使用面向对象进行编程时,必定要创建这样一个观念:万物皆对象!
面向过程简单直接,易于入门理解,模块化程度较低。
面向对象相对于面向过程较为复杂,不易理解,模块化程度较高。
可总结为下面三点:
软件的开发其实一整套规范,咱们所学的只是其中的一小部分,一个完整的开发过程,须要明确每一个阶段的任务,在保证一个阶段正确的前提下再进行下一个阶段的工做,称之为软件工程
面向对象的软件工程包括下面几个部:
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个阶段进行,每每由程序设计者按照面向对象的方法进行程序设计,包括类的设计和程序的设计。