物件導向技術 object oriented technology

75
1 物物物物物物 物物物物物物 Object Oriented Technology Object Oriented Technology

Upload: clarke-stephenson

Post on 03-Jan-2016

38 views

Category:

Documents


4 download

DESCRIPTION

物件導向技術 Object Oriented Technology. 內容大綱. 導論 物件導向的基本概念 物件導向分析與設計及塑模工具 物件導向的系統開發方法 使用個案 (Use Case) 塑模 物件類別塑模 結論. 導論. 物件導向的基本概念 物件導向的演進( p.18-28 可略) 物件導向的系統開發方法 : Rational Unified Process (RUP) 分析與設計及塑模工具 : 統一塑模語言 (Unified Modeling Language, UML). Costs and Benefits of Reuse( 再用或重用). 4. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 物件導向技術 Object Oriented Technology

11

物件導向技術物件導向技術Object Oriented TechnologyObject Oriented Technology

Page 2: 物件導向技術 Object Oriented Technology

22

內容大綱內容大綱

• 導論– 物件導向的基本概念– 物件導向分析與設計及塑模工具– 物件導向的系統開發方法

• 使用個案 (Use Case) 塑模• 物件類別塑模• 結論

Page 3: 物件導向技術 Object Oriented Technology

33

導論導論• 物件導向的基本概念• 物件導向的演進( p.18-28 可略)• 物件導向的系統開發方法 :Rational Unified

Process(RUP)• 分析與設計及塑模工具 : 統一塑模語言 (Unified

Modeling Language, UML)

Page 4: 物件導向技術 Object Oriented Technology

444

Costs and Benefits of Reuse(Costs and Benefits of Reuse( 再用或重用)再用或重用)

Page 5: 物件導向技術 Object Oriented Technology

• 結構化的方法論– 主要是以處理 (Process ,或稱流程)及資料為中心。– 將問題分解成為一群處理。對於每個處理,如果其執行邏

輯還是很複雜,可以再將它分解成為更小的處理。– 對於資料也是如此。

• 物件導向的方法論– 強調物件以及物件跟物件之間的關係。– 物件將資料與處理 ( 在物件導向的世界,稱為操作或是方

法 ) 封裝起來。

結構化結構化 vs.vs. 物件導向方法論物件導向方法論

55

Page 6: 物件導向技術 Object Oriented Technology

• 物件導向分析– 定義出系統的模型。主要是利用類別或是概念模型以及物

件的觀點來分析、檢驗系統的需求。• 物件導向設計

– 定義出一個以物件為設計規範的系統實作藍圖。主要在勾勒出邏輯的、具體的,以及靜態的、和動態的系統模型。

• 物件導向程式設計– 使用物件導向程式語言,依據分析與設計的要求與規範來

開始實作系統。

物件導向技術物件導向技術

66

Page 7: 物件導向技術 Object Oriented Technology

77

物件物件 (Object)(Object)

• 物件導向的基本思維單位• 物件是一個具有狀態、行為與識別的實體或抽象化

概念,且其行為會影響其狀態者。– 狀態:物件在任何時間點的狀況,影響著它會如何進行。– 行為:物件可以做些什麼?它如何回應事件與刺激?– 辨識性:每個物件都是獨一無二的。

Page 8: 物件導向技術 Object Oriented Technology

88

物件物件 (Object)(Object)

• 將前述狀態、行為與識別結構化後,物件包括– 名稱– 屬性– 操作或稱方法 (Method)

• 例如李四之物件,有年齡、朋友、雙手與雙腿等為其屬性,而跳躍與走路為其操作。

Page 9: 物件導向技術 Object Oriented Technology

99

類別類別 (Class)(Class)

• 定義:具有相同結構及行為的物件所組成的集合。具一種定義、樣板或模型,描述一群具有相同特徵(例如,屬性、操作、語意)的物件。– 是物件經分類或抽象化後所得的結果,也

就是剔除物件間的差異而只考慮其相同的性質後,將這些物件組成一個群體稱為類別。例如,人。

