Transcript 物件導向技術
物件導向系統分析與設計與 UML 1 目錄 • • • • 物件導向的基本觀念 物件導向塑模語言UML簡介 UML各圖形介紹 結論 2 物件導向的基本觀念 • 物件導向技術(Object-Oriented Technique) 是繼結構 化技術之後,系統開發上另一新的典範(Paradigm) 。 • 物件導向的優點: –更接近人類思維方式 –程式的重複使用 –程式易維護 –程式易擴展 • 由於物件導向技術之引進,使軟體之開發與 維護更有效率,亦提升了程式的再用性與可 維護性。 3 物件導向的基本觀念(c.2) • 物件導向的重要基本觀念包括: – – – – – 物件 類別 封裝 繼承 同名異式 4 物件導向的基本觀念(c.3) 物件(Object) – 物件是物件導向的基本思維單位,物件是一個 具有識別(Identity)、狀態(State)與行為 (Behavior) 的實體(Entity)或抽象化概念 (Abstract Concept),物件的行為會影響其狀態。 – 物件包括: • 名稱(Name)─識別 • 屬性(Attributes)─資料,其內容代表物件的狀態 • 操作 (Operations)或稱方法(Methods)─行為 – 例如物件名稱李四,有生日、年齡、住址、身 高、體重與性別等為其屬性,而跳躍與走路為 其操作。 5 物件導向的基本觀念(c.4) 類別(Class) – 類別是具有相同結構及行為的物件所組成的集 合。一個類別是一種定義(Definition)、樣板 (Template)或模子(Mold),它是許多物件共同特 徵的一種描述。 – 類別是物件經分類與抽象化後所得的結果。 – 將物件抽象化,就是剔除物件間的差異,而只 考慮其相同的性質,然後組成一個群體,稱為 類別。 6 物件導向的基本觀念(c.5) – 類別包括: • 名稱(Name) • 屬性(Attributes) • 操作 (Operations)或稱方 法(Methods) – 例如:人類是一類別名 稱,有生日、年齡、住 址、身高、體重與性別 等為其屬性,而跳躍與 走路為其操作。 class name attributes: operations: 類別的表示法 7 物件導向的基本觀念(c.6) 封裝(Encapsulation) – 將資料及使用此資料的所有方法包裝成一個物 件,謂之。 – 也就是,物件是資料與方法『封裝』的結果。 資料與方法被 封裝在一起 8 物件導向的基本觀念(c.7) – 封裝將物件的實作細節隱藏,使其與外界環境 隔離,而只允許該物件之方法修改其資料,稱 為資訊隱藏(Information Hiding)。 –物件中的資料必須透過物件的方法取用,只要 物件的方法對存取作控制,外界的物件便無法 取用內部的資料,而達成物件保護的目的。 – 封裝之特性使物件導向的系統較容易維護。 9 物件導向的基本觀念(c.8) method #2 method #1 data method #3 method #6 data method #5 method #4 修改存取內部的資料 10 物件導向的基本觀念(c.9) 繼承(Inheritance) – 繼承是類別間之關係,在此關係中某類別之資 料結構與行為可供其關係中之類別分享。 –繼承者稱為子類別(Subclass),被繼承者稱為父 類別(Superclass)。 –子類別將由父類別繼承來的屬性(變數、資料結 構)或方法(行為)重新定義的動作稱為覆寫 (overriding)。 11 物件導向的基本觀念(c.10) 人類 男人 女人 繼承 12 物件導向的基本觀念(c.11) – 繼承之特性可利用一般化(Generalization) 的原則,萃取相關子類別的相同屬性和 操作,並將之歸類為一個父類別來達成。 – 相反的,利用特殊化(Specialization)的原 則,可以找出一個父類別的相關子類別。 13 物件導向的基本觀念(c.12) –類別的方法供本身及其所有子類別共用, 因而達到程式的重用效果。 – 在物件導向技術中,繼承概念之運用對 軟體工程有革命性之影響,如達成程式 碼重用(Reuse),及產生可靠度較高的軟 體等。 14 物件導向的基本觀念(c.13) 同名異式(Polymorphism) – Polymorphism意指多種型式,簡稱多型, 指的是一個方法可以有許多型式,也就 是,相同的方法名稱,定義以不同的實 作(implementation)。 – 多型的目的是希望簡化系統發展的複雜 性並增加其彈性。 15 物件導向的基本觀念(c.14) 物件導向程式語言 –如Java、C++、Ada、Small Talk、Object Pascal 等。 16 物件導向塑模語言UML簡介 • 統一塑模語言(Unified Modeling Language, UML) 是一種規格化(Specifying) 、視覺化(Visualizing)及 文件化(Documenting)的軟體塑模語言,第一版 UML包含以下九種圖形: – – – – – – – – – 使用個案圖 類別圖 物件圖 循序圖 合作圖 狀態圖 活動圖 元件圖 部署圖 17 物件導向塑模語言UML簡介 (c.2) • 需求分析主要以使用個案圖作為表達工具。 • 而系統分析與設計主要以類別圖、物件圖、 循序圖、、狀態圖、合作圖、元件圖與部署 圖表達。 18 物件導向塑模語言UML簡介(c.3) 1. 使用個案圖 – 表示系統的使用個案和行為者之間互動的關係。 2. 類別圖 – 表示系統存在之類別以及類別間的邏輯關係, 該圖是UML模式圖的核心。 19 物件導向塑模語言UML簡介(c.4) 3. 物件圖 – 是用予描述一系統於某一時間點的靜態結構,該 圖由一群相關之物件及其連結所組成,以表示系 統在某一時間點之一例子。 4. 循序圖 – 用以描述系統運作時,物件間的互動行為且著重 以時間為主軸的處理程序。 20 物件導向塑模語言UML簡介(c.5) 5. 合作圖 – 該圖能同時展現物件間的資料流程、控制流程與 訊息傳遞的活動。因此,合作圖是一個宏觀的總 流程,能同步表達資料的產生與資料轉變的過程。 6. 狀態圖 – 用以表達物件在其生命週期中的狀態變化。狀態 圖是以微觀物件為主,細分物件所發生的各項事 件,並表達物件生命週期之狀態轉變及活動結果。 21 物件導向塑模語言UML簡介(c.6) 7. 活動圖 – 該圖表達涉及於執行某一作業行為中之活動。一個活動圖 描述一群循序與同步的活動,一個活動狀態表示一個工作 流程步驟或一個運算的執行活動。 8.元件圖 – 它用來說明一群實體的軟體元件間的靜態結構關係,及說 明其建構之細節。 9. 部署圖 – 它用來說明系統各軟硬體元件的配置與關聯。 22 分析與設計的流程 23 使用個案圖 • 使用個案圖主要是由行為者(Actors)和使 用個案(Use Cases)兩個元件所組成,它 標示行為者與使用個案間之互動,及使用 個案間之關聯。 24 使用個案圖(c.2) • 一個使用個案是系統中一系列相關的事件, 以完成某一特定工作,並對系統之行為者產 生可衡量的價值。 • 一個使用個案就是行為者透過介面要求系統 所做一系列相關的事件,有起點亦有終點。 • 範例: 25 使用個案圖(c.3) 行為者 26 使用個案圖(c.4) 27 使用個案圖(c.5) 使用個案之描述: 28 類別圖與物件圖 • 類別是具有相同結構及行為的物件所組成 的集合。 • 一個類別是一種定義(Definition)、樣板 (Template)或模子(Mold),它是許多物件共 同特徵的一種描述。 29 類別圖與物件圖(c.2) • 類別具有名稱、屬性與操作。類別常由矩 形表示。 名稱 屬性 操作 • 物件亦常用矩形表示,名稱下加底線。 名稱 屬性 操作 30 類別圖與物件圖(c.3) • 類別圖是用來描述系統中的類別,以及類 別間之關係。 • 物件圖是用於描述一系統於某一時間點的 系統影像(Snapshot) 。 31 類別圖與物件圖(c.4) • 類別間之關係與表示符號 – – – – 相依(Dependency) 一般化(Generalization)/繼承 關聯(Association) 實現化(Realization) 32 類別圖與物件圖(c.5) 類別圖 33 類別圖與物件圖(c.6) 物件圖 34 循序圖 • 循序圖主要表達類別圖中各類別之物件間 的訊息傳遞及操作。 • 基本上,描述各類別之物件間互動行為, 需對每一個使用個案之類別圖建構一個對 應的循序圖。 35 循序圖(c.2) • 循序圖基本上是由下列元件所組成: – – – – – – 物件、 訊息、 操作、 生命線、 控制焦點、 框架 (UML 2 加入)。 36 循序圖(c.3) 37 循序圖(c.4) • 框架 – 框架(Frame)是一種圖示標記,用以表達循序圖 中,某一區段範圍內的一連串訊息與操作組合 之控制流程、輸入、輸出等。 – 在循序圖中,框架之表達並非必須,使用者可 依情況自行決定是否要表達。 38 循序圖(c.5) – 多選一(Alternative) 39 合作圖 • 合作圖主要也是用於描述物件間之互動行 為。 • 合作圖與循序圖合稱為互動圖。 – 循序圖著重以時間發生順序來表達物件間的訊 息傳遞與處理之程序; – 合作圖著重表達物件間之連結結構,並能同時 展現物件間的訊息傳遞與處理之程序。 40 合作圖(c.2) • 合作圖基本上是由下列元件所組成: – – – – 物件 連結 訊息 操作 41 狀態圖 • 若某物件或系統在其生命週期(從行為開 始到結束)中有較複雜的狀態改變時,而 這些改變在互動圖中不易表達,則可以用 狀態圖詳細表達其所有狀態與狀態間之轉 換。 • 對較單純者,不一定需要用狀態圖表達。 • 狀態圖也可用於表達某一使用個案、許多 使用個案、子系統、使用者介面等等。 • 除軟體外,也可表達硬體之狀態轉換。 42 狀態圖(c.2) • 狀態圖之主要元件包括: – 狀態(states) – 轉換(transitions) • 一個狀態是一個被描述者在其生命週期中 之一個情況(situation),在此情況中,它 滿足某條件,可能正等待某些事件的發生, 且可能正在執行某活動。 •具深度的狀態:其內部的子狀態組成 一狀態圖,描述其細部狀態轉換。 43 狀態圖(c.3) •狀態之轉換: 事件[成立條件]/動作 Event [Guard] / Action 此三個部分是具有選擇性的,不一定要同時都 具備。 44 狀態圖(c.4) • 描述洗衣機的狀態圖 系統閒置 啟動 [電源接通] / 打開開關 停止 / 關閉開關 注水 [注水完畢] / 關閉開關 停止 洗滌 停止 [洗滌完畢] [脫水完畢] 脫水 45 狀態圖(c.5) 洗滌 [ 注水完畢] / 關閉活塞 停止 結束 開始 攪拌式 ‧‧‧ 離心力 五分鐘到 三分鐘到 ‧‧‧ 進入動作 / 添加洗衣精 離開動作 / 排水 [洗滌完畢] 洗滌 結束 開始 攪拌式 離心力 五分鐘到 [ 注水完畢] / 關閉活塞 三分鐘到 停止 進入動作 / 添加洗衣精 離開動作 / 排水 開始 結束 低速 一分鐘到 ‧‧‧ 中速 高速 [進入離 心力] [洗滌完畢] ‧‧‧ [離開離 心力] 46 活動圖 • 若物件或系統涉及執行某些較複雜之行為 時,例如循序的(sequential)或同時的 (concurrent) 活動等,因為這些活動不易在 互動圖中描述清楚,則可以用活動圖表達。 • 此外,也可用於表達某一使用個案、許多 使用個案、子系統等之循序或同時的作業 流程或行為。 47 活動圖(c.2) 銷售作業之活動圖 48 元件圖 •元件圖(component diagrams)表達系統中, 一群實體的軟體元件間的靜態結構關係,及 說明其建構之細節。 •元件圖之主要元素包括 –元件 –介面 –關係 49 元件圖(c.2) – 元件以一個矩形貼上兩個小標籤表示,且需有 一個唯一的名稱,名稱置於矩形內部。 50 元件圖(c.3) •介面 – 用來說明元件所提供的服務。 –元件實作介所提供的服務,而其它元件透過介 面來使用這個服務。 – 介面常以一小空心圓表示(稱簡單型式),介 面也可以類別的符號表達(稱延伸型式)。 51 元件圖(c.4) 52 元件圖(c.5) •關係 – 關係(Relationships)是描述元件與元件間或 元件與介面間的結合關係。 – 包括 • • • • 相依(Dependency) 一般化(Generalization) 關聯(Association) 實現化(Realization) 53 元件圖(c.6) 54 元件圖(c.7) •上圖表示網路購物系統之元件圖。 •「使用者介面模組」需透過iBook、iCart、iOrder三 個介面使用系統所提供的功能。 •三個ActiveX-DLL:「書籍產品型錄物件類別模 組」、「購物車物件類別模組」、及「訂單物件 類別模組」皆可存取後端資料庫。 •書籍產品型錄、購物車與訂單三個元件屬執行檔, 且皆可存取後端資料庫,因此這三個執行檔與資 料庫間有相依關係。 •使用者介面需透過iBook、iCart、iOrder三個介面完 成訂購功能,所以使用者介面與這三個介面間也 分別有相依關係。 55 元件圖(c.8) •下圖表示人力資源資料庫(database) 元件 是由員工、獎懲、薪資、教育訓練、出勤 考核五個資料表(tables)元件所組成。 56 部署圖 •部署圖(deployment diagrams)表達系統中 軟硬體元件間的靜態結構關係,及說明其 建構之細節。 •部署圖之主要元件包括 –節點 –連接 57 部署圖(c.2) •節點 – 節點(Nodes)代表著一種計算資源,也可說 是一個硬體。 – 節點是以正方體圖形來表示,它必須有一個唯 一的名稱以示區別。 58 部署圖(c.3) •連接 – 連接(Connections)表示節點間的溝通方式 或路徑,也表示節點間之關係,包括相依 (Dependency)、關聯(Association)等。 –此外,節點與軟體元件間可能有相依關係。 59 部署圖(c.4) 區域網路之部署圖 60 部署圖(c.5) 主從式架構之部署圖 61 部署圖(c.6) WWW之部署圖 62 結論 • 物件導向為現今最廣為使用的開發技術, 而UML又是目前物件導向開發最常使用的 分析與設計的塑模工具。 • 學好物件導向程式語言、開發技術與UML, 對於進軟體公司就業,或負責一般企業的 軟體外包,都有莫大的幫助。 63