1.程序 = 指令 + 数据
代码可以选择以指令为核心或者以数据为核心进行编写 两种范型 (1)以指令为核心:围绕"正在发生什么"进行编写 面向过程编写:程序有一系列线性步骤;主体思想是用于数据 面向过程:程序 = 算法 + 数据结构 (2)以数据为核心:围绕"将影响谁"进行编写 面向对象编程(OOP):围绕数据及数据严格定义的接口来组织程序,用数据控制对代码的访问 面向对象:将问题空间中的元素以及他们在空间中的表示物抽象为对象,并允许通过问题来描述,而方案 可以把对象想象成一种新型变量,它保存着数据,但可以对自身的数据执行操作2.方法:是类的组成部分
*调用方法需要通过实例来调用,不能通过类(因为类中没有数据) *类被实例化之后:方法由对象或者实例来调用 In [6]: l1 = ['a','b','c','d'] #实例化过程 In [7]: l1. #list所提供的方法 l1.append l1.extend l1.insert l1.remove l1.sort l1.count l1.index l1.pop l1.reverse In [7]: type(l1) Out[7]: list In [8]: list. #其中包含属性 list.append list.extend list.insert list.pop list.reverse list.count list.index list.mro list.remove list.sort3.类间的关系
(1)依赖:一个类的方法操纵另一个类的对象 (2)聚合:类 A 的对象包含类 B 的对象 (3)继承:描述特殊与一般的关系 只要能被父类接受的调用,就可以被子类调用4.面向对象编程的原则: 封装 | 继承 | 多态
(1)封装 *隐藏实现的方案细节 *将代码及其处理的数据绑定在一起的一种编程机制,用于保证程序和数据不受外部干扰且不会被误用 (2)继承 *一个对对象获得另外一个对象属性的过程;用于实现按层分类的概念 *一个深度继承的子类继承了类层次中它的每一个祖先所有属性 *超类,基类,父类 *子类,派生类 (3)多态性 *允许一个接口被多个通用的类动作使用的特性,具体使用哪个动作与应用场合无关 *'一个接口,多个方法' 用于一组相关的的动作设计一个通用的接口,降低程序的复杂性