<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 262,  comments - 221,  trackbacks - 0

    注:本文為IBM Developer網站UML2.X系列教程的學習筆記,原文參見:http://www.ibm.com/developerworks/cn/rational/r-uml/

    一、UML中基本的圖范疇:

    在 UML 2 中有二種基本的圖范疇:結構圖和行為圖。每個 UML 圖都屬于這二個圖范疇。結構圖的目的是顯示建模系統的靜態結構。它們包括類,組件和(或)對象圖。另一方面,行為圖顯示系統中的對象的動態行為,包括如對象的方法,協作和活動之類的內容。行為圖的實例是活動圖,用例圖和序列圖。

     

    二、UML中的類圖:

    1.類圖的表示:

    類的 UML 表示是一個長方形,垂直地分為三個區,如圖 1 所示。頂部區域顯示類的名字。中間的區域列出類的屬性。底部的區域列出類的操作。在一個類圖上畫一個類元素時,你必須要有頂端的區域,下面的二個區域是可選擇的(當圖描述僅僅用于顯示分類器間關系的高層細節時,下面的兩個區域是不必要的)。




    描述:

    頂部區域顯示類的名字。中間的區域列出類的屬性。底部的區域列出類的操作。當在一個類圖上畫一個類元素時,你必須要有頂端的區域,下面的二個區域是可選擇的(當圖描述僅僅用于顯示分類器間關系的高層細節時,下面的兩個區域是不必要的)。

    ·類名:如果是抽象類,則采用斜體

    ·類屬性列表:name : attribute type 如 flightNumber : Integer,這是最常見的表達形式

                     name : attribute type = default value  balance : Dollars = 0,這是帶有默認值的表達形式

    ·類方法列表:name(parameter list) : type of value returned

    注意:

    在業務類圖中,屬性類型通常與單位相符,這對于圖的可能讀者是有意義的(例如,分鐘,美元,等等)。然而,用于生成代碼的類圖,要求類的屬性類型必須限制在由程序語言提供的類型之中,或包含于在系統中實現的、模型的類型之中。

    2.繼承的表示:

    為了在一個類圖上建模繼承,從子類(要繼承行為的類)拉出一條閉合的,單鍵頭(或三角形)的實線指向超類。




    類名BankAccount和withdrawal操作使用斜體。這表示,BankAccount 類是一個抽象類,而withdrawal方法是抽象的操作。換句話說,BankAccount 類使用withdrawal規定抽象操作,并且CheckingAccount 和 SavingsAccount 兩個子類都分別地執行它們各自版本的操作。

    3.接口的表示:

    一個類和一個接口不同:一個類可以有它形態的真實實例,然而一個接口必須至少有一個類來實現它。在 UML 2 中,一個接口被認為是類建模元素的特殊化。因此,接口就象類那樣繪制,但是長方形的頂部區域也有文本“interface”。



    注意:繼承用帶箭頭或三角形的實線表示,實現用帶箭頭或三角形的虛線表示

    4.可見性的表示:

    在面向對象的設計中,存在屬性及操作可見性的記號。UML 識別四種類型的可見性:public,protected,private及package。

    UML 規范并不要求屬性及操作可見性必須顯示在類圖上,但是它要求為每個屬性及操作定義可見性。為了在類圖上顯示可見性,放置可見性標志于屬性或操作的名字之前。雖然 UML 指定四種可見性類型,但是實際的編程語言可能增加額外的可見性,或不支持 UML 定義的可見性。表4顯示了 UML 支持的可見性類型的不同標志。

                UML 支持的可見性類型的標志

    標志

    可見性類型

    + Public
    # proteted
    - private
    ~ package




    5.關聯的表示:

    ·雙向(標準)的關聯

    關聯是兩個類間的聯接。關聯總是被假定是雙向的;這意味著,兩個類彼此知道它們間的聯系,除非你限定一些其它類型的關聯。




    一個雙向關聯用兩個類間的實線表示。在線的任一端,你放置一個角色名和多重值。圖 6 顯示Flight與一個特定的Plane相關聯,而且Flight類知道這個關聯。因為角色名以Plane類表示,所以Plane承擔關聯中的“assignedPlane”角色。緊接于Plane類后面的多重值描述0...1表示,當一個Flight實體存在時,可以有一個或沒有Plane與之關聯(也就是,Plane可能還沒有被分配)。圖 6 也顯示Plane知道它與Flight類的關聯。在這個關聯中,Flight承擔“assignedFlights”角色;圖 6 的圖告訴我們,Plane實體可以不與flight關聯(例如,它是一架全新的飛機)或與沒有上限的flight(例如,一架已經服役5年的飛機)關聯。

    注意:關聯的一方關聯對象位于直線的上端,關聯數目位于同側的直線下端,另一方則相反 


         多重值和它們的表示

    可能的多重值描述

    表示 含義
    0..1 0個或1個
    1 只能1個
    0..* 0個或多個
    * 0個或多個
    1..* 1個或多個
    3 只能3個
    0..5 0到5個
    5..15 5到15個

    ·單向關聯

    在一個單向關聯中,兩個類是相關的,但是只有一個類知道這種聯系的存在。




    一個單向的關聯,表示為一條帶有指向已知類的開放箭頭(不關閉的箭頭或三角形,用于標志繼承)的實線。如同標準關聯,單向關聯包括一個角色名和一個多重值描述,但是與標準的雙向關聯不同的時,單向關聯只包含已知類的角色名和多重值描述。

    簡單的說就是OverdrawAccountReport中包含了BankAccount屬性,而BankAccount中不需要包含OverdrawnAccountsReport對象


    6.聚合的表示:

    聚合是一種特別類型的關聯,用于描述“總體到局部”的關系。在基本的聚合關系中, 部分類 的生命周期獨立于 整體類 的生命周期。

    舉例來說,我們可以想象,車 是一個整體實體,而 車輪 輪胎是整輛車的一部分。輪胎可以在安置到車時的前幾個星期被制造,并放置于倉庫中。在這個實例中,Wheel類實例清楚地獨立于Car類實例而存在。然而,有些情況下, 部分 類的生命周期并 不 獨立于 整體 類的生命周期 -- 這稱為合成聚合。舉例來說,考慮公司與部門的關系。 公司和部門 都建模成類,在公司存在之前,部門不能存在。這里Department類的實例依賴于Company類的實例而存在。

    讓我們更進一步探討基本聚合和組合聚合。

    注意:聚合與普通的關聯的區別在于:普通的關聯可能只是一個簡單的“包含、引用”關系,關聯和被關聯類之間在邏輯概念上不一定有緊密的聯系,而聚合則不同,它表示的是一種內在關系緊密,相互依存,相互包含的概念,其中的一部分是構成另外一部分的不可或缺的成分。

    ·基本聚合

    有聚合關系的關聯指出,某個類是另外某個類的一部分。在一個聚合關系中,子類實例可以比父類存在更長的時間。為了表現一個聚合關系,你畫一條從父類到部分類的實線,并在父類的關聯末端畫一個未填充棱形。



    圖中清楚的表明了類Car對象包含了另一類Wheel的4個實例,這兩者在概念上是密不可分的,其中的一個類是另一個類的構成成分。菱形表示“包含”,箭頭表示被包含的對象,數字4表示包含的數目。

    ·組合聚合

    組合聚合關系是聚合關系的另一種形式,但是子類實例的生命周期依賴于父類實例的生命周期。



    注意:組合關系如聚合關系一樣繪制,不過這次菱形是被填充的。

    7.反射關聯的表示:

    類也可以使用反射關聯與它本身相關聯。起先,這可能沒有意義,但是記住,類是抽象的。當一個類關聯到它本身時,這并不意味著類的實例與它本身相關,而是類的一個實例與類的另一個實例相關。



    圖描繪的關系說明一個Employee實例可能是另外一個Employee實例的經理。然而,因為“manages”的關系角色有 0..*的多重性描述;一個雇員可能不受任何其他雇員管理。


    三、UML中的對象圖:

    實例的記號和類一樣,但是取代頂端區域中僅有的類名,它的名字是經過拼接的:

    Instance Name : Class Name 如 Donald : Person


    因為顯示實例的目的是顯示值得注意的或相關的信息,沒必要在你的模型中包含整個實體屬性及操作。相反地,僅僅顯示感興趣的屬性及其值是完全恰當的。 



    UML 2 也允許在實體層的關系/關聯建模。繪制關聯與一般的類關系的規則一樣,除了在建模關聯時有一個附加的要求。附加的限制是,關聯關系必須與類圖的關系相一致,而且關聯的角色名字也必須與類圖相一致。


    四、UML中的角色圖:

    建模類的實例有時比期望的更為詳細。有時,你可能僅僅想要在一個較多的一般層次做類關系的模型。在這種情況下,你應該使用 角色 記號。角色記號類似于實例記號。為了建立類的角色模型,你畫一個方格,并在內部放置類的角色名及類名,作為實體記號,但是在這情況你不能加下劃線。





    注意:角色圖和對象圖的一個明顯區別就是:對象圖每個對象名稱下面都加了下劃線,而角色圖沒有


    -------------------------------------------------------------
    生活就像打牌,不是要抓一手好牌,而是要盡力打好一手爛牌。
    posted on 2008-03-24 17:05 Paul Lin 閱讀(7149) 評論(0)  編輯  收藏 所屬分類: UML
    <2008年3月>
    2425262728291
    2345678
    9101112131415
    16171819202122
    23242526272829
    303112345

    常用鏈接

    留言簿(21)

    隨筆分類

    隨筆檔案

    BlogJava熱點博客

    好友博客

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 精品无码免费专区毛片| 久久免费高清视频| 日韩免费高清视频网站| 中文字幕亚洲情99在线| 成年女人午夜毛片免费视频| 亚洲人成www在线播放| 99视频在线精品免费观看6| 中文字幕精品三区无码亚洲| 24小时免费直播在线观看| 亚洲女子高潮不断爆白浆| 日韩中文字幕在线免费观看| 国产亚洲视频在线观看| 亚洲Av无码国产情品久久| a级毛片视频免费观看| 日韩亚洲AV无码一区二区不卡| 18未年禁止免费观看| 99亚偷拍自图区亚洲| 四虎影视在线永久免费观看| 一区二区免费国产在线观看| 亚洲色WWW成人永久网址| 日韩精品极品视频在线观看免费| 亚洲一级高清在线中文字幕| 国产成人免费福利网站| 国产精品美女久久久免费 | 人人爽人人爽人人片A免费 | 亚洲AV综合色区无码一区| 永久黄色免费网站| 亚洲免费网站观看视频| 亚洲毛片av日韩av无码| 无码A级毛片免费视频内谢| 国产精品亚洲综合久久| 自拍偷自拍亚洲精品情侣| 99精品视频在线观看免费播放| 国产亚洲精aa在线看| 亚洲综合无码AV一区二区| 亚洲天堂免费在线| 一级成人生活片免费看| 亚洲一级视频在线观看| 亚洲精品成人区在线观看| 亚洲免费中文字幕| 一级成人毛片免费观看|