軟體開發階段一:要建什麼——使用案例、名詞動詞法、誠實時程、核心聚焦
傳統 vs 現代 舊稱:需求分析與系統規格 現代:精簡清單 + 基礎圖表,節省時間 核心工具:使用案例 「假如……系統該怎麼做?」 例:假如客戶提現
軟體開發階段二:如何建構——UML 設計圖、物件溝通、白板協作、擁有設計
核心產出 設計方案:物件外觀與相互溝通方式 工具:UML (統一建模語言) — 下載規格 UML 亦適用階段一描述 實戰協作案例 小組首次 OOP 專案
軟體開發階段三:正式建構——全面方案、藝術心態、驗證需求、非終點
前置條件 已有計畫(無論簡略) 掌握正確設計結構 編碼將比直接動手簡單得多 心態建議 切勿急功近利:最後才拿出全面方案 盡可能設想周全、滿足最大多數需求
軟體開發階段四:校訂——持續改進、內部結構優化、遞增開發、快速原型陷阱
重新定義「維護」為「校訂」 傳統「維護」暗示原始品質不佳 校訂:「第一次不完美,留空間深入理解,回頭改進」 動力:持續重構優化,最終獲得回報 達標標準
軟體開發計畫的必要性:50% 無計畫專案失敗、設計藍圖與編碼的平衡
核心統計 估計超過 50% 的無計畫專案會失敗! 建築類比 蓋房子必須有藍圖 狗屋可只有草圖 軟體開發必須有詳盡完備的計畫 歷史教訓 早期缺乏結構
Java vs C++:能否取代?速度權衡、庫遷移成本、JIT 編譯、適用場景分析
核心觀點:互補而非單純取代 Java 極似 C++,但強項領域不同。C++ 靈活多變、工具鏈成熟(Visual C++、C++ Builder),Windows
Java 參考(句柄)操作物件:遙控器隱喻、參考 vs 物件、初始化必要性、String 特殊字面值初始化
核心隱喻:遙控器與電視 參考(句柄/引用) = 遙控器 物件 = 電視機 操作遙控器(參考)控制電視(物件) 參考可獨立存在(無物件時為 null) 統一
Java 記憶體模型:六大資料儲存區域完整解析
程式執行時資料分布於六大區域,各有速度、生命週期與靈活度權衡。理解記憶體模型是效能調優與避免記憶體洩漏的基礎。 六大儲存區域 暫存器:CPU 內部、最快、數
Java 基本類型特殊處理:Primitive Types、固定大小、封裝類、高精度 BigInteger/BigDecimal
為何需要基本類型? new 建立物件在堆上,效率較低。對小型、高頻變數,Java 採用 C/C++ 策略:非參考的「自動變數」,儲存實際值於堆疊,存取極快。
Java 陣列安全機制:自動初始化、邊界檢查、參考陣列 null 預設值、基本類型零值初始化
核心設計目標:安全性 C/C++ 陣列 = 記憶體塊,越界存取、未初始化使用 → 不可預測行為。 Java 陣列:保證初始化 + 執行期邊界檢查。 代價與收益
Java 建立新資料類型:class 關鍵字、物件實例化、new 操作符
核心概念 若「一切皆物件」,何者決定物件的「外觀與行為」?答案是 class 關鍵字。歷史上主流 OO 語言皆用 class 定義新類型。 語法 class
Java 類成員:欄位與方法、基本類型預設值、區域變數強制初始化
類的兩種成員 資料成員(欄位):任何類型物件(參考)或基本類型(值) 成員函數(方法):行為定義 物件參考初始化 參考型欄位:需透過建構子或定義處用 n
Java 方法定義完整指南:名稱、參數、返回類型、主體、訊息傳遞模型
術語統一 Java 使用「方法」而非「函數」,意指「完成某事的途徑」。本質相同,術語貫徹全書。 方法基本結構 返回類型 方法名(參數列表) { 方法主體 }
Java 方法參數列表:物件參考傳遞、基本類型例外、String 長度計算範例
參數列表本質 規定傳遞給方法的資訊類型與名稱 所有資訊以物件形式傳遞(基本類型除外) 實際傳遞的是參考(句柄),類型必須匹配 基本類型例外 boolean
Java 命名空間與套件命名規範:反轉域名、唯一標識符、避免名稱衝突
核心機制:域名反轉 Java 以網域名稱反轉作為套件前綴,確保全域唯一: 我的域名:BruceEckel.com 我的工具庫:com.bruceeckel.u
Java import 機制與套件管理:解決類名衝突、通配符導入、標準庫使用
問題背景 同名類別可能存在於多個檔案/函式庫,編譯器無法自動判斷使用哪個。C++ 靠命名空間解決,Java 採用套件機制。 import 關鍵字 指示編譯器
Java static 關鍵字深度解析:靜態欄位、靜態方法、類級資料、單例模式先驅
核心概念 static 表示屬於類而非實例: 無需建立物件即可存取 所有實例共享同一份靜態資料 靜態方法不能直接存取非靜態成員(無 this 參考) 靜態