crc,即
class responsibility collaboration,
是一種用於設計物件導向軟體過程中使用的交流工具和頭腦風暴工具。典型的應用場合是首次確定設計中需要哪些類,及這些類如何互動。每個
crc卡上通常有以下幾項:類名,父類和子類,本類的職責
(responsibility)
,與本類互動的型別,本卡片的作者。
使用小卡片,迫使設計人員對複雜的設計進行簡單有效的描述。它會強迫設計者突出關鍵思路,阻止設計者在設計的早期過於關心細節的實現;另一方面,也可以阻止設計者為乙個型別設計太多的職責。因為卡片的形式比較方便,設計過程中可以攤在乙個桌面上,也可以用於向其他人展示設計中各個類的互動。s
為畫出乙個
crc卡片,通常的作法是從軟體需要描述文件中找出名詞和動詞,並決定是否為每個名詞設計乙個類以及哪些動詞是這些類的職責。自然,並不是每個名詞都會成為軟體中的乙個型別,但這些通常是設計的起點。 使用
crc的一般步驟:
step 1.
選擇相關的用例(
use case)
step 2.
按順序畫出與該用例有關的全部卡片。首先是觸發這一用例的型別,其次是接受上乙個型別訊息的類。或者,把所有相關型別和他人的主要職責全部畫出,放在桌面上。
step 3.
把所有的型別和職責全部審閱一遍,命名。
按用例的描述,把
crc上的職責過一遍,給職責命名,並分清每個型別如何處理每項職責或委託給其他型別。
如果是用
crc做頭腦風暴的工具,隨需要增加新的型別和功能,或是重新在現有的型別間劃分職責。本步驟中,並不需要給型別和它們的方法命令,這些工作留到最後階段完成。
step 4.
改變使用條件,對設計進行壓力測試
在審閱設計的過程中,試著逐個改變用例的假設條件,看是否會影響整個設計。在乙個好的設計中,只需要增加乙個型別或改動乙個型別,就足以應付這些變化。也就是說,改變單個條件的情況下,這種改變可以隔離在乙個小範圍內。如果需要,增加乙個新型別。
並不是全部的卡片的都會進入最後的設計中,一些卡片會因為用途不多而被邊緣化,不會成為最終設計的一部分。
step 5.
增減卡片,完善設計 使用
crc卡片可以在桌面上同時展示多種設計,經過反覆的修訂,乙個粗糙的設計可以演變成乙個精緻的設計,都最終的設計非常小巧。在修訂的過程中,不要扔掉卡片,隨著對問題的認識,有可能會用到這些卡片
step 6.
寫出最關鍵的職責和互動方式,關鍵互動方工要畫出互動圖。
文章參考:
物件導向設計
物件導向設計 object oriented design,ood 方法是oo方法中乙個中間過渡環節。其主要作用是對ooa分析的結果作進一步的規範化整理,以便能夠被oop直接接受。物件導向設計 ood 是一種軟體設計方法,是一種工程化規範。這是毫無疑問的。按照bjarne stroustrup的說法...
物件導向設計
1 物件導向的三要素 1.1 封裝 encapsulation a 封裝 合理的隱藏資料的隱藏 隱藏在方法背後 實現的隱藏 隱藏在介面背後 變化的隱藏 隱藏在抽象背後 b 封裝能夠提高物件的復用性 減低物件的耦合度c 良好的封裝 物件的高內聚 1.2 繼承 inheritance a 基於差異式程式...
物件導向設計
物件導向的設計把握乙個重要原則 誰擁有資料,誰就對外提供操作這些資料的方法。人在黑板上畫圓 person,blackboard,circle draw 列車司機在剎車 人關門 兩塊石頭磨成一把石刀,石刀可以砍樹,砍成木材,木材可以做椅子。stone石頭 stoneknife石刀 stoneknife...