770 likes | 992 Views
物件導向技術 Object Oriented Technology. 內容大綱. 導論 物件導向的基本概念 物件導向分析與設計及塑模工具 物件導向的系統開發方法 使用個案 (Use Case) 塑模 物件類別塑模 結論. 導論. 物件導向的基本概念 物件導向的演進( p.18-28 可略) 物件導向的系統開發方法 : Rational Unified Process (RUP) 分析與設計及塑模工具 : 統一塑模語言 (Unified Modeling Language, UML). Costs and Benefits of Reuse( 再用或重用). 4.
E N D
內容大綱 • 導論 • 物件導向的基本概念 • 物件導向分析與設計及塑模工具 • 物件導向的系統開發方法 • 使用個案(Use Case)塑模 • 物件類別塑模 • 結論
導論 • 物件導向的基本概念 • 物件導向的演進(p.18-28可略) • 物件導向的系統開發方法:Rational Unified Process(RUP) • 分析與設計及塑模工具:統一塑模語言(Unified Modeling Language, UML)
結構化vs.物件導向方法論 • 結構化的方法論 • 主要是以處理(Process,或稱流程)及資料為中心。 • 將問題分解成為一群處理。對於每個處理,如果其執行邏輯還是很複雜,可以再將它分解成為更小的處理。 • 對於資料也是如此。 • 物件導向的方法論 • 強調物件以及物件跟物件之間的關係。 • 物件將資料與處理(在物件導向的世界,稱為操作或是方法)封裝起來。
物件導向技術 • 物件導向分析 • 定義出系統的模型。主要是利用類別或是概念模型以及物件的觀點來分析、檢驗系統的需求。 • 物件導向設計 • 定義出一個以物件為設計規範的系統實作藍圖。主要在勾勒出邏輯的、具體的,以及靜態的、和動態的系統模型。 • 物件導向程式設計 • 使用物件導向程式語言,依據分析與設計的要求與規範來開始實作系統。
物件(Object) • 物件導向的基本思維單位 • 物件是一個具有狀態、行為與識別的實體或抽象化概念,且其行為會影響其狀態者。 • 狀態:物件在任何時間點的狀況,影響著它會如何進行。 • 行為:物件可以做些什麼?它如何回應事件與刺激? • 辨識性:每個物件都是獨一無二的。
物件(Object) • 將前述狀態、行為與識別結構化後,物件包括 • 名稱 • 屬性 • 操作或稱方法(Method) • 例如李四之物件,有年齡、朋友、雙手與雙腿等為其屬性,而跳躍與走路為其操作。
類別(Class) • 定義:具有相同結構及行為的物件所組成的集合。具一種定義、樣板或模型,描述一群具有相同特徵(例如,屬性、操作、語意)的物件。 • 是物件經分類或抽象化後所得的結果,也就是剔除物件間的差異而只考慮其相同的性質後,將這些物件組成一個群體稱為類別。例如,人。 • 使用一組相同的屬性和操作來描述一個或多個物件,包含如何從類別中建立新的物件。 • 有時亦稱為物件類型,類別中的任一物件稱為該類別之案例,因此物件與案例常被互用(視為同義詞)。
分類(Classification)與繼承(Inheritance) • 分類:萬事萬物基本上是依層級來分類,如界門綱目科屬種。 • 類別間之關係可利用一般化(generalization)與特殊化(specialization)的原則,找出繼承之特性,萃取相關子類別的相同屬性和操作,並將之歸類為一個父類別來達成。
特殊化層級架構 更一般化 父(supper或譯為超) 類別 人 員工 客戶 供應商 月薪人員 週薪人員 時薪人員 更特殊化 子(sub)類別 業務助理 駕駛 清潔工
分類(Classification)與繼承(Inheritance) • 此概念之運用對軟體工程有革命性之影響 • 使用一般化,能建立邏輯結構,讓類別間的相似或相異程度更為精確。 • 層級架構可以延伸,使得適應變動狀況相對簡單。 • 達成程式碼再用與減少重複描述,產生可靠度較高的軟體等。
封裝(Encapsulation) • 將資料及操作此資料的所有方法包裝成一個物件,稱之為「封裝」。封裝所形成的物件結構可分為兩部分: • 定義物件外觀行為的介面部分; • 存放抽象化的結果以及如何達成外觀行為的實作部分。 • 封裝將物件的實作細節隱藏,使其與外界環境隔離,而只允許該物件所包含之操作修改其資訊,稱為資訊隱藏(Information Hiding)。 • 使用物件時,僅需知道物件提供何種操作,而不需知道其內部之資訊或行為是如何表達或執行。外界之物件僅能透過訊息傳遞,要求該物件提供服務,而無法逕自改變該物件之資料內容。 • 封裝之特性使物件導向的系統較容易維護。
同名異式(Polymorphism)與超荷(Overload) 同名異式:指「多種型式」,簡稱「多型」,即利用相同名稱的操作,但以不同的方式處理不同類別的資料。 超荷:在同一個類別中,用相同名稱的操作處理資料,然而每個操作的參數個數、參數資料類型不可完全相同。有時又稱靜態多型。 運用多型或超荷之特性在程式設計上,可允許不同(或相同)的物件(或類別)定義相同的操作名稱,俟程式執行時依動態連結的方法,判斷訊息參數的個數、種類與資料類型來決定運作的物件或操作。 運用多型或超荷之目的,是希望以相同的介面來處理不同的物件或相同的物件但不同的操作方式,以簡化系統發展的複雜性並增加其彈性。
<<entity>> Campaign title campaignStartDate campaignFinishDate getCampaignAdverts() <<entity>> addNewAdvert() Campaign title campaignStartDate campaignFinishDate getCampaignAdverts() addNewAdvert() Polymorphism in Resize Operations
物件導向的系統開發方法之啟始 • Grady Booch於1986年,率先發表物件導向的系統開發方法,以開啟物件導向在軟體工程上應用的新頁。 • 許多物件導向系統分析與設計方法論陸續發表,較著名如: • Rambaugh, J.的物件塑模技術 • Jacobson, I.的物件導向軟體工程 • RUP模式
物件導向的系統開發方法-Booch方法 • 將系統開發過程分成觀念期、分析期、設計期、進化期與維護期等反覆的階段。 • 觀念期:確定軟體之核心需求,例如找出系統之行為者、使用個案與問題描述等。 • 分析階段:從問題領域的字彙中發掘類別與物件; • 設計階段:應用邏輯模式與實體模式,幫助建構系統架構。
物件導向的系統開發方法 • 靜態模式表達系統之靜態行為 • 邏輯模式以類別圖與物件圖定義系統的邏輯概念; • 實體模式以模組圖和處理圖表達系統之軟硬體架構。 • 動態模式 • 以狀態轉移圖和互動圖來描述系統之動態行為。 • 上述六種圖示中,類別圖從系統邏輯的觀點,描述與系統有關之類別和類別間之關係;物件圖用於表示在系統之邏輯設計上,存在之物件和物件間之互動與訊息傳遞之關係;而互動圖用於追蹤物件圖中情節的執行,例如訊息傳遞與操作之關係。
物件導向的系統開發方法-處理圖 • 用以表示系統實體設計上,處理器間之配置,單純的處理圖可表達一個系統的處理架構 。三個重要元件是: • 處理器以 表示 • 設備(以 表示) • 連結(以線條表示)。 例如把一個大系統分解成四個部分,分別稱為A、B、C與D,每個部分由一個工作站來完成,且僅A可分別與B、C、D連結,B、C與D間不能直接互通。為簡化圖示,設備可不表示如右。
物件導向的系統開發方法-模組圖 • 用以表示系統之實體設計上,模組內類別與物件的配置。有四元件: • 主程式 • 規格 • 主體 • 子系統 • 假設有六個模組分別為A、B、C、D、E與F,其中A與B表示規格說明,且僅提供共同之類型與限制,而其他四個模組表示規格與主體且組成一群,其中D與B相依於C;E與F相依於D;A相依於D、E與F。
物件導向的系統開發方法-狀態轉移圖 • 用於表示在已知之類別狀態中,類別從某一狀態轉移到另一狀態之事件,以及因狀態改變而導致之行動,也就是用它來表示系統之資料被存取與功能被執行的程序中,時間相依的系統行為。 • 在 On-line 系統與 Real-time 系統,常用於塑模功能與資料間之時間相依關係。
物件導向的系統開發方法-Rumbaugh 之OMT方法 • 將系統開發過程分成三階段。 • 觀念形成:以環境圖描述系統範圍,並以使用個案描述行為者與系統之互動。 • 物件導向分析:以觀念形成階段之結果,進一步的建構物件模式、動態模式與功能模式等。 • 物件導向設計:包含系統設計與物件設計。
物件導向的系統開發方法-Jacobson方法 • 將系統開發過程分成三階段: • 分析過程:瞭解系統功能需求,發展成一個完整且可修改與維護之物件架構,並產出: • 需求模式:包括使用個案模式與介面描述, • 分析模式:將需求模式中之系統以物件圖或類別圖表達成一個完整、穩健且具備更改彈性的物件架構,包括系統擁有之資訊、行為與系統對外界之介面。 • 建構過程:依分析過程產生之模式建構系統,該過程分成設計與實施兩步驟,並分別產出設計模式與實施模式。
物件導向的系統開發方法-RUP (Rational Unified Process)模式 • 於1998年由Jacobson等人提出。 • 結合螺旋模式的概念,以反覆與漸增的原理進行軟體開發,每一次的反覆需產出一個可運作的系統版本,並評估風險,以盡早發現問題。 • 可分動態與靜態兩個構面說明: • 動態面:分初始、詳述、建構與轉移四主要軟體發展階段,構成一個反覆週期。 • 靜態面:包括企業模型、需求、分析與設計、實作、測試、配置、專案管理、組態管理與變動管理、環境等九個核心流程。其中,前六項是軟體工程工作,而後六項是管理支援工作。
物件導向的系統開發方法-RUP模式(cont’d) • 一項核心流程元素主要描述 • 誰做了什麼 • 如何做 • 什麼時候做 • 每個核心流程以四種塑模元件來描述: • 工作人員 • 活動 • 產出 • 工作流程
Rational Unified Process(RUP) • Grady Booch, Jim Rumbaugh以及Ivar Jacobson於1998年提出了Rational Unified Process (RUP) - 物件導向系統開的方法論。 • 強調重點 • 由使用案例驅動(Use-Case Driven) • 從使用者的角度,捕捉系統提供的功能 • 以架構為中心(Architecture Centric) • 定義分明的(4+1觀點)系統架構藍圖 • 反覆且漸進(Iterative and Incremental) • 週期性的、小型、循序式的開發過程。每期的結果做為下個週期的輸入。
RUP模式的構面 • 水平軸代表時間,顯示進行中的動態組成面,並且從循環(cycle),階段(phase),反覆(iteration)等觀念來描述。 • 垂直軸代表進行中的靜態組成面,利用活動,產出,工作流程等觀念來描述
物件導向分析與設計及塑模工具-統一塑模語言(Unified Modeling Language) • Rational公司整合Booch、Rumbaugh與Jacobson三種方法而提出的物件導向塑模工具,該語言最早可說起源於Booch 與 Rumbaugh在1995年10月提供給OOPSLA的統一方法,當初的版本是 Version 0.8。 • 1996年,Rational公司將統一方法加入Jacobson的研究(例如使用個案模式等)及其他,並將版本更新為Version 0.9,且正式定名。
UML五 (4+1)連鎖觀點 • Booch 等人(1999)從概念面提出的軟體系統結構觀點(view)︰
UML五 (4+1)連鎖觀點 • 使用個案觀點(Use Case View) • 從系統外部的使用者角度,表達系統所提供的功能。並不實際描述軟體系統的組織。 • 設計觀點(Design View) • 描繪系統的靜態結構及動態行為,作為系統應提供使用者之服務及功能的解答。圍繞在類別,介面以及物件的合作等等設計問題上。 • 流程觀點(Process View) • 描繪出組成系統的平行以及同步機制之執行緒(thread)以及程序(process)。強調系統的性能、擴充性等非功能性需求。 • 實施觀點(Implementation View) • 以模組或元件來顯示設計觀點的物件是在那一個模組或元件中實作。 • 部署觀點(Deployment View) • 描繪系統在執行時,各個組成元件的實際佈置與安裝。強調系統執行環境的硬體拓樸結構。
UML五 (4+1)連鎖觀點之靜態vs.動態結構 • 4+1中的每一個觀點又可區分為靜態面以及動態面,均用UML的九種圖形來表達。
UML九種塑模圖形 • 使用個案圖 • 類別圖 • 物件圖 • 循序圖 • 合作圖 • 狀態圖 • 活動圖 • 元件圖 • 部署圖
UML塑模工具 • 使用個案圖 • 從使用者之觀點描述系統的行為者與系統間之互動行為與關係。從內部觀點來看,使用個案可描述系統做什麼?從外部觀點來看,它可描述行為者與系統如何互動? • 類別圖 • 用以表示系統存在之物件型態(或稱類別)及各物件型態間的靜態資料結構與邏輯關係,也表達類別之屬性、操作與類別間連結之限制等。 • 物件圖 • 用來描述一系統於某一時間點的靜態資料結構,該圖由一群相關之物件及其連結所組成,以表示系統在某一時間點之例子。
UML塑模工具 • 循序圖 • 描述系統運作時物件間的互動行為,且著重以時間之先後順序為主軸,以表達物件間的訊息傳遞與處理程序。一個循序圖會有一個與之對應的合作圖,但表達的重點與方式不同。 • 合作圖 • 從 Booch的物件互動圖與 Rumbaugh 的物件導向資料流程圖改進而成,該圖主要表達相關物件間之連結結構,並能同時展現物件間的資料流程、控制流程與訊息傳遞的活動。因此,合作圖是一個巨觀的總流程,能同步表達資料的產生與資料轉變的過程,以改進傳統資料流程圖中只著重資料流的缺點。
UML塑模工具 • 狀態圖 • 結合 Booch 的狀態轉移圖與 Rumbaugh 的動態模式而成,用以表達物件在其生命週期中的狀態變化。狀態圖是以微觀物件為主,細分物件所發生的各項事件,並表達物件生命週期之狀態轉變及活動結果。 • 活動圖 • 狀態圖的一種變異,該圖表達涉及於執行某一作業行為中之活動。一個活動圖描述一群循序與同步的活動,一個活動狀態表示一個工作流程步驟或一個運算的執行活動。
UML塑模工具 • 元件圖 • 起源於 Booch 的模組圖,用以說明系統設計過程各類別與物件的配置,以及敘述軟體元件間的組織架構和相依關係。元件是開發和執行過程之實際物件類別,將可分解的實際基本單位模組化,這些基本單位包括模組並擁有特性和明確定義的介面。 • 部署圖 • 起源於 Booch 的處理圖,它用來說明系統各處理器、處理元件的配置、關聯,以及同一處理器內執行處理的時程安排等。
物件導向分析與設計塑模 • 需求塑模 • 主要是應用使用個案圖、活動圖(或流程圖)、藍圖、資料詞彙與介面元件等工具進行使用者與企業需求塑模,此活動可包含處理使用個案觀點靜態面之工作。 • 物件資料結構塑模 • 主要的工具是類別圖與物件圖,此活動可包含處理設計觀點靜態面之工作。 • 物件互動行為塑模 • 主要的工具是循序圖與合作圖。
物件導向分析與設計塑模 • 作業行為塑模 • 主要的塑模工具是活動圖與狀態圖。 • 物件互動行為塑模與作業行為塑模,這兩個活動可包含處理各觀點之動態面工作。 • 使用者介面塑模 • 主要的塑模工具是介面結構圖、介面藍圖與元件規格、狀態圖與轉換表。 • 系統元件與結構塑模 • 主要的工具是元件圖與部署圖,這個活動可包含實施觀點與部署觀點之靜態工作。
使用案例圖 Use Case
使用案例(Use Case) • 針對使用者在不同情境下,對系統需求所產生的系統行為或系統功能描述。 • 參與者(Actors):與系統互動的外部實體。包含能與系統交換資訊的人和物。 • 使用者(Users)是任何使用系統的人,而參與者則代表著使用者所扮演的角色。同一個使用者可以扮演多種角色。例如:威廉同時扮演著老師和指導教授兩種角色。