第 2 章 物 件 導 向 技 術 導 論 2-1 程 式 設 計 方 法 2-2 抽 象 資 料 型 態 2-3 物 件 導 向 的 思 維 2-4 物 件 導 向 技 術 的 三 大 觀 念 2-5 物 件 導 向 程 式 語 言 2-1 程 式 設 計 方 法 2-1-1 非 結 構 化 程 式 設 計 2-1-2 程 序 式 與 結 構 化 程 式 設 計 2-1-3 模 組 化 程 式 設 計 2-1-4 物 件 導 向 程 式 設 計 1/54 2/54 2-1 程 式 設 計 方 法 - 說 明 2-1-1 非 結 構 化 程 式 設 計 一 般 來 說, 初 學 程 式 設 計 者 在 逐 漸 建 立 深 厚 的 程 式 設 計 功 力 前, 學 習 程 式 設 計 通 常 都 會 經 歷 數 個 學 習 過 程, 即 四 種 程 式 設 計 技 術 (Programming Techniques), 或 稱 為 程 式 設 計 風 格 (Programming Styles), 如 下 所 示 : 非 結 構 化 程 式 設 計 (Unstructured Programming) 程 序 式 程 式 設 計 (Procedural Programming) 與 結 構 化 程 式 設 計 (Structured Programming) 模 組 化 程 式 設 計 (Modular Programming) 物 件 導 向 程 式 設 計 (Object-Oriented Programming) 早 期 BASIC 機 器 語 言 或 組 合 語 言 建 立 的 程 式, 很 多 仍 然 是 使 用 非 結 構 化 程 式 設 計 來 建 立 程 式 碼 對 於 C C++ 或 Java 語 言 來 說, 所 謂 非 結 構 化 程 式 設 計 是 指 初 學 程 式 設 計 時, 不 論 幾 列 的 小 程 式 或 數 百 列 程 式 碼 的 大 程 式, 都 只 有 一 個 main() 主 程 式 且 不 包 含 任 何 流 程 控 制 敘 述 的 情 況 非 結 構 化 程 式 設 計 的 程 式 碼 是 使 用 線 性 方 式 來 依 序 的 執 行, 如 右 圖 所 示 : 缺 點 : p.2-3 3/54 4/54 1
2-1-2 程 序 式 與 結 構 化 程 式 設 計 2-1-3 模 組 化 程 式 設 計 程 序 式 程 式 設 計 是 將 程 式 中 重 複 的 程 式 片 斷 抽 出 成 為 程 序 (Procedures, 或 稱 為 Subroutine Routine) 或 函 數 (Functions), 也 就 是 一 段 執 行 特 定 功 能 的 程 式 區 塊 程 式 因 為 已 經 分 割 成 程 序, 所 以 在 main() 主 程 式 的 程 式 碼 只 是 依 序 呼 叫 不 同 程 序 或 函 數 的 程 序 呼 叫 (Procedure Call) 程 式 是 使 用 流 程 控 制 連 接 程 序, 即 目 前 程 式 設 計 最 常 使 用 的 結 構 化 程 式 設 計, 屬 於 程 序 式 程 式 設 計 的 子 集, 如 右 圖 所 示 : 模 組 化 程 式 設 計 是 程 序 式 程 式 設 計 的 下 一 個 階 段, 為 了 能 夠 重 複 使 用 程 序 式 程 式 設 計 分 割 建 立 的 程 序, 我 們 可 以 將 相 同 功 能 的 程 序 或 函 數 結 合 在 一 起 建 立 成 獨 立 的 模 組 (Modules), 模 組 是 處 理 指 定 功 能 的 子 程 式, 如 下 圖 所 示 : 5/54 6/54 2-1-4 物 件 導 向 程 式 設 計 2-2 抽 象 資 料 型 態 模 組 化 程 式 設 計 是 物 件 導 向 程 式 設 計 的 前 身, 只 是 沒 有 提 供 繼 承 和 多 形 等 物 件 導 向 觀 念 物 件 導 向 程 式 設 計 是 一 種 更 符 合 人 性 化 的 程 式 設 計 方 法, 將 原 來 專 注 於 問 題 的 分 解, 轉 換 成 了 解 問 題 本 質 參 與 的 東 西, 也 就 是 物 件 (Object), 如 下 圖 所 示 : 2-2-1 程 序 或 函 數 抽 象 化 2-2-2 資 料 抽 象 化 2-2-3 抽 象 資 料 型 態 2-2-4 抽 象 資 料 型 態 與 物 件 導 向 7/54 8/54 2
2-2 抽 象 資 料 型 態 物 件 導 向 程 式 設 計 的 精 神 是 資 料 抽 象 化, 透 過 抽 象 資 料 型 態 建 立 電 腦 與 真 實 世 界 之 間 的 橋 樑, 描 述 和 模 擬 真 實 世 界 的 實 體, 即 東 西, 簡 單 的 說, 物 件 導 向 程 式 設 計 就 是 一 種 抽 象 資 料 型 態 的 程 式 設 計 抽 象 化 (Abstraction) 的 主 要 目 的 是 定 義 問 題 的 二 個 屬 性, 如 下 所 示 : 資 料 (Data): 問 題 影 響 的 資 料 操 作 (Operators): 問 題 產 生 的 操 作 2-2-1 程 序 或 函 數 抽 象 化 - 由 上 而 下 的 設 計 方 法 程 序 或 函 數 抽 象 化 (Procedure Abstraction or Function Abstraction) 主 要 是 針 對 傳 統 由 上 而 下 的 設 計 方 法, 將 問 題 分 割 成 一 個 個 子 工 作 由 上 而 下 的 設 計 方 法 (Top-down Design) 是 以 程 序 為 單 位 來 切 割 工 作, 也 就 是 所 謂 的 程 序 式 程 式 設 計 (Procedural Design) 由 上 而 下 的 設 計 方 法 是 一 種 循 序 漸 進 了 解 問 題 的 方 法 筆 者 準 備 使 用 一 個 實 例 來 說 明 分 割 工 作 的 過 程 9/54 10/54 2-2-1 程 序 或 函 數 抽 象 化 - 範 例 例 如 : 目 前 有 一 個 工 作 是 繪 出 房 屋 的 圖 形, 房 屋 圖 形 的 繪 圖 工 作 不 是 一 筆 畫 就 可 以 完 成, 所 以, 我 們 可 以 分 割 成 多 個 小 工 作 來 分 別 處 理, 以 由 上 而 下 的 設 計 方 法 來 了 解 整 個 繪 圖 工 作 的 問 題 2-2-1 程 序 或 函 數 抽 象 化 - 步 驟 1 從 房 屋 繪 圖 工 作 可 以 粗 分 為 三 個 小 工 作, 如 下 所 示 : 繪 出 屋 頂 和 外 框 繪 出 窗 戶 繪 出 門 Call Draw Outline Call Draw Windows Call Draw Door 依 據 上 述 工 作 分 割, 可 以 建 立 各 分 割 小 工 作 之 間 的 模 組 架 構, 如 下 圖 所 示 : 11/54 12/54 3
2-2-1 程 序 或 函 數 抽 象 化 - 步 驟 2 將 第 一 個 小 工 作 繪 出 屋 頂 和 外 框 (Draw Outline) 再 次 進 行 分 割 成 二 個 小 工 作, 如 下 所 示 : 繪 出 屋 頂 繪 出 房 屋 的 外 框 Call Draw Roof Call Draw House Frame 2-2-1 程 序 或 函 數 抽 象 化 - 其 他 步 驟 現 在, 我 們 只 需 重 複 上 述 分 析, 一 步 一 步 向 下 進 行 分 割 工 作, 例 如 : 因 為 窗 戶 有 2 個, 所 以 繪 出 窗 戶 可 以 分 為 繪 出 窗 戶 1 和 繪 出 窗 戶 2 ; 繪 出 門 可 以 分 為 繪 出 門 框 和 繪 出 門 把 最 後, 將 問 題 分 割 成 一 個 個 小 問 題 後, 每 一 個 小 問 題 就 是 一 個 程 序 或 函 數, 只 需 完 成 這 些 程 序 或 函 數 就 可 以 解 決 繪 出 房 屋 的 問 題 13/54 14/54 2-2-1 程 序 或 函 數 抽 象 化 - 程 序 或 函 數 抽 象 化 ( 說 明 ) 在 由 上 而 下 設 計 方 法 分 割 的 程 序 或 函 數 之 中, 我 們 並 不 用 考 量 實 作 的 程 式 碼, 只 需 定 義 好 程 序 或 函 數 使 用 介 面 的 參 數 和 傳 回 值, 將 它 視 為 一 個 黑 盒 子, 換 句 話 說, 程 式 可 以 使 用 任 何 符 合 介 面 的 程 序 或 函 數 來 取 代, 稱 為 程 序 或 函 數 抽 象 化 2-2-1 程 序 或 函 數 抽 象 化 - 程 序 或 函 數 抽 象 化 ( 圖 例 ) 例 如 : 前 述 繪 出 房 屋 問 題, 我 們 可 以 將 問 題 分 解 成 一 個 個 繪 圖 操 作 的 程 序, 其 最 後 結 果 如 下 圖 所 示 : 15/54 16/54 4
2-2-2 資 料 抽 象 化 2-2-3 抽 象 資 料 型 態 - 說 明 資 料 抽 象 化 (Data Abstraction) 是 一 種 方 法 將 基 本 資 料 型 態 的 變 數 組 合 成 複 合 資 料 (Compound Data), 使 用 相 關 函 數 來 處 理 複 合 資 料, 以 便 隱 藏 實 際 複 合 資 料 的 儲 存 方 式 一 般 來 說, 程 式 語 言 如 果 沒 有 支 援 下 一 節 的 抽 象 資 料 型 態, 通 常 就 是 使 用 模 組 化 程 式 設 計 來 建 立 資 料 抽 象 化 例 如 : 使 用 模 組 化 程 式 設 計 建 立 堆 疊 (Stacks) 資 料 結 構, 如 下 圖 所 示 : 抽 象 資 料 型 態 (Abstract Data Type,ADT) 是 使 用 資 料 抽 象 化 的 方 法 建 立 的 自 訂 資 料 型 態, 抽 象 資 料 型 態 包 含 資 料 和 相 關 操 作, 將 資 料 和 處 理 資 料 的 操 作 一 起 思 考, 結 合 在 一 起, 操 作 就 是 對 外 的 使 用 介 面, 如 下 圖 所 示 : 17/54 18/54 2-2-3 抽 象 資 料 型 態 - 範 例 2-2-4 抽 象 資 料 型 態 與 物 件 導 向 - 說 明 我 們 可 以 將 個 人 基 本 資 料 問 題 抽 象 化 成 Person 模 型, 用 來 模 擬 真 實 世 界 的 人 實 體, 內 含 姓 名 name 地 址 address 和 電 話 號 碼 phone 等 資 料,setPerson() 指 定 個 人 資 料, getname() getaddress() 和 getphone() 取 出 個 人 資 料 的 操 作 Person 抽 象 資 料 型 態, 如 下 圖 所 示 : 物 件 導 向 程 式 設 計 的 精 神 是 資 料 抽 象 化 的 抽 象 資 料 型 態, 即 類 別, 物 件 導 向 是 將 問 題 的 資 料 屬 性 和 資 料 本 身 的 相 關 操 作 一 起 思 考, 不 用 考 量 其 他 資 料 或 不 相 關 操 作, 以 便 建 立 一 個 個 完 善 定 義 的 物 件 (Object) 如 果 將 第 2-2-1 節 的 繪 出 房 屋 範 例 看 成 堆 積 木 遊 戲, 房 屋 可 以 使 用 一 個 個 積 木 來 堆 出, 著 重 於 組 成 房 屋 元 件 的 資 料 抽 象 化, 即 房 屋 是 由 房 頂 窗 戶 門 和 外 框 等 物 件 組 成 19/54 20/54 5
2-2-4 抽 象 資 料 型 態 與 物 件 導 向 - 圖 例 2-2-4 抽 象 資 料 型 態 與 物 件 導 向 - 模 擬 真 實 世 界 簡 單 的 說, 物 件 導 向 程 式 設 計 就 是 在 模 擬 真 實 世 界, 以 便 找 出 解 決 問 題 所 需 的 物 件 集 合 和 其 關 係, 在 物 件 之 間 是 使 用 訊 息 建 立 互 動, 透 過 物 件 集 合 之 間 的 合 作 來 解 決 程 式 問 題, 如 下 所 示 : 程 式 = 物 件 + 訊 息 如 同 車 輛 是 由 成 千 上 萬 個 零 件 所 組 裝, 物 件 導 向 程 式 設 計 可 以 視 為 是 一 種 組 裝 工 作, 將 眾 多 現 成 或 擴 充 功 能 的 物 件 結 合 起 來 21/54 22/54 2-3 物 件 導 向 的 思 維 2-3-1 物 件 2-3-2 類 別 2-3 物 件 導 向 的 思 維 物 件 導 向 技 術 源 於 1960 年 代 的 Simula 程 式 語 言, 它 是 Simulation Language 的 簡 稱, 這 是 一 種 模 擬 語 言, 希 望 使 用 電 腦 程 式 來 模 擬 真 實 世 界 的 各 種 處 理 過 程 物 件 導 向 的 思 維 就 是 我 們 現 實 生 活 的 思 維 方 式, 人 類 自 然 的 思 考 方 式, 其 實 各 位 讀 者 早 已 經 知 道, 而 且 一 直 使 用 它 來 思 考 問 題 23/54 24/54 6
2-3-1 物 件 - 說 明 2-3-1 物 件 - 認 知 的 東 西 物 件 的 英 文 是 Object, 在 此 筆 者 討 論 的 是 現 實 生 活 中 的 物 件, 並 不 是 程 式 中 的 物 件, 物 件 的 英 文 原 意 有 物 體 東 西 對 象 和 目 的 換 句 話 說, 物 件 不 見 的 是 一 種 看 得 到 或 摸 得 到 的 實 體, 它 可 能 只 是 一 個 概 念, 一 種 我 們 可 以 認 知 的 東 西, 如 下 圖 所 示 : 物 件 是 一 種 可 以 認 知 的 東 西 例 如 : 我 們 認 知 一 輛 車, 是 因 為 聯 想 到 : 車 子 是 紅 色 車 子 有 四 個 門 車 子 有 四 個 輪 胎 25/54 26/54 2-3-2 類 別 - 說 明 當 識 別 出 物 件 後, 物 件 導 向 技 術 的 抽 象 化 (Abstraction) 就 是 從 物 件 中 抽 出 共 通 部 分 的 特 徵, 排 除 其 詳 細 部 分, 以 物 件 導 向 技 術 來 說, 就 是 將 物 件 抽 象 化 成 為 類 別 (Class) 2-3-2 類 別 - 範 例 例 如 : 紅 色 汽 車 白 色 貨 車 和 銀 色 休 旅 車 抽 象 化 成 陸 上 交 通 工 具 的 車 輛, 然 後 進 一 步 抽 象 化 成 交 通 工 具, 如 下 圖 所 示 : 27/54 28/54 7
2-4 物 件 導 向 技 術 的 三 大 觀 念 2-4-1 物 件 觀 念 2-4-2 訊 息 觀 念 2-4-3 類 別 觀 念 2-4 物 件 導 向 技 術 的 三 大 觀 念 物 件 導 向 技 術 有 三 大 重 要 觀 念 : 物 件 訊 息 和 類 別, 其 簡 單 說 明 如 下 所 示 : 物 件 : 提 供 資 料 和 處 理 資 料 程 序 的 封 裝 訊 息 : 在 物 件 之 間 的 溝 通 方 式, 可 以 建 立 互 動 和 支 援 多 形 類 別 : 物 件 的 分 類, 可 以 實 作 類 別 架 構 的 繼 承 29/54 30/54 2-4-1 物 件 觀 念 - 物 件 簡 介 2-4-1 物 件 觀 念 - 物 件 的 三 種 特 性 物 件 (Object) 是 物 件 導 向 技 術 的 關 鍵, 以 程 式 角 度 來 說, 它 是 電 腦 用 來 模 擬 現 實 生 活 的 東 西 或 事 件, 也 是 組 成 應 用 程 式 的 元 素 物 件 是 資 料 與 相 關 處 理 資 料 的 程 序 和 函 數 結 合 在 一 起 的 組 合 體 資 料 是 變 數, 程 序 和 函 數 稱 為 方 法 (Methods), 如 下 圖 所 示 : 物 件 導 向 技 術 的 物 件 是 對 應 到 現 實 生 活 的 實 體 或 事 件, 擁 有 三 種 特 性, 如 下 所 示 : 狀 態 (State): 物 件 所 有 屬 性 (Attributes) 目 前 的 狀 態 值, 屬 性 是 儲 存 物 件 的 狀 態, 可 以 簡 單 到 只 是 一 個 布 林 值 變 數, 也 可 能 是 另 一 個 物 件 例 如 : 車 子 的 車 型 排 氣 量 色 彩 和 自 排 或 手 排 等 屬 性, 以 程 式 來 說, 也 就 是 資 料 部 分 的 變 數 行 為 (Behavior): 行 為 是 物 件 可 見 部 分 提 供 的 服 務, 也 就 是 塑 模 所 抽 象 化 的 操 作, 可 以 做 什 麼 事? 程 式 語 言 是 使 用 程 序 或 函 數 來 實 作 行 為, 稱 為 方 法, 例 如 : 車 子 可 以 發 動 停 車 加 速 和 換 擋 等 識 別 字 (Identity): 每 一 個 物 件 都 擁 有 獨 一 無 二 的 識 別 字 來 識 別 它 是 不 同 的 物 件 例 如 : 使 用 物 件 參 考 (Reference) 作 為 物 件 的 識 別 字, 即 物 件 實 際 儲 存 的 記 憶 體 位 址 31/54 32/54 8
2-4-1 物 件 觀 念 - 物 件 的 範 例 物 件 可 以 模 擬 真 實 生 活 的 東 西, 例 如 :Car1 物 件 模 擬 一 輛 1800cc 紅 色 四 門 的 Sentra 車 子 Car1 是 物 件 的 識 別 字, 使 用 Car1 識 別 字 就 可 以 在 眾 多 模 擬 其 他 車 輛 的 Car2 Car3 Car4. 物 件 中, 識 別 出 是 哪 一 輛 車 輛 物 件 2-4-1 物 件 觀 念 - 組 合 物 件 組 合 物 件 (Composite Object) 是 指 物 件 的 屬 性 是 另 一 個 物 件, 例 如 : 上 述 Car1 物 件 door 是 整 數 的 車 門 數, 如 果 是 車 門 Door 物 件 時,Car1 物 件 就 是 組 合 物 件 33/54 34/54 2-4-2 訊 息 觀 念 - 訊 息 簡 介 物 件 可 以 模 擬 現 實 生 活 的 東 西, 但 是 現 實 生 活 中 的 東 西 會 彼 此 互 動 例 如 : 學 生 要 求 成 績 ( 學 生 與 成 績 物 件 ) 約 同 學 看 電 影 ( 同 學 與 同 學 物 件 ) 和 學 生 彈 鋼 琴 ( 學 生 與 鋼 琴 物 件 ) 等 互 動 所 以, 我 們 建 立 的 物 件 之 間 也 需 要 互 動, 使 用 的 媒 介 就 是 訊 息 (Messages) 物 件 是 使 用 訊 息 來 模 擬 彼 此 之 間 的 互 動, 換 句 話 說, 訊 息 是 物 件 之 間 的 溝 通 橋 樑, 可 以 啟 動 另 一 個 物 件 來 執 行 指 定 的 行 為 35/54 2-4-2 訊 息 觀 念 - 訊 息 範 例 例 如 :Student 學 生 物 件 需 要 查 詢 成 績, 學 生 成 績 是 儲 存 在 StudentStatus 物 件, 此 時 Student 物 件 可 以 送 一 個 訊 息 給 StudentStatus 物 件, 告 訴 它 需 要 查 詢 學 生 的 成 績, 如 下 圖 所 示 : 36/54 9
2-4-2 訊 息 觀 念 - 訊 息 傳 回 值 2-4-2 訊 息 觀 念 - 循 序 操 作 ( 說 明 ) 在 接 收 物 件 接 到 訊 息 後, 就 會 執 行 指 定 方 法, 然 後 將 回 應 訊 息 送 回 給 發 送 物 件 ( 也 可 能 沒 有 回 應 ), 稱 為 傳 回 值 (Return Value) 或 回 傳 值, 即 查 詢 結 果 的 學 生 成 績, 如 下 圖 所 示 : 物 件 送 出 的 訊 息, 有 可 能 在 接 收 物 件 執 行 方 法 後 就 產 生 回 應 訊 息, 也 有 可 能 是 觸 發 另 一 個 訊 息, 操 作 會 繼 續 送 出 一 系 列 訊 息 給 其 他 物 件, 以 便 依 序 執 行 各 物 件 的 指 定 方 法 來 完 成 整 個 操 作, 稱 為 循 序 操 作 (Sequential Operation), 具 有 先 後 順 序 差 別 37/54 38/54 2-4-2 訊 息 觀 念 - 循 序 操 作 ( 範 例 ) 2-4-2 名 稱 再 用 : 過 載 overload 例 如 : 學 生 平 均 成 績 的 查 詢 是 送 訊 息 到 Teacher 物 件 執 行 average() 方 法,Teacher 物 件 再 觸 發 另 一 個 訊 息 到 StudentStatus 物 件 查 詢 學 生 的 三 科 成 績, 如 下 圖 所 示 : 在 程 序 式 程 式 設 計 的 程 序 或 函 數 名 稱 是 識 別 字, 如 同 變 數 一 般, 需 要 與 其 他 程 序 或 函 數 擁 有 不 同 的 名 稱 例 如 : 分 別 取 得 2 個 和 3 個 參 數 最 大 值 的 函 數, 我 們 需 要 建 立 2 個 不 同 名 稱 的 maxtwo(a1, a2) 和 maxthree(a1, a2, a3) 函 數 對 於 物 件 導 向 技 術 來 說, 物 件 是 依 接 收 的 訊 息 來 執 行 方 法, 訊 息 內 容 有 三 種 資 訊, 只 需 有 差 異 就 足 以 讓 物 件 辨 識 出 是 不 同 的 方 法, 所 以, 方 法 同 名 也 沒 有 關 係 例 如 : 執 行 Utility 物 件 max() 方 法 的 訊 息, 如 下 所 示 : Utility.max(23, 45); Utility.max(23, 45, 87); Utility.max( a, z ); 39/54 40/54 10
2-4-2 名 稱 再 用 : 多 形 多 形 (Polymorphism) 屬 於 另 一 種 名 稱 再 用, 針 對 同 一 個 訊 息, 不 同 的 物 件 擁 有 不 同 的 反 應, 也 就 是 同 一 個 名 稱 擁 有 不 同 的 操 作 因 為 在 人 類 的 思 維 中, 對 於 同 一 種 工 作, 就 算 對 象 不 同, 也 會 使 用 相 同 名 稱 的 操 作, 如 右 圖 所 示 : 2-4-3 類 別 觀 念 - 類 別 簡 介 在 第 2-4-1 節 我 們 模 擬 不 同 車 輛 的 Car1 Car2 Car3 Car4 物 件, 因 為 物 件 都 擁 有 相 同 的 屬 性 和 行 為, 只 是 狀 態 不 同 簡 單 的 說, 這 些 物 件 屬 於 同 一 類 物 件, 所 以 可 以 建 立 名 為 Car 的 範 本 來 建 立 這 些 物 件, 如 同 工 廠 依 照 藍 圖 製 造 車 輛, 此 範 本 就 是 類 別, 屬 於 同 一 類 別 的 物 件 即 該 類 別 的 實 例 (Instance), 也 稱 為 副 本 類 別 也 可 以 想 像 成 扮 演 的 角 色 例 如 : 模 擬 教 室 上 課, 在 同 一 間 教 室 共 有 30 人, 其 中 1 位 是 老 師, 其 他 是 學 生 換 句 話 說, 如 果 每 一 個 人 是 一 個 物 件,30 個 物 件 可 以 進 一 步 分 類 成 屬 於 Teacher 類 別 和 Student 類 別 的 物 件 集 合, 也 就 是 哪 些 物 件 扮 演 老 師 ; 哪 些 物 件 是 學 生 41/54 42/54 2-4-3 類 別 觀 念 - 類 別 是 物 件 的 藍 圖 2-4-3 類 別 觀 念 - 類 別 架 構 : 繼 承 類 別 是 一 種 抽 象 資 料 型 態, 其 目 的 是 建 立 物 件, 使 用 類 別 建 立 的 物 件 稱 為 類 別 的 實 例 (Instance) 例 如 : 使 用 Student 類 別 建 立 29 位 Student 物 件, 這 些 物 件 和 類 別 擁 有 相 同 的 屬 性 和 行 為, 只 是 狀 態 值 不 同, 即 物 件 的 變 數 值 不 同 例 如 : 一 位 學 生 的 姓 名 name 是 陳 會 安, 另 一 位 是 江 小 魚, 如 下 圖 所 示 : 在 前 面 的 例 子 中, 學 生 和 老 師 都 是 人, 換 言 之, 我 們 可 以 先 定 義 Person 類 別 來 模 擬 人 類, 然 後 擴 充 Person 類 別 建 立 Student 和 Teacher 類 別 模 擬 學 生 和 老 師, 稱 為 繼 承 (Inheritance), 如 右 圖 所 示 : 43/54 44/54 11
2-4-3 類 別 觀 念 - 多 重 繼 承 如 果 父 類 別 不 只 一 個, 即 同 時 繼 承 多 個 父 類 別, 稱 為 多 重 繼 承 (Multiple Inheritance), 如 下 圖 所 示 : 45/54 2-4-3 類 別 觀 念 - 類 別 關 係 ( 說 明 ) 類 別 關 係 (Relationships) 是 指 不 同 類 別 之 間 的 關 係 例 如 : 繼 承 是 一 種 Is-a 的 類 別 關 係,UML 稱 為 一 般 關 係 (Gereralization) 結 合 關 係 (Association) 是 在 建 立 類 別 之 間 互 通 訊 息 的 管 道, 一 種 類 別 真 正 擁 有 指 標 指 向 其 他 物 件 的 類 別 關 係, 其 他 物 件 為 其 屬 性 另 外 還 有 強 度 更 強 的 結 合 關 係, 稱 為 成 品 和 零 件 (Whole-Part), 即 Partof 和 Has-a 關 係 46/54 2-4-3 類 別 觀 念 - 類 別 關 係 ( 圖 例 ) 2-4-3 類 別 觀 念 - 類 別 關 係 ( 圖 例 說 明 ) Part-of 和 Has-a 關 係 的 說 明, 如 下 所 示 : Part-of 關 係 : 指 此 類 別 是 其 他 類 別 的 零 件, 以 上 圖 為 例 Wheel 車 輪 和 Driving Computer 行 車 電 腦 是 Car 車 類 別 的 零 件 Has-a 關 係 : 相 反 於 Part-of 關 係,Car 類 別 Has-a 擁 有 Wheel 和 Driving Computer 類 別 47/54 48/54 12
2-4-3 類 別 觀 念 - 抽 象 類 別 2-5 物 件 導 向 程 式 語 言 抽 象 類 別 (Abstract Class) 是 一 種 不 能 完 全 代 表 物 件 的 類 別, 抽 象 類 別 並 不 能 建 立 實 例, 只 是 擁 有 眾 多 類 別 的 共 同 部 分, 其 主 要 目 的 是 作 為 其 他 類 別 的 父 類 別 例 如 : 哺 乳 類 動 物 的 分 類, 如 右 圖 所 示 : 2-5-1 物 件 導 向 程 式 語 言 的 特 點 2-5-2 常 用 的 物 件 導 向 程 式 語 言 49/54 50/54 封 裝 2-5-1 物 件 導 向 程 式 語 言 的 特 點 - 封 裝 封 裝 (Encapsulation) 是 將 資 料 和 處 理 資 料 的 程 序 與 函 數 組 合 起 來 建 立 物 件 在 C++ C# 和 Java 語 言 定 義 物 件 是 使 用 類 別 (Class), 內 含 屬 性 和 方 法, 屬 於 一 種 抽 象 資 料 型 態 (Abstract Data Type), 換 句 話 說, 就 是 替 程 式 語 言 定 義 新 的 資 料 型 態 繼 承 2-5-1 物 件 導 向 程 式 語 言 的 特 點 - 繼 承 繼 承 (Inheritance) 是 物 件 的 再 利 用, 當 定 義 一 個 類 別 後, 其 他 類 別 可 以 繼 承 這 個 類 別 的 資 料 和 方 法, 並 且 新 增 或 取 代 繼 承 物 件 的 資 料 和 方 法 51/54 52/54 13
多 形 2-5-1 物 件 導 向 程 式 語 言 的 特 點 - 多 形 多 形 (Polymorphism) 屬 於 物 件 導 向 最 複 雜 的 特 性, 類 別 如 果 需 要 處 理 各 種 不 同 資 料 型 態 時, 並 不 需 要 針 對 不 同 資 料 型 態 來 建 立 不 同 的 類 別, 可 以 直 接 繼 承 基 礎 類 別, 也 就 是 繼 承 此 類 別 建 立 同 名 方 法 來 處 理 不 同 的 資 料 型 態, 因 為 方 法 的 名 稱 相 同, 只 是 程 式 碼 不 同, 所 以 也 稱 為 同 名 異 式 2-5-2 常 用 的 物 件 導 向 程 式 語 言 最 早 的 物 件 導 向 程 式 語 言 是 Simula, 這 是 在 1960 年 代 末 期 Norweigian Computing Center 開 發 的 程 式 語 言, 接 著 是 1970 年 代 由 Xerox Palo Alto 研 發 中 心 開 發 的 Smalltalk 語 言, 目 前 比 較 重 要 的 物 件 導 向 程 式 語 言 有 : Java C++.NET 的 C#.NET 的 Visual Basic 53/54 54/54 14