UML类图解义 (来自《大话设计模式》)
為什么80%的碼農都做不了架構師?>>> ??
小菜:“對了,我時常在一些技術書中看到這些類圖表示,簡單的還看得懂,有些標記我很容易混淆。要不你給我講講吧。”
大鳥:“這個其實多看多用就熟悉了。我給你舉一個例子,來看這樣一幅圖,其中就包括了UML類圖中的基本圖示法。”
UML類圖圖示樣例
大鳥:“首先你看那個‘動物’矩形框,它就代表一個類(Class)。類圖分三層,第一層顯示類的名稱,如果是抽象類,則就用斜體顯示。第二層是類的特性,通常就是字段和屬性。第三層是類的操作,通常是方法或行為。注意前面的符號,‘+’表示public,‘-’表示private,‘#’表示protected。”
大鳥:“然后注意左下角的‘飛翔’,它表示一個接口圖,與類圖的區別主要是頂端有<<interface>>顯示。第一行是接口名稱,第二行是接口方法。接口還有另一種表示方法,俗稱棒棒糖表示法,就是唐老鴨類實現了‘講人話’的接口。”
小菜:“為什么要是‘講人話’?”
大鳥:“鴨子本來也有語言,只不過只有唐老鴨是能講人話的鴨子。”
小菜:“有道理。”
大鳥:“接下來就可講類與類,類與接口之間的關系了。你可首先注意動物、鳥、鴨、唐老鴨之間關系符號。”
小菜:“明白了,它們都是繼承的關系,繼承關系用空心三角形+實線來表示。”
大鳥:“我舉的幾種鳥中,大雁是最能飛的,我讓它實現了飛翔接口。實現接口用空心三角形+虛線來表示。”
大鳥:“你看企鵝和氣候兩個類,企鵝是很特別的鳥,會游不會飛。更重要的是,它與氣候有很大的關聯。我們不去討論為什么北極沒有企鵝,為什么它們要每年長途跋涉。總之,企鵝需要‘知道’氣候的變化,需要‘了解’氣候規律。當一個類‘知道’另一個類時,可以用關聯(association)。關聯關系用實線箭頭來表示。”
大鳥:“我們再來看大雁與雁群這兩個類,大雁是群居動物,每只大雁都是屬于一個雁群,一個雁群可以有多只大雁。所以它們之間就滿足聚合(Aggregation)關系。聚合表示一種弱的‘擁有’關系,體現的是A對象可以包含B對象,但B對象不是A對象的一部分[DPE](DPE表示此句摘自《設計模式》(第2版),詳細摘要說明見附錄二)。聚合關系用空心的菱形+實線箭頭來表示。”
大鳥:“合成(Composition,也有翻譯成‘組合’的)是一種強的‘擁有’關系,體現了嚴格的部分和整體的關系,部分和整體的生命周期一樣[DPE]。在這里鳥和其翅膀就是合成(組合)關系,因為它們是部分和整體的關系,并且翅膀和鳥的生命周期是相同的。合成關系用實心的菱形+實線箭頭來表示。另外,你會注意到合成關系的連線兩端還有一個數字‘1’和數字‘2’,這被稱為基數。表明這一端的類可以有幾個實例,很顯然,一個鳥應該有兩只翅膀。如果一個類可能有無數個實例,則就用‘n’來表示。關聯關系、聚合關系也可以有基數的。”
class Bird
{
?? private Wing wing;
?? public Bird()
?? {
?????? wing = new Wing();
?? }
}
大鳥:“動物幾大特征,比如有新陳代謝,能繁殖。而動物要有生命力,需要氧氣、水以及食物等。也就是說,動物依賴于氧氣和水。他們之間是依賴關系(Dependency),用虛線箭頭來表示。”
abstract class Animal
{
?? public Metabolism (Oxygen oxygen,Water water)
?? {
?? }
}
小菜:“啊,看來UML類圖也不算難呀。回想那天我面試題寫的代碼,我終于明白我為什么寫得不成功了,原來一個小小的計算器也可以寫出這么精彩的代碼,謝謝大鳥。”
大鳥:“吼吼,記住哦,編程是一門技術,更加是一門藝術,不能只滿足于寫完代碼運行結果正確就完事,時常考慮如何讓代碼更加簡練,更加容易維護,容易擴展和復用,只有這樣才可以真正得到提高。寫出優雅的代碼真的是一種很爽的事情。UML類圖也不是一學就會的,需要有一個慢慢熟練的過程。所謂學無止境,其實這才是理解面向對象的開始呢。”
轉載于:https://my.oschina.net/qihh/blog/57381
總結
以上是生活随笔為你收集整理的UML类图解义 (来自《大话设计模式》)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hdu - 3415 Max Sum o
- 下一篇: ASP.NET MVC3 异步刷新