– 使用一組相同的屬性和操作來描述一個或多個物件,包含如何從類別中建立新的物件。

– 有時亦稱為物件類型,類別中的任一物件稱為該類別之案例,因此物件與案例常被互用(視為同義詞)。

Page 10: 物件導向技術 Object Oriented Technology

1010

分類分類 (Classification)(Classification) 與繼承與繼承 (Inheritance)(Inheritance)

• 分類 : 萬事萬物基本上是依層級來分類,如界門綱目科屬種。

• 類別間之關係可利用一般化 (generalization) 與特殊化(specialization) 的原則,找出繼承之特性,萃取相關子類別的相同屬性和操作,並將之歸類為一個父類別來達成。

Page 11: 物件導向技術 Object Oriented Technology

特殊化層級架構特殊化層級架構

員工 客戶 供應商

月薪人員 週薪人員 時薪人員

駕駛 清潔工 業務助理

更一般化父( supper 或譯為超)

類別

更特殊化子( sub )類別

Page 12: 物件導向技術 Object Oriented Technology

1212

分類分類 (Classification)(Classification) 與繼承與繼承 (Inheritance)(Inheritance)

• 此概念之運用對軟體工程有革命性之影響– 使用一般化,能建立邏輯結

構,讓類別間的相似或相異程度更為精確。

– 層級架構可以延伸,使得適應變動狀況相對簡單。

– 達成程式碼再用與減少重複描述,產生可靠度較高的軟體等。

Page 13: 物件導向技術 Object Oriented Technology

1313

分類分類 (Classification)(Classification) 與繼承與繼承 (Inheritance)(Inheritance)

Page 14: 物件導向技術 Object Oriented Technology

1414

封裝封裝 (Encapsulation)(Encapsulation)• 將資料及操作此資料的所有方法包裝成一個物件,

稱之為「封裝」。封裝所形成的物件結構可分為兩部分 :– 定義物件外觀行為的介面部分;– 存放抽象化的結果以及如何達成外觀行為的實作部分。

• 封裝將物件的實作細節隱藏,使其與外界環境隔離,而只允許該物件所包含之操作修改其資訊,稱為資訊隱藏 (Information Hiding) 。

• 使用物件時,僅需知道物件提供何種操作,而不需知道其內部之資訊或行為是如何表達或執行。外界之物件僅能透過訊息傳遞,要求該物件提供服務,而無法逕自改變該物件之資料內容。

• 封裝之特性使物件導向的系統較容易維護。

Page 15: 物件導向技術 Object Oriented Technology

1515

同名異式同名異式 (Polymorphism)(Polymorphism) 與超荷與超荷 (Overload)(Overload)

同名異式:指「多種型式」,簡稱「多型」,即利用相同名稱的操作,但以不同的方式處理不同類別的資料。

超荷:在同一個類別中,用相同名稱的操作處理資料,然而每個操作的參數個數、參數資料類型不可完全相同。有時又稱靜態多型。

運用多型或超荷之特性在程式設計上,可允許不同(或相同)的物件(或類別)定義相同的操作名稱,俟程式執行時依動態連結的方法,判斷訊息參數的個數、種類與資料類型來決定運作的物件或操作。

運用多型或超荷之目的,是希望以相同的介面來處理不同的物件或相同的物件但不同的操作方式,以簡化系統發展的複雜性並增加其彈性。

Page 16: 物件導向技術 Object Oriented Technology

1616

類別間之繼承關係與多型類別間之繼承關係與多型

Page 17: 物件導向技術 Object Oriented Technology

1717

Polymorphism in Resize OperationsPolymorphism in Resize Operations

Campaign

titlecampaignStartDatecampaignFinishDate

getCampaignAdverts()addNewAdvert()

<<entity>>

Campaign

titlecampaignStartDatecampaignFinishDate

getCampaignAdverts()addNewAdvert()

<<entity>>

Page 18: 物件導向技術 Object Oriented Technology

OOOO 演進演進

1818

Page 19: 物件導向技術 Object Oriented Technology

1919

