UML設計入門

lm_y發表於2017-09-08
舉一個簡單的例子,來看這樣一副圖,其中就包括了UML類圖中的基本圖示法。

 

首先,看動物矩形框,它代表一個類(Class)。類圖分三層,第一層顯示類的名稱,如果是抽象類,則就用斜體顯示。第二層是類的特性,通常就是欄位和屬性。第三層是類的操作,通常是方法或行為。前面的符號,+ 表示public,- 表示private,# 表示protected。

右下角的飛翔,它表示一個介面圖,與類圖的區別主要是頂端的<<interface>>顯示。第一行是介面名稱,第二行是介面方法。介面還有另一種表示方法,俗稱棒棒糖表示法。唐老鴨是能講人話的鴨子,實現了講人話的介面。

接下來的是類與類,類與介面之間的關係了。首先注意動物、鳥、鴨、唐老鴨之間的關係符號。它們都是繼承的關係,繼承關係用空心三角形 + 實線來表示的。

       上述所列舉的幾種鳥中,大雁最能飛,讓它實現了飛翔介面。實現介面用空心三角形 + 虛線來表示。

 

       企鵝和氣候兩個類,企鵝是很特別的鳥,會遊不會飛。更重要的是,它與氣候有很大的關聯。我們不去討論為什麼北極沒有企鵝,為什麼它們要每年長途跋涉。總之,企鵝需要知道氣候的變化,需要了解氣候規律。當一個類知道另一個類時,可以用關聯(association)。關聯關係用實線箭頭來表示。

       再來看大雁和雁群這兩個類,大雁是群居動物,每隻大雁都是屬於一個雁群,一個雁群可以有多隻大雁。所以它們之間就滿足聚合(Aggregation)關係。聚合表示一種弱的擁有關係,體現的是A物件可以包含B物件,但B物件不是A物件的一部分。聚合關係用空心的菱形 + 實線箭頭來表示。

       組合(Composition)是一種強的擁有關係,體現了嚴格的部分和整體的關係,部分和整體的生命週期一樣。在這裡鳥和其翅膀就是組合關係,因為它們是部分和整體的關係,並且翅膀和鳥的生命週期是相同的。組合關係用實習的菱形 + 實線箭頭來表示。另外,你會注意到合成關係的連線兩端還有一個數字1和數字2,這被稱為基數。表明這一端的類可以有幾個例項,很顯然,一個鳥應該有兩隻翅膀。如果一個類可能有無數個例項,則就是n來表示。關係關係、聚合關係也可以有基數的。

       動物的幾大特徵,比如有新陳代謝,能繁殖。而動物要有生命力,需要氧氣、水以及食物等。也就是說,動物依賴於氧氣和水。他們之間是依賴關係(Dependency),用虛線箭頭來表示。

程式設計是一門技術,更是一門藝術,不能只滿足於寫完程式碼後執行結果正確就完整,時常要考慮如何讓程式碼更加簡練,更加容易維護,容易擴充套件和利用,只有這樣才可以真正得到提高。寫出優雅的程式碼真的是一種很爽的事情。UML類圖也不是一學就會的,需要有一個慢慢熟練的過程。所謂學無止境,其實這才是理解物件導向的開始呢。

相關文章