zoukankan      html  css  js  c++  java
  • python面向对象(三、封装)

    3.封装

    3.1 封装
    1)封装是面向对象编程的一大特点
    2)面向对象编程的第一步 — 将 属性和方法 封装到一个抽象的类中
    3)外界使用类创建对象,然后让对象调用方法
    4)对象方法的细节都被封装在类的内部
    5)一个对象的属性可以是另外一个类创建的对象

    3.2 小明爱跑步
    1)需求和分析:

    提示:在 对象的方法内部,是可以直接访问对象的属性的!
    2)代码实现:

    3.3 扩展 — 小美也爱跑步
    1)需求
    小明和小美都爱跑步
    小明体重75.0公斤
    小美体重45.0公斤
    每次跑步都会减少0.5公斤
    每次吃东西都会增加1公斤

    2)代码:

    提示:
    在对象的方法内部,可以直接访问对象的属性
    同一个类创建的多个对象之间,属性互不干扰!每个对象都有各自的内存空间

    3.4 摆放家具
    1)需求:
    (1)房子(House)有户型、总面积和家具名称列表、 新房子没有任何的家具
    (2)家具(HouseItem)有名字和占地面积,其中
    席梦思(bed)占地4平米
    衣柜(chest)占地2平米
    餐桌(table)占地1.5平米
    (3)将以上三件家具添加到房子中
    (4)打印房子时,要求输出:户型、总面积、剩余面积、家具名称列表
    2)剩余面积
    (1)在创建房子对象时,定义一个剩余面积的属性,初始值和总面积相等
    (2)当调用add_item方法,向房间添加家具时,让剩余面积-=家具面积
    3)思考:应该先开发哪一个类?
    答案:家具类
    (1)家具简单
    (2)房子要使用到家具,被使用的类,通常应该先开发

    3.4.1 创建家具

    小结:
    创建了一个家具类,使用到__init__和__str__两个内置方法
    使用家具类创建了三个家具对象,并且输出家具信息

    3.4.2 创建房间

    小结:
    1)创建了一个房子类,使用到__init__和__str__两个内置方法
    2)准备了一个add_item方法准备添加家具
    3)使用房子类创建了一个房子对象
    4)让房子对象调用了三次add_item方法,将三件家具以实参传递到add_item内部

    3.4.3 添加家具
    1)需求
    (1)判断家具的面积是否超过剩余面积,如果超过,提示不能添加这件家具
    (2)将家具的名称追加到家具名称列表中
    (3)用房子的剩余面积-家具面积
    2)代码:


    3)输出:

    3.4.4 小结
    1)主程序只负责创建房子对象和家具对象
    2)让房子对象调用add_item方法将家具添加到房子中
    3)面积计算、剩余面积、家具列表等处理都被封装到房子类的内部

    3.5 士兵突击
    需求:
    1)士兵许三多有一把AK47
    2)士兵可以开火
    3)枪能够发射子弹
    4)枪装填装填子弹——增加子弹数量

    3.5.1 开发枪类
    shoot方法需求:
    1)判断是否有子弹,没有子弹无法射击
    2)使用print提示射击,并且输出子弹数量

    3.5.2 开发士兵类
    1)需求:假设:每一个新兵都没有枪
    定义没有初始值的属性,在定义属性时,如果不知道设置什么初始值,可以设置为None。
    None关键字表示什么都没有,表示一个空对象,没有方法和属性,是一个特殊的常量
    可以将None赋值给任何一个变量
    fire方法需求:
    (1)判断是否有枪,没有枪没法冲锋
    (2)喊一声口号
    (3)装填子弹
    (4)射击
    2)代码:一个对象的属性可以是另外一个类创建的对象



    3)运行结果:

    3.5.3 小结:
    1)创建了一个士兵类,使用到__init__内置方法
    2)在定义属性时,如果不知道设置什么初始值,可以设置为None
    3)在封装的方法内部,还可以让自己的属性使用其他类创建的对象,调用已经封装好的方法

    3.6 私有属性和私有方法
    3.6.1 应用场景及定义方式
    1)应用场景:
    (1)在实际开发中,对象的某些属性或方法可能只希望在对象的内部被使用,而不希望在外部被访问到
    (2)私有属性就是对象不希望公开的属性,包括:实例属性、类属性
    (3)私有方法就是对象不希望公开的方法,包括:实例方法、类属方法、静态方法

    2)定义方式
    在定义属性或方法时,在属性名或者方法名前增加两个下划线“__”,定义的就是私有属性或方法

    常规代码:

    私有属性:

    私有方法:

    3.6.2 伪私有属性和私有方法(科普)
    Python中,并没有真正意义的私有。在给属性、方法命名时,实际是对名称做了一些特殊处理,使得外界无法访问到
    通过特殊处理即可访问私有属性和方法:在名称前面加上“_类名”
    使用“_类名__名称”,即可访问
    提示:在日常开发中,不要使用这种方式,访问对象的私有属性或私有方法

  • 相关阅读:
    TOEFL资料 280多个
    Eclipse搭建J2ME开发环境
    Session.Abandon和Session.Clear有何不同
    进程之同步、互斥PV操作笔记
    Windows Mobile 6.5 实现联系人分组显示
    关于数据库的版本控制
    xhtml的布局,满屏,高度自适应
    MOSS 项目模板
    DNN中与模块相关的信息
    J2EE学习笔记
  • 原文地址:https://www.cnblogs.com/bdzxh/p/14072287.html
Copyright © 2011-2022 走看看