物件導向的系統開發方法之啟始物件導向的系統開發方法之啟始

• Grady Booch於 1986 年,率先發表物件導向的系統開發方法,以開啟物件導向在軟體工程上應用的新頁。

• 許多物件導向系統分析與設計方法論陸續發表,較著名如:– Rambaugh, J. 的物件塑模技術– Jacobson, I. 的物件導向軟體工程– RUP 模式

Page 20: 物件導向技術 Object Oriented Technology

2020

物件導向的系統開發方法-物件導向的系統開發方法- BoochBooch 方法方法• 將系統開發過程分成觀念期、分析期、設計期、

進化期與維護期等反覆的階段。– 觀念期:確定軟體之核心需求,例如找出系統之行為

者、使用個案與問題描述等。 – 分析階段:從問題領域的字彙中發掘類別與物件;– 設計階段:應用邏輯模式與實體模式,幫助建構系統架構。

Page 21: 物件導向技術 Object Oriented Technology

2121

物件導向的系統開發方法物件導向的系統開發方法• 靜態模式表達系統之靜態行為

– 邏輯模式以類別圖與物件圖定義系統的邏輯概念;– 實體模式以模組圖和處理圖表達系統之軟硬體架構。

• 動態模式– 以狀態轉移圖和互動圖來描述系統之動態行為。

• 上述六種圖示中,類別圖從系統邏輯的觀點,描述與系統有關之類別和類別間之關係;物件圖用於表示在系統之邏輯設計上,存在之物件和物件間之互動與訊息傳遞之關係;而互動圖用於追蹤物件圖中情節的執行,例如訊息傳遞與操作之關係。

Page 22: 物件導向技術 Object Oriented Technology

2222

物件導向的系統開發方法-處理圖物件導向的系統開發方法-處理圖• 用以表示系統實體設計上,處理器間

之配置,單純的處理圖可表達一個系統的處理架構 。三個重要元件是:– 處理器以     表示– 設備(以 表示)– 連結(以線條表示)。

例如把一個大系統分解成四個部分,分別稱為 A、 B、 C與 D ,每個部分由一個工作站來完成,且僅 A 可分別與 B、 C、 D連結, B、 C與 D 間不能直接互通。為簡化圖示,設備可不表示如右。

Page 23: 物件導向技術 Object Oriented Technology

2323

物件導向的系統開發方法-模組圖物件導向的系統開發方法-模組圖• 用以表示系統之實體設計上,模組內類

別與物件的配置。有四元件:– 主程式– 規格– 主體– 子系統

• 假設有六個模組分別為 A、 B、C、D、E與 F ,其中 A與 B表示規格說明,且僅提供共同之類型與限制,而其他四個模組表示規格與主體且組成一群,其中D與 B 相依於 C; E與 F 相依於 D; A相依於 D、 E與 F 。

Page 24: 物件導向技術 Object Oriented Technology

2424

物件導向的系統開發方法-狀態轉移圖物件導向的系統開發方法-狀態轉移圖• 用於表示在已知之類別狀態中,類別從某一狀態轉移到另一狀態之事件,以及因狀態改變而導致之行動,也就是用它來表示系統之資料被存取與功能被執行的程序中,時間相依的系統行為。

• 在 On-line 系統與 Real-time 系統,常用於塑模功能與資料間之時間相依關係。

Page 25: 物件導向技術 Object Oriented Technology

2525

物件導向的系統開發方法-物件導向的系統開發方法- Rumbaugh Rumbaugh 之之OMTOMT 方法方法

• 將系統開發過程分成三階段。• 觀念形成:以環境圖描述系統範圍,並以使用個案

描述行為者與系統之互動。• 物件導向分析:以觀念形成階段之結果,進一步的

建構物件模式、動態模式與功能模式等。• 物件導向設計:包含系統設計與物件設計。

Page 26: 物件導向技術 Object Oriented Technology

2626

物件導向的系統開發方法-物件導向的系統開發方法- JacobsonJacobson 方法方法• 將系統開發過程分成三階段:

