高焕堂《嵌入式UML设计》读书笔记_第三章
第三章 UML如何表現Whole-Part結構
為什么要討論Whole-Part
在第一章中已經介紹過,將應用程序分割成許多小塊(即:組件),在使用時可以隨意調換其中一個或多個組件,以實現組件的快速淘汰和重組,從而快速滿足客戶的特殊需求或新需求。
這也就是說將應用程序分為多個Part,再組合成一個Whole。
要想真正實現快速淘汰和重組的效果,Part就不能隨意劃分。Part的劃分要講究“有機次序”。只有“分”得好,才能“合”得快,合得妙。
所以,下面專門討論如何劃分Part。
劃分Part的常見原因和方法
我們可以分析Whole是否面臨如下情況,如果有,那我們就可以把這部分劃分出來,作為一個Part:
1 希望組合出多樣化的Whole
2 希望分散開發生產,加快Whole的組合速度
3 希望組件提前開發,縮短Whole的生產時間
4 希望可外購現成組件,以降低成本
5 希望專注做小組件,并大量生產
我們還可以從以下角度來洞悉“穩定”的部分和“變化”的部分,將“穩定”和“變化”劃分開,成為不同的Part:
1 根據客戶而分:
比如:大部分人喜歡加糖咖啡,但正在減肥的女士則喜歡無糖或低糖咖啡。所以咖啡是穩定的,糖是變化的。因此將糖和咖啡劃分開。
2 根據時間而分:
比如:汽車的車體在設計時就已固定,但汽車的顏色是在顧客購買時才確定的。因此將車體生產和車身上色劃分開。
Whole-Part關系分類
常見的三種組合關系分類
| 組合/部分 | 房子和門 房子和窗戶 汽車和引擎 | |
| 容器/內容 | 汽車和司機 巴士和乘客 | |
| 集合/成員 | 雁群和大雁 東南亞總行程和香港觀光行程 |
Odell提出的組合關系分類
擔任過美國OMG主席的James Odell提出了一套關系分類方法,他根據3項特性將組合關系分為6種。
其中,3項特性分別是:配置、同質性、不變性。
配置:“部分”與“整體”有特定的功能和結構關系
同質性:“部分”與“整體”是一種東西
不變性:“部分”難以從“整體”中抽離出來
6種組合關系如下表:
說明:
1.我沒有搞明白“配置”這項特性到底如何理解,所以下表中沒法把對“配置”的解釋寫出來。
2.我個人認為這種分類方法過于繁瑣,不如前一種方法簡單明了。
3.我個人認為這種分類方法的3個特性中,不變性最為重要,因為是否具備不變性決定了使用哪種符號:不變使用composition,可變使用aggregation。
| 組件/整體對象的組合 | CPU和電腦 風扇和電腦 | 非同質: CPU、風扇和電腦不是一種東西 | 可變: CPU、風扇可以沖電腦中取出來 | ||
| 材料/對象的組合 | 油和紅龜粿 糖和紅龜粿 糯米和紅龜粿 | 非同質: 油、糖、糯米和紅龜粿不是一種東西 | 不變: 油、糖、糯米一旦制成紅龜粿就沒法再取出來了 | ||
| 切割部分/對象的組合 | 一塊餅干和一盒餅干 | 同質: 一塊餅干和一盒餅干都是餅干 | 可變: 可以從一盒餅干中拿出一塊餅干 | ||
| 地方/地區組合 | 東南亞總行程和香港觀光行程 | 同質: 東南亞總行程和香港觀光行程都是行程 | 可變: 可以單獨進行香港觀光行程,從另一個角度看也可以從東南亞總行程中去掉香港觀光行程,這并不影響東南亞總行程的存在 | ||
| 成員/聚集組合 (同前一種分類法中的容器/內容) | 會員與俱樂部 | 可變: 會員可退出俱樂部,這并不影響俱樂部的存在 | |||
| 成員/合伙組合 (同成員/聚集組合的區別就在于不變性) | 父母親一方和雙親家庭 | 不變: 缺少父母親任一方就不再是雙親家庭了 |
總結
以上是生活随笔為你收集整理的高焕堂《嵌入式UML设计》读书笔记_第三章的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HTML5 video视频播放
- 下一篇: wemall 模板