面向物件不只是語法糖,而是一種**程式設計思想**。本文從「世界」、「論調」、「物件」三大核心概念切入,建立正確的 OOP 認知框架。
同一目標(去人民公園),不同描述(地標導航 vs 道路名導航) → 不同程式碼結構。好的編程思想產出條理分明、可維護代碼;壞的產出晦澀難懂代碼。本系列核心主張:**一切按語義編寫**——代碼在人類世界中的意義。
「商人過河」問題,兩種論調:
**河岸論更優**:名詞概念越少,架構越簡單(種類越少複雜度越低)。**設計程式 = 設計論調**。
struct Search { virtual int search(int*,int,int); }),邏輯大小為 0,編譯器配 1 byte 保證位址唯一。STL 函數物件即此模式。搜尋功能需三參數:條件、容器、排序方法。傳函數指標語義為「引用」,不精確。映射為無狀態類 Search,語義為「搜尋功能這一抽象概念的實例」,支援多態(BSearch : Search)、策略替換,這就是面向物件的威力。
**面向物件不是把所有東西變成類**,而是:
1. 識別領域中的「名詞性概念」→ 類
2. 識別「動詞性概念」→ 傾向函數,必要時封裝為包裝類
3. 以「論調」為藍圖設計架構,而非演算法細節
4. 代碼表達領域語義,而非機器指令序列
下一篇將深入剖析「封裝」的真實含義與常見誤區。