– 分析過程:瞭解系統功能需求,發展成一個完整且可修改與維護之物件架構,並產出:

• 需求模式:包括使用個案模式與介面描述,• 分析模式:將需求模式中之系統以物件圖或類別圖表達

成一個完整、穩健且具備更改彈性的物件架構,包括系統擁有之資訊、行為與系統對外界之介面。

– 建構過程:依分析過程產生之模式建構系統,該過程分成設計與實施兩步驟,並分別產出設計模式與實施模式。

Page 27: 物件導向技術 Object Oriented Technology

2727

物件導向的系統開發方法-物件導向的系統開發方法- RUP (Rational RUP (Rational Unified Process)Unified Process) 模式模式

• 於 1998 年由 Jacobson 等人提出。• 結合螺旋模式的概念,以反覆與漸增的原理進行軟

體開發,每一次的反覆需產出一個可運作的系統版本,並評估風險,以盡早發現問題。

• 可分動態與靜態兩個構面說明:– 動態面:分初始、詳述、建構與轉移四主要軟體發展階段,

構成一個反覆週期。– 靜態面:包括企業模型、需求、分析與設計、實作、測試、配置、專案管理、組態管理與變動管理、環境等九個核心流程。其中,前六項是軟體工程工作,而後六項是管理支援工作。

Page 28: 物件導向技術 Object Oriented Technology

2828

物件導向的系統開發方法物件導向的系統開發方法 -RUP-RUP 模式模式 (cont’d)(cont’d)

• 一項核心流程元素主要描述– 誰做了什麼– 如何做– 什麼時候做

• 每個核心流程以四種塑模元件來描述:– 工作人員– 活動– 產出– 工作流程

Page 29: 物件導向技術 Object Oriented Technology

物件導向的系統開發方法物件導向的系統開發方法

2929

Page 30: 物件導向技術 Object Oriented Technology

• Grady Booch, Jim Rumbaugh 以及 Ivar Jacobson 於 1998 年提出了 Rational Unified Process (RUP) - 物件

導向系統開的方法論。• 強調重點

– 由使用案例驅動 (Use-Case Driven) • 從使用者的角度,捕捉系統提供的功能

– 以架構為中心 (Architecture Centric) • 定義分明的 (4+1 觀點 ) 系統架構藍圖

– 反覆且漸進 (Iterative and Incremental)• 週期性的、小型、循序式的開發過程。每期的結果做為下個週期的輸入。

Rational Unified ProcessRational Unified Process(RUP)(RUP)

3030

Page 31: 物件導向技術 Object Oriented Technology

3131

RUPRUP 模式的構面模式的構面• 水平軸代表時間,顯示進行中的動態組成面,並且從循環 (cycle) ,階段

(phase) ,反覆 (iteration) 等觀念來描述。• 垂直軸代表進行中的靜態組成面,利用活動,產出,工作流程等觀念來描述

Page 32: 物件導向技術 Object Oriented Technology

3232

RUPRUP 模式生命週期階段、目標與里程碑模式生命週期階段、目標與里程碑

Page 33: 物件導向技術 Object Oriented Technology

統一塑模語言統一塑模語言 (Unified Modeling (Unified Modeling Language)Language)

3333

Page 34: 物件導向技術 Object Oriented Technology

3434

物件導向分析與設計及塑模工具物件導向分析與設計及塑模工具 -- 統一塑模統一塑模語言語言 (Unified Modeling Language)(Unified Modeling Language)

• Rational公司整合 Booch、 Rumbaugh與Jacobson三種方法而提出的物件導向塑模工具,該語言最早可說起源於 Booch 與 Rumbaugh在1995年 10月提供給 OOPSLA 的統一方法,當初的版本是 Version 0.8 。

• 1996 年, Rational公司將統一方法加入Jacobson 的研究(例如使用個案模式等)及其他,並將版本更新為 Version 0.9 ,且正式定名。

Page 35: 物件導向技術 Object Oriented Technology

3535

UMLUML 之版本與年代演進之版本與年代演進

