2008年8月31日 星期日

做案子真的需要UML

今天買了一本書叫做OCUP UML初級認證攻略,作者是邱郁惠,她寫了不少關於系統設計的書。


這一本我索性的買了下來,因為這本書給了一個目標就是考取UML的初級認證,終於有一個學習UML的目標了。如果沒有一個認證,在公司裡面真的很難有人會相信你、認同你使用UML來描述系統。我是認為UML絕對是非常直得學習的語言,因為一張圖可代表千言萬語,也非常有助於愛開會的台灣公司,有一個可以開會討論的工具。不要每次開會都是天馬行空,開完後沒有任何結果與紀錄。

開發嵌入式系統更是需要這類的工具,因為這種專案不是只有跟某一種領域的人交談,而是跟軟體、硬體、業務、PM、工廠等等...各種不同專業不同個性的人合作。

2008年8月23日 星期六

handle class in C language

在C++中有一種模組設計的技巧叫做handle class,其宗旨就是要讓封裝的特性更強烈。只提供一個handle來控制這個物件,其他所有資料均不開放。而在C語言裡面,要怎麼弄出一個handle clasee呢?我在此提供我的方法:

1. 首先我的習慣是一個.c檔配一個.h檔,而這一組就是相當於一個class,相信很多人也都這樣做。
2. 所有的Globol variable與private function都使用static宣告,讓其他.c無法使用,也避免掉重複宣告的困擾。
3. 在.h檔裡面增加define如下

////////////////////test.h/////////////////////////
#ifdef TEST_C

struct{

int a;
int b;
int c;

}test

#else

void test_hanle;

#endif


extern void test_init( struct test *test_handle);

/////////////////////////////////////////////////////

如此一來只要在test.c裡面宣告#define TEST_C就可以讓tset.c只看到他自己的成員們,但是別的.c檔想要來#include "test.h"的時候,就只能看到test這個模組釋放出來的函式,以及一個handle---void test_hanlde,那所有的function都可以設計成必須要傳入test_handle 才能使用這個模組。

如果test.c裡面有修改到什麼實作細節,也不會影響到include "test.h"的上層程式。因為其他的.c檔,只會參考到test.h裡面的void teset_handle而已。所以編譯的時候,只會編到test.c為止。