亞里斯多德研究「類型」(魚類、鳥類)。Simula-67(首個 OOP 語言)引入 class 關鍵字,將「具有共同特徵與行為的一群物件」形式化為類別。class 與 type 常互換使用,但嚴格說:型別定義介面,類別是介面的一種實作。
「問題空間」的元素 ↔ 「方案空間」的物件,建立一對一映射
這是 OOP 最大挑戰:用程式碼自然表達領域概念,而非迎合機器模型。
Light lt = new Light(); // 建立 Light 物件,lt 為參考(句柄)
lt.on(); // 發送「開燈」訊息
lt.off(); lt.brighten(); lt.dim(); // 其他介面操作
new:在堆積區配置物件;.:透過參考發送訊息(呼叫方法);| 術語 | 說明 |
|---|---|
| Class / 類別 | 定義物件結構與行為的模板 |
| Object / 物件 | 類別的具體實例,擁有狀態與行為 |
| Reference / 參考(句柄) | 指向物件的變數 |
| Message / 訊息 | 方法呼叫請求 |
| Interface / 介面 | 物件可接受的訊息集合 |
物件導向將「資料 + 行為」封裝為類別,透過介面互動。這讓程式碼能直接表達問題領域概念,是從「機器導向」到「問題導向」的關鍵抺躍。