面向对象封装案例 二

封装

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

 一个对象的属性可以是另一个类创建的对象

01.士兵突击

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

class Gun:
    def __init__(self,modle):

        # 1.枪的型号
        self.model = modle

        # 2.子弹的数量
        self.bullet_count = 0

    def add_bullet(self,count):
        self.bullet_count += count

    def shoot(self):

        # 1.判断子弹数量
        if self.bullet_count <= 0:
            print("[%s] 没有子弹了..." % self.model)
            return

        # 2.发射子弹,-1
        self.bullet_count -= 1

        # 3.提示发射信息
        print("[%s]突突突...[%d]"% (self.model,self.bullet_count))

# 1.创建枪对象
ak47 = Gun("AK47")

ak47.add_bullet(50)
ak47.shoot()

1.2 开发士兵类

假设:每一个士兵都没有枪
定义没有初始值的属性
在定义属性时,如果不知道设置什么初始值,可以设置为 None
    None 关键字表示什么都没有
    表示一个空对象,没有办法和属性,是一个特别的常量
    可以将 None 赋值给任何一个变量

fire 方法需求
1.判断是否有枪,没有枪没法冲击
2.喊一声口号
3.装填子弹
4.射击
class Gun:
    def __init__(self,modle):

        # 1.枪的型号
        self.model = modle

        # 2.子弹的数量
        self.bullet_count = 0

    def add_bullet(self,count):
        self.bullet_count += count

    def shoot(self):

        # 1.判断子弹数量
        if self.bullet_count <= 0:
            print("[%s] 没有子弹了..." % self.model)
            return

        # 2.发射子弹,-1
        self.bullet_count -= 1

        # 3.提示发射信息
        print("[%s]突突突...[%d]"% (self.model,self.bullet_count))

class Soldier:
    def __init__(self,name):
        # 1.姓名
        self.name = name

        # 2.枪 - 新兵没有枪
        self.gun = None

# 1.创建枪对象
ak47 = Gun("AK47")

ak47.add_bullet(50)
ak47.shoot()

# 2.创建许三多
xusanduo = Soldier("许三多")

xusanduo.gun = ak47

print(xusanduo.gun)

1.3 士兵开火

class Gun:
    def __init__(self,modle):

        # 1.枪的型号
        self.model = modle

        # 2.子弹的数量
        self.bullet_count = 0

    def add_bullet(self,count):
        self.bullet_count += count

    def shoot(self):

        # 1.判断子弹数量
        if self.bullet_count <= 0:
            print("[%s] 没有子弹了..." % self.model)
            return

        # 2.发射子弹,-1
        self.bullet_count -= 1

        # 3.提示发射信息
        print("[%s]突突突...[%d]"% (self.model,self.bullet_count))

class Soldier:
    def __init__(self,name):
        # 1.姓名
        self.name = name

        # 2.枪 - 新兵没有枪
        self.gun = None

    def fire(self):
        # 1.判断士兵是否有枪
        if self.gun == None:
            print("[%s]还没有枪..."% self.name)

            return
        # 2.高喊口号
        print("冲啊...[%s]"% self.name)
        # 3.让枪填满子弹
        self.gun.add_bullet(50)
        # 4.让枪发射子弹
        self.gun.shoot()

# 1.创建枪对象
ak47 = Gun("AK47")

# 2.创建许三多
xusanduo = Soldier("许三多")

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

02.身份运算符

原文地址:https://www.cnblogs.com/chx-python/p/10331656.html

时间: 2024-08-01 17:00:05

面向对象封装案例 二的相关文章

[Python]面向对象封装案例

面向对象封装案例 封装 封装是面向对象编程的一大特点 面向对象编程的第一步 -- 将属性和方法 封装到一个抽象的类中 => 一开始就应该先做需求分析,分析这个类有哪些属性和方法 外界使用类创建对象,然后让对象调用方法 对象方法的细节都被封装在类的内部 => 封装就是把方法,属性都封装在类中,需要的时候使用类的对象直接进行调用即可 小明爱跑步 需求 小明 体重75.0公斤 小明每次跑步会减肥0.5公斤 小明每次吃东西体重会增加1公斤 class Person: # Python的属性是在__in

