UML中類之間的四種關係
上一篇總結了類圖的組成,接下來總結UML中的重要關係。
類與類之間的關係通常有4種:依賴關係dependency、泛化關係generalization、關聯關係association、實現關係realizaiton。
依賴關係:是兩個或多個模型元素之間語義上的連線關係。只將模型元素本身連線起來而不需要用一組例項來表達它的意思。提供者的某些變化會要求或只是依賴關係中客戶的關係,即依賴關係將行為和實現與影響其他類的類聯絡起來。關聯和泛化也是依賴關係,由於他們有特別的含義,所以它們有自己的名字和詳細的說明。依賴關係還經常被用來表示具體實現間的關係,比如程式碼層實現關係。依賴關係在rational rose中有很多實用的關係,以下展示:
依賴關係 功能關鍵字
繫結 為模板引數指定值,生成一個新的模型元素。bind
實現 說明和對這個說明的具體實現之間的對映關係。 realize
使用 宣告使用一個模型元素需要用到已存在的另一個模型元素,這樣才能正確實現使用者的功能。use
呼叫 宣告一個類呼叫其他類的操作方法。call
引數 一個操作和它的引數之間的關係.parameter
傳送 訊號傳送者和訊號接受者之間的關係.send
例項化 一個類的方法建立了另一個類的例項的宣告.instantiate
跟蹤 宣告不同模型中的元素之間存在一些連結,但不如對映精確.trace
精化 宣告具有兩個不同語義層次上的元素之間的對映。refine
派生 宣告一個例項可以從另一個例項派生。derive
訪問 允許一個包訪問另一個包的內容。access
輸入 允許一個包訪問另一個包的內容並可以為被訪問包的組成部分增加別名。import
友元 允許一個元素訪問另一個元素,不管被訪問的元素是否具有可見性。friend
泛化關係:描述類的一般和具體之間的關係。一般描述的類被稱作父類,具體描述的類被稱作子類,還可以再其他元素中使用。泛化關係是一種“is a kind of”的關係,使父類與更加具體的子類連線在一起,不用重複說明。
泛化關係的作用:
1.用來定義可替代性原則。當一個變數被宣告承載某個給定類的值時,可使用類的例項作為值。因此無論何時 父類被宣告,子類的一個例項就可以被使用了。
2.泛化使得多型操作成為可能,一個父類可以泛化出多個不同的子類,每個子類都可以實現定義在類中的同一 個操作的不同狀態,在不需要改變現有多型呼叫的情況下就可以加入新的類。
3.共享父類所定義元素的前提下允許自身增加描述。
關聯關係:是一種結構關係,指出了一個事物的物件與另一個事物的物件之間的語義上的連線。描述了系統中物件或例項之間的離散連線,將一個含有兩個或多個有序表的類在允許複製的情況下連線起來。一個類的關聯的任何一個連線點都成為關聯端,與類有關的許多資訊都附在它的端點上。
最普通的關聯是一對類之間的二元關聯。如果一個關聯既是一個關聯又是一個類,那麼它就是關聯類。關聯還有兩種重要的形式:聚集關係和組成關係。
聚集關係描述的是部分與整體關係的關聯,將一組元素通過關聯組成一個更大、更復雜的單元。
組成關係則是一種更強形式的關聯,在整體中擁有管理部分的職責,成員物件的生命週期取決於聚合的生命週期。
區分這兩者的方法很簡單:都是一個整體,整體裡面都有部分;如果這個整體分散成部分以後,各個部分都還有自己存在的意義和作用,那麼這個關聯關係就是聚集關係;如果各個部分失去了存在的意義和作用,則是組成關係。
實現關係:將一種模型元素和另一種模型元素連線起來,從而說明其和實現之間的關係。在實現關係中,介面只是行為的說明而不應是結構或者實現,而類中則要包含其具體的實現內容。可以通過一個或多個類實現一個介面,但是每個類必須分別實現介面中的操作。將一般描述與具體描述聯絡起來,在不同語義層內連線起來,並且通常建立在不同的模型內。
這四種關係是在UML中非常重要的四種關係,在實踐中運用這四種關係可以清晰的理清系統的開發思路,對軟體開發非常有幫助。