• [python] 类组合与聚合关系


    类之间有多种关系,请大家看维基百科,类别图 下面主要介绍聚合(Aggregation)以及组合(Composition)。

    聚合(aggregation):指的是整体与部分的关系。通常在定义一个整体类后,再去分析这个整体类的组成结构。从而找出一些组成类,该整体类和组成类之间就形成了聚合关系。需求描述中“包含”、“组成”、“分为…部分”等词常意味着聚合关系。

    组合(composition):也表示类之间整体和部分的关系,但是组合关系中部分和整体具有统一的生存期。一旦整体对象不存在,部分对象也将不存在。部分对象与整体对象之间具有共生死的关系。

    类组合,Computer实例对象不存在了,内部组合的Cpu实例也不存在。

    聚合Computer实例对象不存在了,从初始化方法传入的Cpu实例不受Computer实例对象存在不存在的影响。

    请看下面的代码。

    #! /usr/bin/env python
    # coding:utf-8
    
    '''
    类对象组合关系
    '''
    
    class Cpu(object):
    
        def __init__(self):
            self.type = '286'
    
    
    class Computer(object):
    
        def __init__(self):
            self.cpu = Cpu()  # 包含CPu类的实例对象
    
        def __del__(self):
            print ("Cpu by by!")
    
    old_computer = Computer()
    del old_computer
    #! /usr/bin/env python
    # coding:utf-8
    
    '''
    类对象聚合关系
    '''
    
    
    class Cpu(object):
    
        def __init__(self):
            self.type = '286'
    
    
    class Computer(object):
    
        def __init__(self, cpu):
            self.cpu = cpu  # 有一个CPu类的实例对象
    
        def __del__(self):
            print ("没有权力和Cpu by by!")
    
    old_cpu = Cpu()
    old_computer = Computer(old_cpu)
    del old_computer

    作者:黄哥
    链接:https://zhuanlan.zhihu.com/p/21945722
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 相关阅读:
    从拟物化到扁平,再到Material Design
    如何写一个解释器(1):编译原理
    理解JavaScript中的原型继承(2)
    Redis简介
    谈谈积累
    Hadoop(三):MapReduce程序(python)
    Hadoop(二):MapReduce程序(Java)
    统计学习方法十:隐马尔科夫模型二
    统计学习方法十:隐马尔科夫模型
    统计学习方法九:EM算法
  • 原文地址:https://www.cnblogs.com/xiaofeiIDO/p/6154925.html
Copyright © 2020-2023  润新知