Python入门(十五)对象与对象之间的依赖、关联、组合、聚合关系

对象与对象之间的关系

1.依赖关系! 我可以随时用你,但你不属于我。举例:大象把自己关进冰箱。

冰箱的功能非常简单, 只要会开门关门就行了. 但是大象就没那么简单了,想想,
大象开门和关门的时候是不是要先找个冰箱啊, 然后呢? 
打开冰箱门,是不是打开刚才找到的那个冰箱门, 然后装自己,最后呢? 关冰箱门, 
注意, 关的是刚才那个冰箱吧. 也就是说, 开门和关门用的是一个冰箱,并且大象有更换冰箱的权利,
想进哪个冰箱就进哪个冰箱. 这时, 大象类和冰箱类的关系并没有那么的紧密,
因为大象可以指定任何一个冰箱. 接下来,演示一下. 

实现代码

// An highlighted block
class Elphant:
    def __init__(self, name):    注意!这里没有接收对象。所以不属于。
        self.name = name
    def open(self, ref):
        print("大象要开门了. 默念三声. 开!")
        # 由外界传递进来一个冰箱, 让冰箱开门, 这时大象不用背着冰箱到处跑.
        # 类与类之间的关系也就不那么的紧密了, 换句话说, 只要是有open_door()方法的对象.  都可以接收运行
        ref.open_door()
  
    def close(self, ref):
        print("大象要关门了. 默念三声. 关!")
        ref.close_door()            
        pass
    def take(self):
        print("钻进去")
 
class Refrigerator:
    def open_door(self):
        print("冰箱门被打开了")
    def close_door(self):
        print("冰箱门被关上了")
# 造冰箱
r = Refrigerator()
# 造大象
el = Elphant("神奇的大象")
el.open(r) # 注意,此时是把一个冰箱作为参数传递进去了,也就是说,大象可以指定任何一个冰箱.
el.take()
el.close(r)
  说白了 就时把一个类当对象传过去(类的方法中的参数接受),传过去后,在内部调用这个类的方法,岂不美哉
    这种关系,就是兼职关系,用你你就来,不用就给我gun。 

2.关联关系.组合关系.聚合关系

其实这三个在代码上写法是一样的. 但是, 从含义上是不一样的.
2.1 关联关系: 两种事物必须是互相关联的,但是在某些特殊情况下是可以更改和更换的
举例子 你和女朋友,/学校和老师。需要她,她也是你的。

// An highlighted block
class Boy:
    def __init__(self, name, girlFriend=None):#这里将对象传到了构造函数里。
        self.name = name
        self.girlFriend = girlFriend
 
    def have_a_dinner(self):
        if self.girlFriend:
            print("%s 和 %s⼀起去吃晚餐" % (self.name, self.girlFriend.name))
        else:
            print("单身狗. 吃什么饭")
 
    class Girl:
        def __init__(self, name):
            self.name = name
     
    b = Boy("alex")
    b.have_a_dinner()
     
    # 突然牛B. 找到女朋友了
    g = Girl("如花")
    b.girlFriend = g # 有女朋友了. 6666
    b.have_a_dinner()
     
    gg = Girl("李小花")
    bb = Boy("wusir", gg) # 娃娃亲. 出生就有女朋友. 服不服
     
    bb.have_a_dinner() # 多么幸福的一家
     
    # 突然.bb失恋了. 娃娃亲不跟他好了
    bb.girlFriend = None
     
    bb.have_a_dinner() # 又单身了         没有这个对象 则不能 进行吃饭方法。

2.2 聚合关系: 属于关联关系中的一种特例,侧重点是xxx和xxx聚合成xxx. 各自有各自的生命周期, 比如电脑,电脑里有CPU,
硬盘, 内存等等,电脑挂了, CPU还是好的,还是完整的个体
比如一个学校 可以有一堆老师。 老师只能属于一个学校。但双方相互离开都还是个体。
 2.3 组合关系: 属于关联关系中的一种特例, 写法上差不多,组合关系比聚合还要紧密,比如人的大脑, 心脏, 各个器官.
这些器官组合成一个人. 这时人如果挂了,其他的东西也跟着挂了.

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

闯孙闯孙

觉得有用就赞一个呗

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值