zoukankan      html  css  js  c++  java
  • 11.聚合(Aggregation)

          聚合关系是关联关系的一种特例,它体现的是整体与部分的关系,即has-a的关系,此时整体与部分之间是可分离的,它们可以具有各自的生命周期。比如计算机与CPU、公司与员工的关系等。表现在代码层面,和关联关系是一致的,只能从语义级别来区分。

          在聚合关系中,成员类是整体类的一部分,即成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在。在UML中,聚合关系用带空心菱形的直线表示。

          UML示例图如下所示:

     

    class CentralProcessingUnit
    {
        deinit
        {
            print("CentralProcessingUnit deinit");
        }
    }
    
    class Computer
    {
        var centralProcessingUnit: CentralProcessingUnit;
        
        init(cpu: CentralProcessingUnit?)
        {
            centralProcessingUnit = cpu!;
        }
        
        deinit
        {
            print("Computer deinit");
        }
    }
    
    var centralProcessingUnit: CentralProcessingUnit? = CentralProcessingUnit();
    var computer: Computer? = Computer(cpu: centralProcessingUnit);
    
    // computer生命周期结束
    computer = nil;
    
    //centralProcessingUnit还可以进行其他操作.....
    
    //centralProcessingUnit生命周期结束
    centralProcessingUnit = nil;

          从调用代码我们可以看到,我们创建了一个独立的centralProcessingUnit对象,然后将这个对象传入了Computer的init函数。当computer对象生命周期结束的时候,centralProcessingUnit对象如果还有其他指向它的引用,是可以继续存在的。也就是说,它们的生命周期是相对独立的。

  • 相关阅读:
    几个常用排序的代码实现堆排序|快排|归并排序 Marathon
    0647回文子串 Marathon
    任意输入一个日期输出是当年的第几天星期几
    从输入URL到浏览器显示页面发生了什么
    常用链接整理
    computed 与 method
    将博客搬至CSDN
    leetcode_Two Sum
    VC++6.0与Office2010冲突解决方案
    C&C++_malloc函数
  • 原文地址:https://www.cnblogs.com/LeeGof/p/5707543.html
Copyright © 2011-2022 走看看