3.4面向对象封装案例2士兵突击

面向对象封装案例 II 目标 士兵突击案例 身份运算符 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对象,然后 让对象调用方法 对象方法的细节 都被 封装 在 类的内部 一个对象的 属性 可以是 另外一个类创建的对象 01. 士兵突击 需求 士兵 许三多 有一把 AK47 士兵 可以 开火 枪 能够 发射 子弹 枪 装填 装填子弹 —— 增加子弹数量 1.1 开发枪类 shoot 方法需求 1> 判断是

3.3面向对象封装案例1摆家具

面向对象封装案例 目标 封装 小明爱跑步 存放家具 01. 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对象,然后 让对象调用方法 对象方法的细节 都被 封装 在 类的内部 02. 小明爱跑步 需求 小明 体重 75.0 公斤 小明每次 跑步 会减肥 0.5 公斤 小明每次 吃东西 体重增加 1 公斤 提示:在 对象的方法内部,是可以 直接访问对象的属性 的! 代码实现: ```python class

Python面向对象封装案例

01. 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对象,然后 让对象调用方法 对象方法的细节 都被 封装 在 类的内部 02. 小明爱跑步 需求 小明 体重 75.0 公斤 小明每次 跑步 会减肥 0.5 公斤 小明每次 吃东西 体重增加 1 公斤 注意: 在 对象的方法内部,是可以 直接访问对象的属性 的! class Person: def __init__(self,name,weight):

python面向对象封装

# 面向对象封装案例:为新房子增添家具# 分析对象的属性# 房子属性:户型.面积 # 家具属性: 家具名称.占地面积 class Furniture: def __init__(self, name, area): self.name = name self.area = area def __str__(self): return F"[{self.name}]占地面积{self.area}平方米" class House: def __init__(self, house_type

面向对象封装、继承、多态

一.面向对象封装 01. 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对象,然后 让对象调用方法 对象方法的细节 都被 封装 在 类的内部 02. 小明跑步案例 需求: 小明 体重 50公斤 小明每次 跑步 会减肥 1公斤 小明每次 吃东西 体重增加 0.5 公斤 class Person(object): def __init__(self, name, weight): self.name = na

OC面向对象封装

OC面向对象封装 一.面向对象和封装 面向对象的三大特性:封装(成员变量),继承,多态 在OC语言中,使用@interface和@implementation来处理类. @interface就好像暴露在外面的时钟表面,像外界提供展示以及接口,@implementation就好像隐藏在时钟内部的构造实现,把具体的实现封装了起来. 二.Set方法 在研发过程中,考虑到安全性要求,我们一般不在成员变量名前面使用@public,@protected等关键字修饰,而是使用Set方法来为对象提供成员变量值,

Javascript面向对象编程(二):构造函数的继承

这个系列的第一部分,主要介绍了如何"封装"数据和方法,以及如何从原型对象生成实例. 今天要介绍的是,对象之间的"继承"的五种方法. 比如,现在有一个"动物"对象的构造函数. function Animal(){ this.species = "动物"; } 还有一个"猫"对象的构造函数. function Cat(name,color){ this.name = name; this.color = col

JAVA学习--面向对象的特征二:继承性

* 一.面向对象的特征二:继承性 * 1.为什么要设计继承性?  *  * 2.通过"class A extends B"类实现类的继承.  *   子类:A  父类(或基类 SuperClass):B  *     * 3.子类继承父类以后,父类中声明的属性.方法,子类就可以获取到.  *    明确:当父类中有私有的属性或方法时,子类同样可以获取得到,只是由于封装性的设计,使得子类不可以直接  *        调用罢了.  *   子类除了通过继承,获取父类的结构之外,还可以定义