類圖和對象圖

1.類的定義

類的定義:類是具有相似結構、行爲和關係的一組對象的描述符。
在這裏插入圖片描述

2.類之間的關係

2.1 關聯
        關聯(association)是模型元素簡的一種語義聯繫,它是對具有共同的結構特徵、行爲特性、關係和語義的鏈的描述。
        在上面的定義中,需要注意的是鏈這個概念,鏈是一個實例,就像對象是累的實例一樣,而鏈表示的是對象與對象之間的關係。
在類圖中 ,關聯用一條把類連接在一起的實現表示,如圖:
在這裏插入圖片描述        一個關聯可以有兩個或多個關聯端,每個關聯端連接到一個類。關聯也可以有方向,可以是單向關聯或雙向關聯。如下圖表示的是雙向關聯,表示的是從類A到類B的單向關聯。
在這裏插入圖片描述
2.1.1 關聯名
        可以給關聯加上關聯名,來描述關聯的作用。如圖使用關聯名的一個例子,其中Company類和Person類之間的關聯如果不使用關聯名,則可以有多種解釋,如Person類可以表示是公司的客戶、僱員或所有者等。但如果在關聯上加上Employs這個關聯名,則表示Company類和Person類之間是僱傭(Employs)關係,顯然這樣語義上更加明確。一般說來,關聯名通常是動詞或動詞短語。
在這裏插入圖片描述
2.1.2 關聯的角色
        關聯兩端的淚可以某種角色參與關聯。如下圖,Company類以employer的角色、Person類以employee的角色參與關聯,employer和employee稱爲角色類。如果在關聯上沒有標出角色名,則隱含地用類的名稱作爲角色名。
在這裏插入圖片描述2.2 聚集和組合
        聚集是一種特殊形式的關聯。聚集表示類之間整體與部分的關係。在對系統進行分析和設計時,需求描述中的“包含”、“組成”、“分爲……部分”等詞常常意味着存在聚集關係。
        組合表示的也是類之間的整體與部分的關係,但組合關係中的整體與部分具有同樣的生存期。也就是說,組合是一種特殊形式的聚集。
如圖分別是聚集關係和組合關係的例子
在這裏插入圖片描述
在這裏插入圖片描述
        Circle類和Style類之間是聚集關係。一個圓可以有顏色、是否填充這些樣式方面的屬性,可以用一個style對象表示這些屬性,但同一個style對象也可以表示別的對象如三角形的一些樣式方面的屬性,也就是說,style對象可以用於不同的地方。如果circle這個對象不存了,不一定意味着style這個對象也不存在了。
下面列出聚集和組合之間的一些區別:

  • 聚集關係也稱爲”has -a"關係,組合關係也稱爲“contains-a"關係。
  • 聚集關係表示事物的整體/部分關係的較弱的情況,組合關係表示事物的整體/部分關係的較強的情況。
  • 在聚集關係中,代表部分事物的對象可以屬於多個聚集對象,可以爲多個聚集對象所共享,而且可以隨時改變它所從屬的的聚集對象。代表部分事物的對象與代表聚集事物對象的生存期無關,一旦刪除了它的一個聚集對象,不一定也就隨即刪除代表部分事物的對象。在組合關係中,代表整體事物的對象負責創建和刪除代表部分事物的對象,代表部分事物的對象只屬於一個組合對象。一旦刪除了組合對象,也就隨即刪除了相應的代表部分事物的對象。
  • 2.3 泛化關係
    在這裏插入圖片描述
            泛化(generalization)定義了一般元素和特元素之間的分類關係,如果從面向對象程序設計語言的角度來說,類與類之間的泛化關係就是平常所說的類與類之間的繼承關係。
            泛化關係也稱爲”a -kind -of"關係。
  • 2.4 依賴關係
    在這裏插入圖片描述
            假設有兩個元素X、Y,如果修改元素X的定義可能會導致對另一個元素Y的定義的修改,則稱元素Y依賴於元素X。
            對於類而言,依賴(dependency)關係可能由各種原因引起,如一個類想另一個類發送消息,或者一個類是另一個類的數據成員類型,或者一個類是另一個類的操作的參數型等。
            有時依賴關係和關聯關係比較難區分。事實上,如果類A和類B之間有關聯關係,那麼類A和類B之間也就有依賴關係了。但如果兩個類之間有關聯關係,那麼一般只要表示出關聯關係即可,不用再表示這兩個類之間還有依賴關係。而且,如果在一個類圖中有過多的依賴關係,反而會使類圖難以理解。
            與關聯關係不一樣的是,依賴關係本身不生成專門的實現代碼。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章