zoukankan      html  css  js  c++  java
  • Association, Composition, Aggregation(转)

    Association, Aggregation and Composition

    Source: comp.object
    Date: 10-Jun-98

    Related Sites


    ------------------------------

    o-< Problem: UML has several relations (association, aggregation and composition) that seem to all mean the same thing : "has a".
    So, what is the difference between them?


    ---------------

    o-< Robert C. Martin explained:

    Association represents the ability of one instance to send a message to another instance. This is typically implemented with a pointer or reference instance variable, although it might also be implemented as a method argument, or the creation of a local variable.

    [Example:]

    |A|----------->|B|
    class A
    {
    private:
    B* itsB;
    };
    Aggregation [...] is the typical whole/part relationship. This is exactly the same as an association with the exception that instances cannot have cyclic aggregation relationships (i.e. a part cannot contain its whole).

    [Example:]

    |Node|<>-------->|Node|
    class Node
    {
    private:
    vector<Node*> itsNodes;
    };
    The fact that this is aggregation means that the instances of Node cannot form a cycle. Thus, this is a Tree of Nodes not a graph of Nodes.

    Composition [...] is exactly like Aggregation except that the lifetime of the 'part' is controlled by the 'whole'. This control may be direct or transitive. That is, the 'whole' may take direct responsibility for creating or destroying the 'part', or it may accept an already created part, and later pass it on to some other whole that assumes responsibility for it.

    [Example:]

    |Car|<#>-------->|Carburetor|
    class Car
    {
    public:
    virtual ~Car() {delete itsCarb;}
    private:
    Carburetor* itsCarb
    };
  • 相关阅读:
    代表行为已成为习惯的信号有哪些?
    Java使用JDBC连接Oracle数据库
    JS正则表达式
    java实现内网通信
    纯前端代码实现美团外卖页面
    HTML绘制表格
    教你如何使用谷歌浏览器,亲测可用!
    Java 多线程实现多窗口同时售票简单功能
    实现获取命令行的返回结果
    HTML模仿实现京东登录页面
  • 原文地址:https://www.cnblogs.com/cloudseawang/p/1268395.html
Copyright © 2011-2022 走看看