• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            woaidongmao

            文章均收錄自他人博客,但不喜標(biāo)題前加-[轉(zhuǎn)貼],因其丑陋,見諒!~
            隨筆 - 1469, 文章 - 0, 評論 - 661, 引用 - 0
            數(shù)據(jù)加載中……

            用Visio畫UML圖 類結(jié)構(gòu)圖(進(jìn)階篇)

            上一篇文章中說明了類結(jié)構(gòu)圖的基本畫法。要真正要完成實用的類圖,還要有許多工作要做。

            類之間的關(guān)系

            繼承關(guān)系

            繼承關(guān)系是最容易理解的關(guān)系。畫成圖的話就像下面這樣。面向?qū)ο蟮恼f法就是is-a關(guān)系。也就是說Class2 is a Class1。在C++中我們說Class2是Class1的派生類,或者說Class1是Class2的基類。clip_image002

            聚集和組成

            從容易理解的關(guān)系說起.經(jīng)常有一個類是另一格類的數(shù)據(jù)成員的情況。在UML中表現(xiàn)為,聚集(aggregation)和組成(composition)。

            clip_image004clip_image005

            從圖上來看,這兩種關(guān)系都表現(xiàn)為一端是菱形的直線。其中有菱形的一端是整體,另外一端是部分。區(qū)別就是菱形是空心還是實心的。從C++曾序來看的話,如果圖畫成實心菱形的話,Class1就要負(fù)責(zé)Class2的創(chuàng)建和銷毀。更準(zhǔn)確的說,就是如果Class1不存在了,Class2也一定不存在。例如象下面的程序。

            class Class2

            {

            };

            class Class1

            {

                Class2 m_objClass2;

            }

            當(dāng)然也有下面的情況

            class Class2

            {

            };

            class Class1

            {

                Class1();

                ~Class1();

                Class2* m_pClass2Obj;

            };

            光看類的聲明就不行了。這是就需要看類的實現(xiàn)部分了。

            Class1::Class1()

            {

                m_pClass2Obj = new Class1; 

            }

            Class1::~Class1()

            {

                delete m_pClass2Obj;

                m_pClass2 = NULL;

            }

            組成(Composition)關(guān)系,如果在Class1的對象銷毀的時候,比如在析構(gòu)函數(shù)中沒有將數(shù)據(jù)成員銷毀的代碼,那么這種關(guān)系就是聚集(aggregation)關(guān)系。當(dāng)然,銷毀數(shù)據(jù)成員的代碼,會有很多種。

            依賴關(guān)系

            依賴關(guān)系就是在以個類中使用了另一個類。例如下面的代碼

            Class1::DoSomething()

            {

                Class3 obj;

                obj.DoClass3Work();

            }

            就是這樣的情況。畫成圖的話就像下面這樣。

            clip_image006

            posted on 2008-08-22 16:26 肥仔 閱讀(11381) 評論(0)  編輯 收藏 引用 所屬分類: UML

            亚洲∧v久久久无码精品| 久久AⅤ人妻少妇嫩草影院| 久久亚洲中文字幕精品一区| 亚洲人成无码久久电影网站| 亚洲精品国产字幕久久不卡| 久久精品蜜芽亚洲国产AV| 久久AⅤ人妻少妇嫩草影院| 亚洲AV无码久久精品色欲| 91精品观看91久久久久久| 久久乐国产综合亚洲精品| 97超级碰碰碰久久久久| 亚洲Av无码国产情品久久| 精品久久久久久久无码| 亚洲国产精品无码久久青草| 久久不射电影网| 亚洲香蕉网久久综合影视| 久久人妻少妇嫩草AV无码蜜桃| 久久久免费精品re6| 久久精品国产亚洲av麻豆蜜芽| 国产福利电影一区二区三区久久老子无码午夜伦不 | 欧美成a人片免费看久久| 久久国产精品成人片免费| 精品国产青草久久久久福利| 国产一区二区精品久久岳| 久久91精品国产91久久户| 欧洲成人午夜精品无码区久久 | 久久婷婷国产麻豆91天堂| 日韩精品无码久久久久久| 久久夜色精品国产亚洲| 亚洲欧美精品一区久久中文字幕| 88久久精品无码一区二区毛片| 国产99精品久久| 久久精品9988| 久久精品国产一区二区三区日韩| 久久国产免费观看精品3| 久久精品aⅴ无码中文字字幕重口 久久精品a亚洲国产v高清不卡 | 久久亚洲精品无码aⅴ大香 | 欧美无乱码久久久免费午夜一区二区三区中文字幕 | 久久免费国产精品一区二区| 日韩精品无码久久久久久| 蜜臀av性久久久久蜜臀aⅴ|