具體的東西被抽象,然後加以概括,歸類,我個人認為這是思維的一個升華,就像給一個東西下定義一樣,如何才能用自己的話講這個東西說明清楚,當然要有全面的認識,是以抽象不是沒有根據的,而是建立在自己的認識之上。
面向對象開發的時候都會接觸到依賴,關聯等,不僅僅是面向對象開發,就在其他開發的時候也會遇到,比如在使用ArcGIS Engine開發的時候,那些OMD圖,這些關系,其實自己已經很熟悉了,光給别人教育訓練就講解了好幾次。
人的大腦對圖檔可能有一種天生的存在意識,比如看一篇很長的文字描述的時候,我們可能不知所雲,但是如果用圖的形式将這個内容勾勒出來,卻容易被吸收,當然這個圖也不是憑空想象,還是建立在自己的認識之上,是對文字的另外一種表達。相同的意思,有不同的表達方式,正式如此。
我喜歡模拟,當時在教育訓練的時候,模拟了QI,模拟了接口回調等,但是對于UML中的幾種關系,卻遲遲未動,看來自己真懶,趁這個時間,我将别人寫的“偷”過來,作為警示吧。内容見下面的部落格。
<a href="http://www.cnblogs.com/demon521/archive/2009/01/12/1374175.html">http://www.cnblogs.com/demon521/archive/2009/01/12/1374175.html</a>
這幾天要寫點文檔用到UML的類圖,重新再次撿起以前的知識,多多少少有點總結,在這裡記錄下來,也算是以備後用吧。
在這裡推薦大家可以嘗試着用用以下我推薦的二種UML工具:
Visual.UML.Developer.Edition.v5.1(感覺不錯,功能強大,不過收費)
StarUML(開源免費,05年之後就沒有再維護更新過,南韓人開發,符合亞洲人的習慣)
在UML類圖中,類與類之間的關系主要有以下幾種:
泛化(Generalization)
所謂的泛化就是我們最常用的繼承關系

依賴(Dependency)
依賴關系是指一個類對别一個類的依賴,比如說Employee類中有一個方法叫做TakeMoney(Bank bank)這個方法,在這個方法的參數中用到了Bank這個類,那麼這個時候可以說Employee類依賴了Bank這個類,如果Bank這個類發生了變化那麼會對Employee這個類造成影響。
關聯(Association)
關聯關系有點邊界模糊和依賴有點像,但又完全不像。關聯是指一個類用到了另外的一個類,但不依賴。還是用代碼來表達比較貼切
聚合(aggregation)
聚合是一種單向關系,聚合與關聯的差別在于聚合的兩個類之間的關系在概念層次上不是一個級别的,一般來說聚合中的類關系總是一個類比别一個類要進階一些,而關聯基本上是平級的
合成(Composition)
合成是一種特殊的聚合形式,它是提類與類之間的聯系是非常密切的,少了那一個也不行。
實作(Realization)
簡單的說就是接口