python学习-第十三周:面向对象编程OOP

python学习-第十三周:面向对象编程OOP

面向对象编程

面向对象编程(Object Oriented Programming)简称OOP,是一种以对象为中心的程序设计思想。
与之对应的是,面向过程编程(Procedure Oriented ProgrammingPOP),即以过程为中心的程序设计思想。

理解面向过程与面向对象思想

对于同一个问题用这两种不同的思想来解决,看看它们的区别

提出问题:做饭
面向过程:
1.买菜
2.洗菜
3.刷锅刷碗
4.炒菜
5.端上餐桌
面向对象:
对象:厨师
告诉厨师去做饭
面向对象就是调用对象去解决问题,具体的对象如何去解决呢?
厨师这个对象肯定也是一步步去做饭。但是对于我来说,就是调用了对象。

面向过程和面向对象的区别和优缺点?

一,面向过程

面向过程的核心是过程,过程就是指解决问题的步骤。

优缺点:

  • 优点: 将负责的问题流程化,进而实现简单化
  • 缺点:扩展性差(更新,维护,迭代)
    总结:在去完成一些简单的程序时,可以使用面向过程去解决。但是如果有复杂的程序或任务,而且需要不断的进行迭代和维护,那么肯定是优先选择面向对象的编程思想

二,面向对象

面向对象的核心是对象,是一个特征和功能的综合体

优缺点:

  • 优点:可扩展性高
  • 缺点:编程复杂度相对面向过程高一些。

认识OOP中的概念

类:类是对象的一个抽象的概念
对象(实例):对象就是由类的创建的实例
类和对象的关系就是 模具与铸件、整体和部分的关系

  1. 类是由对象总结而来的,总结的这个过程叫做抽象
  2. 对象是由类具体实施出来的,这个过程叫做实例化
    例如:水果是一个类,苹果是一个对象
    汽车是一个类,宝马是一个对象
类 由 属性和方法 两个内容组成:
    属性:(类的特征)就是一个描述:颜色、品种、大小 。。。
    方法:(类的功能)就是一个能力:拉货、载人。。。
    属性在编程中就是一个变量 ,方法在编程中就是一个函数 
类中属性一般定义在前面,方法定义在后面

面向对象编程的基本实现

第一步:抽象一个类

# 定义一个汽车的类
class Cart():
    pass   
'''
类名的书写规范,建议使用驼峰命名法
    大驼峰:MyCar XiaoMi
    小驼峰:myCar xiaoMi
'''

第二步:定义类的属性和方法

# 定义一个汽车的类
class Cart():
    # 属性 ==> 特征 ==> 变量
    color = '白色'  # 表示颜色属性
    brand = '宝马'  # 表示品牌属性
    pailiang = 2.4 # 表示排列属性

    # 方法 ==> 功能 ==> 函数
    def yunhuo(self):
        print('小汽车能运货')

    def doufeng(self):
        print('小汽车能兜风')

    def didi(self):
        print('小汽车开滴滴')

使用一个类

# 如何去使用这个类?
# 通过类实例化一个对象
baoma =  Cart()

# 调用方法
baoma.doufeng()

# 获取对象的属性
print(baoma.brand)

对属性和方法的操作

对象操作

成员属性:
  访问:  对象.属性名
  修改:  对象.属性名 = 新值。(此时等于给这个对象创建了一个自己的属性)
  添加:  对象.新属性名 = 值 (此时是给这个对象自己新建了一个属性)
  删除:  del 对象.属性名 (注意:只能删除这个对象自己的属性)
  
成员方法:
  访问:  对象.方法名()
  修改:  对象.方法名 = func(此时等于给这个对象创建了一个自己的方法)
  添加:  对象.新方法名 = func (此时是给这个对象自己新建了一个方法)
  删除:  del 对象.方法名 (注意:只能删除这个对象自己的方法)

类操作(不推荐)

操作属性:
  访问:  类名.属性名
  修改:  类名.属性名 = 新值。(此时通过这个类创建的对象都具有这个属性)
  添加:  类名.新属性名 = 值 (此时通过这个类创建的对象都具有这个属性)
  删除:  del 类名.属性名 (注意:删除这个类的属性后,这个类创建的对象也没有这几个属性了)
  
操作方法:
  访问:  类名.方法名()
  修改:  类名.方法名 = func(此时通过类创建的对象都被修改)
  添加:  类名.新方法名 = func (此时通过类创建的对象都被修改)
  删除:  del 类名.方法名 (注意:此时通过类创建的对象都被修改)

总结

  • 一个类可以实例化出多个对象,每个对象在内存中都独立存在的
  • 当通过类实例化对象时,并不会把类中的成员复制一份给对象,而去给对象了一个引用
  • 访问对象成员的时候,如果对象自己没有这个成员,对象会向实例化它的类去查找
  • 对象成员的添加和修改,都只会影响当前对象自己,不会影响类和其它对象
  • 删除对象的成员时,必须是该对象自己具备的成员才可以,不能删除类中引用的成员
  • 对类的成员操作,会影响通过这个类创建的对象,包括之前创建的。

面向对象编程OOP部分归纳完毕,下周总结OOP的特性相关内容,下周见~

posted @ 2020-09-12 17:19  Fsky丶  阅读(141)  评论(0)    收藏  举报