【机房合作】UML图之包图再学习
? ? ? ? ?在合作中對包圖驗收沒有通過,對包圖的理解不深刻,整幅圖中,在包與包之間,只用了兩種關系:實現和import。因此需要重新修改,可是修改起來比較費勁兒,于是查資料,跟霍亞靜師傅和連江偉師傅交流,對包圖有了更深一步的認識。下面跟大家說說我對包圖理解的過程。有理解不正確的地方,還請指出。
我給兩位師傅發出了這樣的疑問:
? ? ? ? 師傅,關于包圖有一些疑問,在網上查了些資料,但是看不懂。。。 ? ??? ??包圖的關系理得不清楚。四種關系:use,import,access,trace。什么叫命名空間合并。什么是元素間的依賴和包間的依賴。 還附帶兩個鏈接: ? ? ? ??http://www.doc88.com/p-5826867675960.html ? ??? ??http://blog.csdn.net/ggibenben1314/article/details/8570162
霍師傅給的回復是:
包圖是如何引用出來的?它的出現究竟起到了什么作用?
霍師傅從包圖的來源意義讓我從整體上去理解包圖。
? ? ? ? 一個"包圖"可以是任何一種UML圖組成,大家都知道,UML圖共九種:用例圖、類圖、對象圖、順序圖、協作圖、狀態圖、活動圖、構件圖、部署圖。也就是說一個包圖可以是用例圖打包構成的,叫做用例包圖。一個包圖可以是類圖打包構成的,叫做類包圖。常用的就是這兩種包圖。用例圖是用來描述系統需求的,因此用例包圖是為了組織需求。類圖是用來描述對系統設計的,因此類包圖是在邏輯上組織系統設計。
? ? ? ? 在機房合作中應用的是類包圖。
? ? ? ? 百度百科中講到——應用下列的規則來把UML類圖組織到包圖里: ? ? ? ? 1、把一個框架的所有類放置在相同的包中。 ? ? ? ? ? 2、一般把相同繼承層次的類放在相同的包中。? ? ? ? ? 3、彼此間有聚合或組合關系的類通常放在相同的包中。 ? ? ? ? 4、彼此合作頻繁的類,信息能夠通過UML順序圖和UML合作圖反映出來的類,通常放在相同的包中。
? ? ? ? 自己的理解:
? ? ? ? 1、機房中是七層框架,U層的類放在U層包中,B層的類放在B層包中,其他層都是如此。
? ? ? ? 2、3、4,目前還沒有見過實例,或者是見到了還沒有識別。希望大家可以分享一下自己的理解。
? ? ? ??
? ? ? ? 應用包圖的過程中要注意:
? ? ? ? 1、避免包間的循環依賴
? ? ? ? 2、包的命名要簡單,具有描述性。這跟我們寫代碼是一樣的準則,讓名字有意義。
連師傅給的回復是針對我問的包圖間的關系。根據師傅給的資料(簡直太棒了!)
http://yunli.blog.51cto.com/831344/188692/
? ? ? ? 理解到:
? ? ? ? 包之間的關系網上有兩種說法:
? ? ? ? (1)use(使用),import(引入),access(訪問),trace(跟蹤)
? ? ? ? (2)Dependency(依賴)(包含import dependency),Abstraction(泛化),Nesting(嵌套)
? ? ? ? EA軟件中的可選關系比較細致,上邊提到的都囊括了:
import ? VS ? access:
? ? ? ? 包引入(package import)是一種允許采用非限定性名稱訪問來自于另一個命名空間中的元素的關系。假如我們有一個包A和一個包B,如果包A沒有引入包B,那么包A在訪問包B時,必須采用限定性名,比如B::Integer。當包A引入了包B以后,則可以采用非限定性名稱進行訪問,此時A可以直接用Integer來訪問包B中的Integer。對于包的引入,其如同C#/C++語言中的using namespace關鍵字,也如同于Java語言中的import關鍵字。
? ? ? ? 我們都知道類中有public,private等修飾符來描述類的方法和變量。同樣,包圖中也有這一屬性值,用public和private來描述可見性。public 對應import 關系,private對應access關系。這兩個都是引入。但是,舉個例子:
? ? ? ? 包A<----<<access>>----包C;
? ? ? ? 包B<----<<import>>----包C;
? ? ? ? 包C<----<<import>>----包D。
? ? ? ? 則在C中可以采用非限定性名訪問包A和包B,而在D中可以采用非限定性名訪問包B和包C,而不能采用非限定性名訪問包A。<<import>>關系是可傳遞的,但<<access>>關系則不可以。
Dependency:
? ? ? ? 對于由對象類組成的包,也就是如果兩個包中的任意兩個類存在依賴關系,則成為包之間存在依賴關系。
Abstraction:
? ? ? ? 泛化關系表示事物的一般和特殊的關系。如果兩個包之間存在泛化關系,就是指其中的特殊性包必須遵循一般性包的接口。就像類的繼承一樣,包可以替換一般的元素,并可以增加新的元素。
Nesting:
? ? ? ? 包可以將其他包作為包內的元素,子包又可以擁有自己的子包,這樣就可以構成一個系統的嵌套結構,以表達系統模型元素的靜態結構關系。嵌套不宜過深,一般以2到3層為宜。
? ? ? ? 整理到現在,感覺對包圖的知識了解一些,但是依舊理解不深刻。過兩天就忘了,還得需要多實踐才行。
總結
以上是生活随笔為你收集整理的【机房合作】UML图之包图再学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python(数据分析与可视化)二
- 下一篇: PET考试成绩今日出炉