天天看點

【面向對象程式設計之CRC】CRC卡及其應用

1.什麼是 CRC card?

CRC (Class-Responsibility-Collaborator) Card是目前比較流行的面向對象分析模組化方法。在CRC模組化中,使用者、設計者、開發人員都有參與,完成對整個面向對象工程的設計。

CRC卡是一個标準索引卡集合,包括三個部分:<b>類名、類的職責、類的協作關系</b>,每一張卡片表示一個類。

· 類 代表一系列對象的集合,這些對象是對系統設計的抽象模組化,可以是一個人、一件物品等等,類名寫在整個CRC卡的最上方。

· 職責 包括這個類對自身資訊的了解,以及這些資訊将如何運用。諸如,一個人,他知道他的電話号碼、位址、性别等屬性,并且他知道他可以說話、行走的行為能力。這個部分在CRC卡的左邊。

· 協作 指代另一個類,我們通過這個類擷取我們想要的資訊或者相關操作。這個部分在CRC卡的右邊。

<a href="http://images.cnblogs.com/cnblogs_com/gnuhpc/201201/201201131319448622.png"></a>

CRC卡片的背面往往記載着這個類的較長的描述和在CEC設計中的一些注意事項。

2.如何使用CRC卡組織團隊成員?

我們可以使用CRC卡完成設計團隊成員的組織工作,但是需要限制在6人以下以提高效率,否則可能會增加溝通成本。我們的成員組成一般有以下三類,職責、人數建議、及其特征描述如下:

· 使用者

o 人數:3-5

o 特征:

§ 豐富的行業知識

§ 清晰的業務流程

§ 邏輯思維和良好溝通

§ 對系統設計感興趣

· OO設計人員

o 人數:1-2

§ 通曉CRC模組化流程和方法

§ 通曉OO設計思路和方法

§ 有實際開發OO系統的經驗

· 項目協調人

o 人數:1

§ 良好的會議溝通和管理技巧

3.CRC分析流程

1)準備工作:

召集人員,拿到相關業務流程的需求——Statement of work,SOW工作陳述,從SOW中提煉出需求,以項目符号清單的形式表示每一個特定的需求。

2)CRC卡的建立:

a.類對應于名詞,讀完需求分析後,你可以劃出一些名詞作為類設計的切入點。當然,要習慣于疊代的方式,一開始列出的名詞并不見得都要最終設計為一個類,而後續可能因為可用性等需要設計額外的類。

b.我們可以通過這個名詞清單進行一一篩選分析,适當把握抽象與具體的關系,比如一個司機、一個秘書、一個經理可能都能抽象為人這個類,但是在第一輪疊代中,若無明顯的需求,我們可以先暫時不用去考慮。對于普通的一般的關系,我們可以考慮超類的設計,也可以考慮通過構造函數重載完成。

c.在設計中,我們要注意目标之一是保證可擴充性,重構也是我們要考慮的一個隐性需求。

d.通過第一輪疊代我們就找出了我們需要關注的類。接着我們需要明确類的職責。職責的一個切入點是動詞,從動詞的清單中就可以得到職責初步清單,然後就行疊代。在這個過程中,并不是每一個動詞都會成為一個職責,幾個動詞可能組成一個職責,最終選擇的一些職責可能并沒有出現在最初的職責中,對于共享的職責我們要特殊辨別,以便在後續的詳細設計中特殊處理(比如Java中的接口)。

e.在完成類的職責分析後我們開始根據這些職責及其互動關系明确協作關系,我們此時可以通過用例場景(系統對使用者請求或事件作出響應時完成的一個事務或相關操作序列),對于每一個用例,明确交換的對象和消息。在這個過程中,參與的人可以通過角色扮演的方式,既活躍了氣氛,又能在溝通互動中展現每一個類職責與協作。

f.完成CRC後就可以通過UML完成正式的初步設計了。

本文轉自gnuhpc部落格園部落格,原文連結:http://www.cnblogs.com/gnuhpc/archive/2012/01/13/2321492.html,如需轉載請自行聯系原作者