编程范式:面向过程,面向对象
面向过程 VS 面向对象
面向过程编程
核心是过程二字
过程指的是解决问题的步骤,程序从上到下一步一步执行,设计思路是:将大问题分解成一个一个小问题或子程序,再将子程序 分解成小问题,直到借到足够简单的问题的思想
应用场景:一旦完成基本很少改变的场景,著名的例子有Linux內核,git,以及Apache HTTP Server等。
面向对象编程
核心是对象二字OOP编程是利用“类”和“对象”来创建各种模型来实现对真实世界的描述,解决扩展性
应用场景:需求经常变化的软件,一般需求的变化都集中在用户层,互联网应用,企业内部软件,游戏等都是面向对象的程序设计大显身手的好地方
两者的优缺点:
面向过程编程
优点:复杂度的问题流程化,进而简单化
缺点:难维护,改一个组件,牵一发而动全身
面向对象编程
优点:易维护,易扩展,开发效率高
缺点:复杂度高,只有经过实例化后的对象交互才知道结果
面向对象的特征:
类,对象,封装,继承,多态
类(class)
一类有相同属性的对象的模型,在类中定义对象的相同属性和方法
类有两种属性:数据属性和函数属性
1. 类的数据属性是所有对象共享的,在obj.name会先从obj自己的名称空间里找name,找不到则去类中找,类也找不到就找父类...最后都找不到就抛出异常
2. 类的函数属性是绑定给对象用的,类中定义的函数(没有被任何装饰器装饰的),主要是给对象使用的,虽然所有对象指向的都是相同的功能,但是绑定到不同的对象就是不同的绑定方法
对象(Object)