2011年6月10日

二、CRC(Class-Responsibility-Collaborator)卡片

一般介紹UML幾乎都是從開發流程開始介紹,但筆者覺得這個部分應該要留到後面一點再來說明,因為開發流程對於沒有在中大型的軟體開發公司的開發者而言,很難有所感覺,就像筆者剛出社會的時候在一家系統廠工作,對於開發流程一點感覺都沒有(後來想想應該是我比較遲鈍吧);是後來有幸加入一家比較有規模的公司,當時我的直屬老闆(CAO, Chief Architecture Officer)教了我很多(應該是說把我釘得滿頭包),所以我才有機會懂些皮毛。
所以我想從物件導向中最容易、也最直觀的CRC先說明起(不過CRC不屬於UML的一部分)。
通常筆者在思考如何以物件導向設計的時候,最常用的技術就是去探索物件間的互動情況,這樣做的好處就是會忘記程序導向及資料操作,進而將重心放在行為上面。
就筆者的經驗,使用CRC的第一個步驟就是找出[責任]出來,例如THexFile這個物件,就是應該將hex file從儲存媒體進來,並且將它轉換成適當的Binary Code及回傳該Binary Code的大小。
#include <string>
class THexFile
{
  protected:
    std::string FstrFileName;
  public:
    bool readFromFile(std::string fileName);
    uint8_t *getBinaryContent();
    uint32_t getFileSize();
};
第二個C代表的就是合作者,這個C的目的是可以知道有哪些類別會跟這個類別一起合作,藉此可以以較高階觀點了解類別間的連結(Link)關係。

沒有留言:

張貼留言