面向对象(一) 类与类之间的关系之依赖和关联

面向对象的三种关系:

1.依赖关系

A类(A类实例化对象)依赖B类(B类实例化对象)的意思就是B类实例化的对象名作为参数传递给A类(对象)的方法,那么在A类对象就可以用B类实例化对象的方法

1)  植物大战僵尸简易版

# 植物大战僵尸简易版
class ZhiWu:#创建植物类
    def __init__(self,name,hp,attack):#初始化属性
        self.name=name
        self.hp=hp
        self.attack=attack
    def da(self,js):
        js.hp-=self.attack

class JiangShi:#创建僵尸类
    def __init__(self,name,hp,attack):#初始化属性
        self.name=name
        self.hp=hp
        self.attack=attack
    def eat(self,zw):
        zw.hp -= self.attack
# 创建僵尸和植物对象
zw=ZhiWu("紫罗兰",20,10)
js=JiangShi("躺尸",30,5)
# 植物攻击一次
zw.da(js)
print(js.hp)#20
# 僵尸攻击一次
js.eat(zw)
print(zw.hp)#15

 2) 大象关冰箱

class Elephant:

    def __init__(self, name):
        self.name = name

    def open(self, ref):
        print('冰箱开门吧')
        ref.open_door()

    def close(self, ref):
        print('冰箱关门吧')
        ref.close_door()

    def get_in(self):
        print('进冰箱装自己')

class Refrigerator:

    def open_door(self):
        print('冰箱默默地打开了自己的门')

    def close_door(self):
        print('冰箱默默地关上了自己的门')



e = Elephant('小象')
ref1 = Refrigerator()

#大象进冰箱
e.open(ref1)
e.get_in()
e.close(ref1)

2.关联关系,又叫组合,聚合关系

A类和B类关联意思是B类对象作为参数传递给A中并且封装成了A对象的一个属性

1) 男朋友女朋友

class Boy():
    def __init__(self,name,girlfirend = None):
        self.name = name
        self.girlfriend = girlfirend
    def have_dinner(self):
        if self.girlfriend:
            print("%s和女朋友%s一起吃饭"%(self.name,self.girlfriend.name))
        else:
            print("自己吃饭")

class Girl():
    def __init__(self,name):
        self.name = name
Shawn = Boy("孙")
Chen = Girl("陈")
Shawn.have_dinner()
运行结果:自己吃饭
Shawn.girlfriend = Chen
Shawn.have_dinner()
运行结果:孙和女朋友陈一起吃饭

猜你喜欢

转载自www.cnblogs.com/duoduoyichen/p/10376668.html