【1.104】关联,聚合,组合关系

关联,聚合,组合关系

其实这三个在代码上写法是⼀样的. 但是, 从含义上是不⼀样的.

1. 关联关系. 两种事物必须是互相关联的.

但是在某些特殊情况下是可以更改和更换的.

 

2. 聚合关系. 属于关联关系中的⼀种特例. 侧重点是xxx和xxx聚合成xxx.

各⾃有各⾃的生命周期.

比如电脑. 电脑⾥有CPU, 硬盘, 内存等等.

电脑挂了. CPU还是好的. 还是完整的个体

 

3. 组合关系. 属于关联关系中的⼀种特例.

写法上差不多. 组合关系比聚合还要紧密.

比如⼈的⼤脑, ⼼脏, 各个器官. 这些器官组合成⼀个⼈.

这时. ⼈如果挂了. 其他的东⻄也跟着挂了

 

先看关联关系:

这个最简单. 也是最常⽤的⼀种关系.

比如. ⼤家都有男女朋友. 男⼈关联着女朋友. 女⼈关联着男朋友.

这种关系可以是互相的, 也可以是单⽅⾯的.

# 这个最简单. 也是最常⽤的⼀种关系.
# 比如. ⼤家都有男女朋友. 男⼈关联着女朋友. 女⼈关联着男朋友.
# 这种关系可以是互相的, 也可以是单⽅⾯的.
class Boy:
    def __init__(self,name,girlFriend=None):
        self.name = name
        self.girlFriend = girlFriend

    def have_a_diner(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('日天')
g = Girl('如花')
b.have_a_diner() # 此时是单身狗   单身狗,吃什么饭

# 突然有一天,日天牛逼了,找到女朋友 名字叫 如花
b.girlFriend = g
b.have_a_diner()  #  日天 和 如花 一起晚饭


# 结果嫌他有点娘,不硬,分了
b.girlFriend = None
b.have_a_diner()    #单身狗,吃什么饭

 注意. 此时Boy和Girl两个类之间就是关联关系. 两个类的对象紧密练习着.

其中⼀个没有了. 另⼀个就孤单的不得了. 关联关系, 其实就是 我需要你. 你也属于我. 这就是关联关系.

像这样的关系有很多很多.

比如. 学校和老师之间的关系.

 

posted @ 2016-05-10 18:17  科学小怪癖  阅读(175)  评论(0)    收藏  举报