您的位置:首页 > 编程语言 > C语言/C++

(原創) association,aggregation,composition有什麼差別? (OO) (UML) (C/C++)

2007-02-20 16:30 513 查看
class之間有三種關係,inheritance,implementation和association。inheritance和implementation在C++、C#、Java都有直接支援,所以不難懂,但association,aggregation和composition在語言並沒有知接支援,到底三者有什麼差別呢?

首先看association,下圖是個典型的assoication class diagram。

class A class Node class Car public:
3 virtual ~Car() private:
5 Carburetor* itsCarb
6};
由以上程式可知,composition須由destructor去處理,而aggregation則不必。

在C#、Java這類有garbage collection的語言,composition幾乎不會用到,但在C++,只要用到pointer,就得自己去delete,所以在composition對於C++就很重要。

Reference
http://www.visualcase.com/kbase/associations.htm
http://ootips.org/uml-hasa.html
http://www.tomjewett.com/dbdesign/dbdesign.php?page=aggregate.php
UML for Java Programmer中文版 p.3-11 ~ p.3-13
UML Distilled 2nd中文版
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: