1. 程式人生 > >UML基本語法,這都看不懂就放棄學UML吧~

UML基本語法,這都看不懂就放棄學UML吧~

百度百科上面對UML的解釋:

簡單地說,UML是軟體開發的圖紙——它對於軟體的意義就像建築物的圖紙對於建築物一樣。

這裡主要解釋基本語法(以下使用starUML繪製):

類(class):

一般來說,類圖用這樣的矩形表示,第一行是類名(抽象類類名用斜體),第二行是類的特性,一般是指類的屬性,第三行是類的操作,通常指類的方法,第二行和第三行開頭的+,-,#,~分別表示public、private、protected、package四種訪問許可權(注:後面出現的類我就不寫屬性和方法了,直接空著了~)

介面(interface):

                   

有兩種表示:

  • 第一種(左邊的)和類差不多(上面的<<interface>>在starUML上還預設不顯示),在Java裡介面一般沒有屬性的,有也只能是public static finnal固定格式的,下面的class4是工廠介面的實現類。實現類由虛線+空心三角形構成的箭頭指向介面~
  • 第二種(右邊的)被稱作棒棒糖表示法,一個圈和實現類相連線,圈旁邊顯示介面名,然後屬性方法如圖顯示(為空就可以不顯示橫線)。實現類由實線與棒棒糖(介面)相連~

類的繼承(Super-Class and Sub-Class)

父類和子類,動物類是父類,野獸類是子類,子類由實線+空心三角形箭頭指向父類,和父類和子類的關係和上面介面與實現類的關係有些類似,但一個是實線,一個是虛線,而且箭頭方向是反的~

實際上呢,類的繼承被稱作 泛化關係(Generalization),是一般到特殊的關係,就像上面的動物到野獸,甚至再到老虎,這都是泛化。而介面和實現類被稱作 實現關係(Realization),表示類是介面特性和行為的實現~

類似的關係還有組合、聚合、關聯、依賴:

組合關係(Composition)

組合關係是整體和部分的關係,比如野獸和四肢,鳥和翅膀,整體和部分都是不可分離的,這種關係稱之為組合。部分由實線+實心菱形箭頭指向整體~

聚合關係(Aggregation)

聚合關係也是整體和部分的關係,但整體和部分是可以分離的,比如獅子和獅群,水滴和河流,汽車和輪胎,整體和部分是可以獨立存在的,這種關係稱之為聚合(你要說上面那個野獸和四肢、鳥和翅膀也能分離,那就當我例子沒舉好吧,意思懂了就行~)。部分由實線+空心菱形箭頭指向整體(聚合關係的關聯性顯然沒有組合關係那麼強,所以實心菱形換成了空心菱形)

關聯關係(Association

 

關聯關係表示一種擁有關係,擁有類可以知道被擁有類的資訊。

關聯關係可以是雙向的,比如雄獅可以擁有雌獅,雌獅也可以擁有雄獅(互為配偶),再比如老師和學生的關係,老師擁有學生,學生也擁有老師。這樣的雙向關聯的兩個類之間用實線連線。

關聯關係也可以是單向的,比如學生和課程的關係,學生可以有很多課程,但課程是沒法擁有學生的(額,計算機的世界裡不存在擬人~~),單向的關聯直接由一個實線箭頭從擁有類指向被擁有類

依賴關係(Dependency)

依賴關係是一種使用者和被使用著的關係,比如程式猿使用計算機。依賴關係表示一個類的實現會用到另外一個類(依賴),程式猿類類想要實現敲程式碼的方法就要用到計算機類~表示方法由使用者虛線箭頭指向被使用者。

 

以上六種關係的強弱比較為:泛化=實現>組合>聚合>關聯>依賴

 

以下的UML圖基本表示了上面所有的關係(這大概是程式設計師被黑的最慘的一次了吧~~~):