第九章 物件導向技術
內容大綱 學習目標 第一節 導論 第二節 物件導向的基本概念 第三節 物件導向的系統開發方法 第四節 物件導向分析與設計及塑模工具 第五節 結論
學習目標 詳讀本章,你至少能瞭解: 物件導向的基本概念。 物件導向系統開發的過程與產出。 物件導向分析與設計的塑模工具。
導論 物件導向技術是繼結構化技術之後,系統開發上的另一新思維典範。 物件導向之觀念起源於模擬語言,以物件模式來描述真實系統,並將資料抽象化、封裝、繼承、同名異式與超荷的觀念融入於物件系統開發中。
物件導向的基本觀念(1/9) 物件導向的重要基本觀念 物件 類別 封裝 繼承 同名異式 超荷
物件導向的基本觀念(2/9) 物件 物件是物件導向的基本思維單位,物件是一個具有狀態、行為與識別的實體或抽象化概念,且其行為會影響其狀態者。 物件包括 名稱 屬性 操作或稱方法 例如李四之物件,有年齡、朋友、雙手與雙腿等為其屬性,而跳躍與走路為其操作。
物件導向的基本觀念(3/9) 類別 類別是具有相同結構及行為的物件所組成的集合。一個類別是一種定義、樣板或模型,它描述一群具有相同特徵(例如,屬性、操作、語意)的物件。 類別是物件經分類或抽象化後所得的結果,也就是將物件抽象化,剔除物件間的差異而只考慮其相同的性質後,將這些物件組成一個群體稱為類別。例如,人。
圖9-1 類別之表示
物件導向的基本觀念(4/9) 類別使用一組相同的屬性和操作來描述一個或多個物件,包含如何從類別中建立新的物件。類別有時亦稱為物件類型,類別中的任一物件稱為該類別之案例,因此物件與案例常被互用(視為同義詞)。
物件導向的基本觀念(5/9) 封裝 物件導向技術將資料及操作此資料的所有方法包裝成一個物件,稱之為「封裝」。封裝所形成的物件,其結構可分為兩部分,一是定義物件外觀行為的介面部分;另一則是存放抽象化的結果以及如何達成外觀行為的實作部分。
物件導向的基本觀念(6/9) 封裝將物件的實作細節隱藏,使其與外界環境隔離,而只允許該物件所包含之操作修改其資訊,稱為資訊隱藏。物件之操作執行物件之行為,並可修改物件之資訊。 使用物件時,僅需知道物件提供何種操作,而不需知道其內部之資訊或行為是如何表達或執行。外界之物件僅能透過訊息傳遞,要求該物件提供服務,而無法逕自改變該物件之資料內容。 封裝之特性使物件導向的系統較容易維護。
物件導向的基本觀念(7/9) 繼承 繼承是類別間之關係,在此關係中,某類別之資料結構與行為可供其關係中之類別分享。 繼承之特性可利用一般化與特殊化的原則,萃取相關子類別的相同屬性和操作,並將之歸類為一個父類別來達成。 在物件導向技術中,繼承概念之運用對軟體工程有革命性之影響,如達成程式碼再用與減少重複描述,產生可靠度較高的軟體等。
圖9-2 類別間之繼承關係
物件導向的基本觀念(8/9) 同名異式與超荷 同名異式意指「多種型式」,簡稱「多型」,即利用相同名稱的操作,但以不同的方式處理不同類別的資料。 超荷就是在同一個類別中,用相同名稱的操作處理資料,然而每個操作的參數個數、參數資料類型不可完全相同。超荷有時又稱靜態多型。
圖9-3 類別間之繼承關係與多型
物件導向的基本觀念(9/9) 運用多型或超荷之特性在程式設計上,可允許不同(或相同)的物件(或類別)定義相同的操作名稱,俟程式執行時依動態連結的方法,判斷訊息參數的個數、種類與資料類型來決定運作的物件或操作。運用多型或超荷之目的,是希望以相同的介面來處理不同的物件或相同的物件但不同的操作方式,以簡化系統發展的複雜性並增加其彈性。
圖9-10 UML之版本與年代演進
物件導向分析與設計及塑模工具(2/16) 統一塑模語言是一種規格化、視覺化及文件化的軟體塑模語言,共使用以下圖形進行塑模: 使用個案圖 類別圖 物件圖 循序圖 合作圖 狀態圖 活動圖 元件圖 部署圖
物件導向分析與設計及塑模工具(3/16) 使用個案圖 UML之使用個案圖是引用Jacobson方法中的使用個案模式,從使用者之觀點描述系統的行為者與系統間之互動行為與關係。從內部觀點來看,使用個案可描述系統做什麼?從外部觀點來看,它可描述行為者與系統如何互動?
物件導向分析與設計及塑模工具(4/16) 類別圖 UML之類別圖是引用Booch與Rumbaugh方法論的類別圖,主要用以表示系統存在之物件型態(或稱類別)及各物件型態間的靜態資料結構與邏輯關係,也表達類別之屬性、操作與類別間連結之限制等。 物件圖 UML之物件圖是用來描述一系統於某一時間點的靜態資料結構,該圖由一群相關之物件及其連結所組成,以表示系統在某一時間點之例子。
物件導向分析與設計及塑模工具(5/16) 循序圖 UML之循序圖是結合Booch的互動圖與Rumbaugh的訊息追蹤圖而成,主要用以描述系統運作時物件間的互動行為,且著重以時間之先後順序為主軸,以表達物件間的訊息傳遞與處理程序。一個循序圖會有一個與之對應的合作圖,但表達的重點與方式不同。
物件導向分析與設計及塑模工具(6/16) 合作圖(溝通圖) UML之合作圖是從 Booch的物件互動圖與 Rumbaugh 的物件導向資料流程圖改進而成,該圖主要表達相關物件間之連結結構,並能同時展現物件間的資料流程、控制流程與訊息傳遞的活動。因此,合作圖是一個巨觀的總流程,能同步表達資料的產生與資料轉變的過程,以改進傳統資料流程圖中只著重資料流的缺點。
物件導向分析與設計及塑模工具(7/16) 狀態圖 UML之狀態圖是結合 Booch 的狀態轉移圖與 Rumbaugh 的動態模式而成,用以表達物件在其生命週期中的狀態變化。狀態圖是以微觀物件為主,細分物件所發生的各項事件,並表達物件生命週期之狀態轉變及活動結果。 活動圖 UML之活動圖是狀態圖的一種變異,該圖表達涉及於執行某一作業行為中之活動。一個活動圖描述一群循序與同步的活動,一個活動狀態表示一個工作流程步驟或一個運算的執行活動。
物件導向分析與設計及塑模工具(8/16) 元件圖 UML之元件圖起源於 Booch 的模組圖,用以說明系統設計過程各類別與物件的配置,以及敘述軟體元件間的組織架構和相依關係。元件是開發和執行過程之實際物件類別,將可分解的實際基本單位模組化,這些基本單位包括模組並擁有特性和明確定義的介面。 部署圖 UML之部署圖起源於 Booch 的處理圖,它用來說明系統各處理器、處理元件的配置、關聯,以及同一處理器內執行處理的時程安排等。
物件導向分析與設計及塑模工具(9/16) Booch 等人(2005)從概念面提出五個連鎖觀點的軟體系統結構(參考圖9-6)︰ 使用個案觀點 設計觀點 流程觀點 實施觀點 部署觀點
圖9-6 五個連鎖觀點的軟體系統結構
物件導向分析與設計及塑模工具(10/16) 使用個案觀點 由描述系統行為的使用個案組成,這些系統行為是由使用者、系統分析師、測試者的觀點來描述,並不實際描述軟體系統的組織。 設計觀點 由類別、介面與合作組成,這些是來自於描述問題及其解決方法中之詞彙描述。這個觀點主要支援系統的功能需求,表達系統應提供給使用者之服務。
物件導向分析與設計及塑模工具(11/16) 流程觀點 由執行緒與流程所組成,這些是來自於系統的平行與同步機制,這個觀點主要表達系統之績效、產出與可擴充性。 實施觀點 由可以不同方式組裝實際可運作系統之獨立的元件與檔案所組成,這個觀點主要表達系統版本的結構配置管理。 部署觀點 由構成系統之硬體類型的節點所組成,這個觀點主要表達組成實際系統之零件的分配、傳遞訊息與安裝。
物件導向分析與設計及塑模工具(12/16) 應用UML,使用個案觀點的靜態面可用使用個案圖表示;設計觀點的靜態面可用類別圖與物件圖表示;流程觀點的靜態面可用類別圖與物件圖表示,但以主動類別表達執行緒與流程;實施觀點的靜態面可用元件圖表示;部署觀點的靜態面可用部署圖表示。而上述各觀點的動態面均由互動圖(循序圖與合作圖之統稱)、狀態圖與活動圖表示。
物件導向分析與設計及塑模工具(13/16) 從系統實作面來說,上述五個觀點配合物件導向的分析與設計(包括需求分析、系統分析與設計)之活動,可具體地將之分成六種塑模: 需求塑模 物件資料結構塑模 物件互動行為塑模 作業行為塑模 使用者介面塑模 系統元件與結構塑模
物件導向分析與設計及塑模工具(14/16) 需求塑模 主要是應用使用個案圖、活動圖(或流程圖)、藍圖、資料詞彙與介面元件等工具進行使用者與企業需求塑模,此活動可包含處理使用個案觀點靜態面之工作。 物件資料結構塑模 主要的工具是類別圖與物件圖,此活動可包含處理設計觀點靜態面之工作。
物件導向分析與設計及塑模工具(15/16) 物件互動行為塑模 主要的工具是循序圖與合作圖。 作業行為塑模 主要的塑模工具是活動圖與狀態圖。 物件互動行為塑模與作業行為塑模,這兩個活動可包含處理各觀點之動態面工作。
物件導向分析與設計及塑模工具(16/16) 使用者介面塑模 主要的塑模工具是介面結構圖、介面藍圖與元件規格、狀態圖與轉換表。 系統元件與結構塑模 主要的工具是元件圖與部署圖,這個活動可包含實施觀點與部署觀點之靜態工作。 上述有關之物件導向塑模活動及塑模工具摘述如圖 9-7。
圖9-7 物件導向塑模活動及塑模工具
圖9-8 物件導向分析與設計與塑模工具之關係
結論 物件導向之系統開發過程是一種反覆的程序,主要包括需求分析、系統分析與設計、實施與測試等階段。 其中,需求分析主要以使用個案圖作為表達工具;而系統分析與設計主要以類別圖、物件圖、循序圖、合作圖、狀態圖、活動圖、元件圖與部署圖等表達。 物件導向應用一些重要的觀念包括物件、類別、封裝、繼承與同名異式及超荷等,使物件導向系統有別於結構化之系統。由於物件導向技術之引進,使軟體之開發與維護更有效率,亦提升了程式的再用性與可維護性。
圖9-9 分析與設計和塑模工具:結構化vs.物件導向