Page 36: 物件導向技術 Object Oriented Technology

3636

UMLUML五 五 (4+1)(4+1)連鎖觀點連鎖觀點• Booch 等人 (1999) 從概念面提出的軟體系統結

構觀點 (view)︰

Page 37: 物件導向技術 Object Oriented Technology

3737

• 使用個案觀點 (Use Case View)– 從系統外部的使用者角度,表達系統所提供的功能。並不實際描述軟

體系統的組織。• 設計觀點 (Design View)

– 描繪系統的靜態結構及動態行為,作為系統應提供使用者之服務及功能的解答。圍繞在類別,介面以及物件的合作等等設計問題上。

• 流程觀點 (Process View)– 描繪出組成系統的平行以及同步機制之執行緒 (thread) 以及程序

(process) 。強調系統的性能、擴充性等非功能性需求。• 實施觀點 (Implementation View)

– 以模組或元件來顯示設計觀點的物件是在那一個模組或元件中實作。• 部署觀點 (Deployment View)

– 描繪系統在執行時,各個組成元件的實際佈置與安裝。強調系統執行環境的硬體拓樸結構。

UMLUML五 五 (4+1)(4+1)連鎖觀點連鎖觀點

Page 38: 物件導向技術 Object Oriented Technology

• 4+1 中的每一個觀點又可區分為靜態面以及動態面,均用 UML 的九種圖形來表達。

UMLUML五 五 (4+1)(4+1)連鎖觀點之靜態連鎖觀點之靜態 vs.vs. 動態結動態結構構

靜態模型 動態模型

使用案例觀點 使用案例圖 互動圖、狀態圖、活動圖

設計觀點 類別圖、物件圖 互動圖、狀態圖、活動圖

處理流程觀點 類別圖、物件圖 互動圖、狀態圖、活動圖

實作觀點 元件圖 互動圖、狀態圖、活動圖

部署觀點 部署圖 互動圖、狀態圖、活動圖

Page 39: 物件導向技術 Object Oriented Technology

3939

UMLUML九種塑模圖形九種塑模圖形• 使用個案圖• 類別圖• 物件圖• 循序圖• 合作圖• 狀態圖• 活動圖• 元件圖• 部署圖

Page 40: 物件導向技術 Object Oriented Technology

4040

UMLUML 塑模工具塑模工具• 使用個案圖

– 從使用者之觀點描述系統的行為者與系統間之互動行為與關係。從內部觀點來看,使用個案可描述系統做什麼?從外部觀點來看,它可描述行為者與系統如何互動?

• 類別圖– 用以表示系統存在之物件型態(或稱類別)及各物件型態間的靜

態資料結構與邏輯關係,也表達類別之屬性、操作與類別間連結之限制等。

• 物件圖– 用來描述一系統於某一時間點的靜態資料結構,該圖由一群相關

之物件及其連結所組成,以表示系統在某一時間點之例子。

Page 41: 物件導向技術 Object Oriented Technology

4141

UMLUML 塑模工具塑模工具• 循序圖

– 描述系統運作時物件間的互動行為,且著重以時間之先後順序為主軸,以表達物件間的訊息傳遞與處理程序。一個循序圖會有一個與之對應的合作圖,但表達的重點與方式不同。

• 合作圖– 從 Booch 的物件互動圖與 Rumbaugh 的物件導向資

料流程圖改進而成,該圖主要表達相關物件間之連結結構,並能同時展現物件間的資料流程、控制流程與訊息傳遞的活動。因此,合作圖是一個巨觀的總流程,能同步表達資料的產生與資料轉變的過程,以改進傳統資料流程圖中只著重資料流的缺點。

Page 42: 物件導向技術 Object Oriented Technology

4242

UMLUML 塑模工具塑模工具

• 狀態圖– 結合 Booch 的狀態轉移圖與 Rumbaugh 的動態模式

而成,用以表達物件在其生命週期中的狀態變化。狀態圖是以微觀物件為主,細分物件所發生的各項事件,並表達物件生命週期之狀態轉變及活動結果。

