C++ Follow Me(3): 類的產生(下):從職責中提取

C++ Follow Me(3): 類的產生(下):從職責中提取

黃國強 2006-12-21

    在C中,軟件可以認爲是函數的集合。我們一般是從功能中來提取函數並將之模塊化。與C不同的是,C++程序是由一系列類組成。所以按功能來獲得類的出發點是不對的。那麼,我們應該從什麼角度才能得到我們所需的類了?答案正如標題所述,從職責中提取。
    職責(responsibility)和功能(function)到底有什麼區別呢?這兩個詞很容易混淆。我在這裏做個比方:比如,作爲一個老師對自己的學生,就應該履行做教師的職責。顯然,這裏沒有人會說履行一個做教師的功能。
    職責顯然要涵蓋功能,二者不在一個抽象層面上。簡單的說,職責就是界定什麼類應該對某件事情負責,而不是簡單的完成某個功能。
    對於數學概念來說,職責和概念往往是統一的。比如,正方形,長方形都可以直接提取爲類。因爲,數學概念是邏輯化的而且是精確的。與此相對應的自然概念卻不能簡單這樣提取,因爲二者不是統一的。比如,給桌子定義成一個類,你就會遇到問題。最明顯的,桌子是什麼形狀,到底有幾條腿或沒有等等。所以簡單的從自然概念中提取基本上行不通。這裏同樣要從職責的角度去提取。比如,食堂的飯桌負責給大家吃飯用的、電腦桌負責放電腦等等。這樣產生類的時候就不會遇到前面所提到的問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章