面向對象方法是將面向對象思想應用於軟件全生命周期的系統方法學,簡稱 OO 方法。它以對象為中心,以類和繼承為構造機制,實現從問題域到解決方案的無縫映射。
對象是系統中用於描述客觀事物的實體,封裝了數據 (屬性)與操作 (方法/行為)。從程序員視角看是程序模塊,從用戶視角看是服務提供者。對象間通過消息傳遞交互。
類是對象的模板/藍圖,定義了一組具有相同屬性和行為的對象。類是抽象,對象是具體化 (實例)。類之間形成繼承層次結構。
子類自動共享父類的屬性與方法,並可擴展或覆蓋。支撐代碼復用與多態的基石。分為單繼承 (Java) 與多重繼承 (C++)。
信息隱藏技術:將數據與操作綁定,對外暴露接口,內部實現細節不對外可見。實現高內聚、低耦合的關鍵。
同一消息,不同對象產生不同行為。通過方法重寫實現 (Java)。Dog.bark() vs Chicken.cluck() 皆響應 makeSound()。
簡化復雜現實的途徑:提取本質特徵,忽略非本質細節。支持在不同層次理解同一實體 (如:萊絲 → 牧羊犬 → 狗 → 動物)。
| 特徵 | 核心含義 | 關鍵價值 |
|---|---|---|
| 封裝性 | 數據與方法綁定,內部細節隱藏,對外提供接口 | 模塊獨立性、安全性、降低耦合 |
| 繼承性 | 子類共享父類結構,可擴展修改,具有傳遞性 | 代碼復用、擴展性、層次建模 |
| 多態性 | 同一接口,多種實現,運行時動態綁定 | 靈活性、可替換性、面向接口編程基礎 |
UML 是 OOAD 方法發展高潮的產物,統一了 Booch、Rumbaugh、Jacobson 等方法,成為軟件建模標準。
| 視圖類別 | 包含圖表 | 核心用途 |
|---|---|---|
| 用例視圖 | 用例圖 | 系統功能與參與者關系,需求捕獲 |
| 靜態視圖 | 類圖 | 類的靜態結構、關系、屬性、操作 |
| 包圖 | 系統分層、模塊依賴關系 | |
| 對象圖 | 類圖實例化,特定時刻對象快照 | |
| 行為視圖 | 狀態圖 | 對象生命周期狀態轉移 |
| 活動圖 | 業務流程、工作流、並發控制流 | |
| 交互視圖 | 順序圖 | 對象間消息時間順序,強調時間維度 |
| 合作圖 | 對象間協作關系,強調消息收發結構 | |
| 實現視圖 | 構件圖 | 代碼物理結構、依賴關系 |
| 配置圖 | 硬件拓撲、軟硬件映射、分布式部署 |
面向對象不是語法糖,而是一種將現實世界映射到計算機世界的思維方式。掌握 OO 核心概念與 UML 建模,是從「碼農」進化為「軟件工程師」的必經之路。