• 活動圖– 狀態圖的一種變異,該圖表達涉及於執行某一作業行

為中之活動。一個活動圖描述一群循序與同步的活動,一個活動狀態表示一個工作流程步驟或一個運算的執行活動。

Page 43: 物件導向技術 Object Oriented Technology

4343

UMLUML 塑模工具塑模工具• 元件圖

– 起源於 Booch 的模組圖,用以說明系統設計過程各類別與物件的配置,以及敘述軟體元件間的組織架構和相依關係。元件是開發和執行過程之實際物件類別,將可分解的實際基本單位模組化,這些基本單位包括模組並擁有特性和明確定義的介面。

• 部署圖– 起源於 Booch 的處理圖,它用來說明系統各處理器、

處理元件的配置、關聯,以及同一處理器內執行處理的時程安排等。

Page 44: 物件導向技術 Object Oriented Technology

4444

物件導向分析與設計塑模物件導向分析與設計塑模• 需求塑模

– 主要是應用使用個案圖、活動圖(或流程圖)、藍圖、資料詞彙與介面元件等工具進行使用者與企業需求塑模,此活動可包含處理使用個案觀點靜態面之工作。

• 物件資料結構塑模– 主要的工具是類別圖與物件圖,此活動可包含處理設

計觀點靜態面之工作。• 物件互動行為塑模

– 主要的工具是循序圖與合作圖。

Page 45: 物件導向技術 Object Oriented Technology

4545

• 作業行為塑模– 主要的塑模工具是活動圖與狀態圖。– 物件互動行為塑模與作業行為塑模,這兩個活動可包

含處理各觀點之動態面工作。• 使用者介面塑模

– 主要的塑模工具是介面結構圖、介面藍圖與元件規格、狀態圖與轉換表。

• 系統元件與結構塑模– 主要的工具是元件圖與部署圖,這個活動可包含實施

觀點與部署觀點之靜態工作。

物件導向分析與設計塑模物件導向分析與設計塑模

Page 46: 物件導向技術 Object Oriented Technology

4646

物件導向塑模活動及塑模工具物件導向塑模活動及塑模工具

Page 47: 物件導向技術 Object Oriented Technology

4747

物件導向分析與設計與塑模工具之關係物件導向分析與設計與塑模工具之關係

Page 48: 物件導向技術 Object Oriented Technology

4848

使用案例圖Use Case

Page 49: 物件導向技術 Object Oriented Technology

4949

使用案例使用案例 (Use Case)(Use Case)

• 針對使用者在不同情境下,對系統需求所產生的系統行為或系統功能描述。

• 參與者 (Actors) :與系統互動的外部實體。包含能與系統交換資訊的人和物。

• 使用者 (Users) 是任何使用系統的人,而參與者則代表著使用者所扮演的角色。同一個使用者可以扮演多種角色。例如:威廉同時扮演著老師和指導教授兩種角色。

Page 50: 物件導向技術 Object Oriented Technology

5050

使用案例使用案例

Page 51: 物件導向技術 Object Oriented Technology

5151

Definitions and SymbolsDefinitions and Symbols 符號與定義符號與定義

Use Case 使用案例Actor參與者Boundary 系統範圍Connection連結Include relationship

Extend relationship

<<include>>

<<extend>>

51

Page 52: 物件導向技術 Object Oriented Technology

5252

符號與定義 符號與定義 • 系統範圍內包含所有相關的使用案例。

– 系統範圍為系統和外部環境的分隔線。– 使用案例在系統範圍內。– 參與者在系統範圍外。– 以方形形狀代表。

• 連結為參與者和使用案例間的關聯。– 描述使用的關係。– 連結並非資料流。– 以線條連結參與者和使用案例。– 使用案例間的連結為箭號。

Page 53: 物件導向技術 Object Oriented Technology

5353

符號與定義符號與定義• 延伸 (Extend) 關係 : 一個使用案例會為另外一個

使用案例增加新的行為或動作。– 藉由新增行為或動作以延伸使用案例。– 特殊的使用案例可延伸通用的使用案例。

• 包含 (Include) 關係 : 一個使用案例使用另一個使用案例的功能。– 標明該使用案例可為另一個使用案例使用。– 連結到共用功能, 可為任一個使用案例使用。

Page 54: 物件導向技術 Object Oriented Technology

5454

使用案例延伸關係使用案例延伸關係• 「客戶新增訂單,但只有在執行了確認訂購的動作後,「倉庫出貨清單」以及「計算訂購金額與營業稅」才會被延伸(或安插)到新增訂單的使用案例中。

使用線上輔助說明

執行ATM交易_______

extension points選擇

顧客

《extends》顧客使用自動提款機( ATM )時,可以選擇線上輔助說明,以查看相關操作明細

Page 55: 物件導向技術 Object Oriented Technology

5555

使用案例使用案例包含包含 (include)(include) 關係關係• 一個使用案例 A 在執行的過程中,一定會使用到使用案例

B ,案例 A 會包含(使用)案例 B

案例A(包含者) 案例B(被包含者)《include》

提款

更新帳戶餘額

《include》顧客

Page 56: 物件導向技術 Object Oriented Technology

5656

使用案例相依關係使用案例相依關係指一個使用案例必須等待另一個使用案例執行完後才能執行的關係 。– 有助於確定使用案例的發展

順序。– 以帶有箭頭的直線表示,開

始於一個使用案例,並指向它所依賴的使用案例。

– 相依關係標記為 <<depends on>> 。

Page 57: 物件導向技術 Object Oriented Technology

5757

使用案例繼承關係使用案例繼承關係繼承繼承 當兩個或以上的角色分享相同行為時,亦即啟動相同的使用案例()

Page 58: 物件導向技術 Object Oriented Technology

5858

使用案例繼承關係(補充)使用案例繼承關係(補充)

訂票

電話訂票 網路訂票

動作項目1 動作項目2

動作項目3

動作項目4

使用案例1

使用案例2

使用案例3

建立一個共同的抽象角色,讓其他專屬角色繼承此一抽象角色可做的行為

建立一個共同的使用案例,讓其他專屬的使用案例繼承此一共同使用案例可做的活動內容

Page 59: 物件導向技術 Object Oriented Technology

5959

撰寫使用案例撰寫使用案例

• 使用案例的內容可用一段簡單的文字來描述它。也有人建議使用樣板 (template) 來讓使用案例呈現該具備的重要資訊。

• 其他需要的資料包含:– 使用案例撰寫的詳細程度(詳細到簡略)。– 組織內部或外部的哪些成員是系統成功的關鍵人員。– 哪些組織或環境事件可能觸發使用案例以及系統無法運作時可能產生的後果。

Page 60: 物件導向技術 Object Oriented Technology

6060

電子商務應用:塑模過程使用使用案例電子商務應用:塑模過程使用使用案例

• 吉姆決定嘗試以使用案例圖來對松谷家具的網路商店系統進行塑模。– 他找出六個高階的系統功能作為使用案例。– 他詳細列出了網路商店網站的主要特色與相對應功能(如表 6-5 ) 。

– 這些功能代表網路商店的活動。

Page 61: 物件導向技術 Object Oriented Technology

6161

圖 6-26 網路商店使用案例圖

Page 62: 物件導向技術 Object Oriented Technology

6262

物件與類別圖Object and Class Diagram

Page 63: 物件導向技術 Object Oriented Technology

6363

物件與類別圖物件與類別圖

• 物件:一個在應用領域有明確定義的實體,並且有狀態(資料)、行為和識別特性。

• 狀態:包含物件的特性(屬性和關係)以及這些特性的值。

• 行為:一個物件如何行動和反應的表示方法。• 身分:獨特性,沒有任何兩個物件是相同的。• 物件類別(或簡稱類別)具有相同(或相似)屬

性、關聯和行為(方法)的邏輯物件群組。

Page 64: 物件導向技術 Object Oriented Technology

6464

物件與類別的表示方式物件與類別的表示方式

• 類別圖:顯示物件導向模型的靜態結構:物件類別、類別內部的結構以及類別間關係。

• 類別如同 E-R 中的實體。• 操作:由類別的所有實例,藉由訊息的傳送引發

物件的行為,所提供的功能或服務。• 封裝:以外在介面呈現物件,而隱藏內部實作的細節之技術。

Page 65: 物件導向技術 Object Oriented Technology

6565

操作的種類 操作的種類

• 建構子操作:建立類別的新實體的操作。• 查詢操作:可存取物件狀態但是不能改變狀態的

操作。• 更新操作:改變物件態的操作。• 範圍操作:應用於類別而非用於物件實體操作。

Page 66: 物件導向技術 Object Oriented Technology

6666

關聯的表示方式關聯的表示方式• 關聯:物件類別的實例間的關係。• 關聯角色:每個關聯會有兩個端點,於端點上標示角色名稱。

• 多重性:指明有多少個物件參與關聯。– 0…10 代表最小為 0最大為 10– 1,2 代表可為 1或 2– * 代表任何數字

• UML 中的關聯如同 E-R 中關係,而 UML 中的多重性如同 E-R 中的基數。

Page 67: 物件導向技術 Object Oriented Technology

6767

關聯的表示方式關聯的表示方式

圖 8-24 不同關係度下的關聯範例

Page 68: 物件導向技術 Object Oriented Technology

6868

關聯類別的表示方式關聯類別的表示方式• 關聯類別:當關聯本身具有屬性、操作或是當它參與其他類別間關係。– UML 中的關聯類別如同 E-R 中的關聯實體。– 一般化和繼承透過 UML 中的父類別/子類別實作,在

E-R 中則是超型態/子型態。

Page 69: 物件導向技術 Object Oriented Technology

6969

一般化的表示方式 一般化的表示方式 • 抽象類別:本身無直接實例,但是它們子類別卻卻可以有直接實例。

• 具象類別:擁有直接實例的類別。

Page 70: 物件導向技術 Object Oriented Technology

7070

一般化的表示方式一般化的表示方式• UML字彙

– 重疊: 繼承者可以繼承一個以上的子類別。– 分離:繼承者無法繼承一個以上的子類別。– 完全:所有子類別皆已定義。– 非完全:部分子類別已經被定義,但是已知子類別清

單並不完整。• 類別範圍屬性:描述全體類別的共用數值,而非

單一實例的特定數值。• 抽象操作:定義操作的形式或協定,但不包含真正的實作方法。

• 方法:操作的實作。

Page 71: 物件導向技術 Object Oriented Technology

7171

一般化的表示方式 一般化的表示方式

圖 8-30 多型、抽象操作,類別範圍屬性和排序

Page 72: 物件導向技術 Object Oriented Technology

7272

聚合的表示方式聚合的表示方式• 聚合:一種元件物件聚合物件間的從屬關係。

– 在聚合端使用空心的菱形來表示。 • 組合:只屬於一個整體物件的零件物件,與整體

物件同生共死。– 實心的菱形代表兩個物件的關係是組合。

Page 73: 物件導向技術 Object Oriented Technology

7373

聚合和組合聚合和組合

圖 8-31 聚合和組合

Page 74: 物件導向技術 Object Oriented Technology

7474

結論結論• 物件導向之系統開發過程是一種反覆的程序,主要包

括需求分析、系統分析與設計、實施與測試等階段。• 需求分析主要以使用個案圖作為表達工具;而系統分

析與設計主要以類別圖、物件圖、循序圖、合作圖、狀態圖、活動圖、元件圖與部署圖等表達。

• 物件導向應用一些重要的觀念包括物件、類別、封裝、繼承與同名異式及超荷等,使物件導向系統有別於結構化之系統。由於物件導向技術之引進,使軟體之開發與維護更有效率,亦提升了程式的再用性與可維護性。

Page 75: 物件導向技術 Object Oriented Technology

7575

結構化結構化 vs.vs. 物件導向塑模工具物件導向塑模工具