物件導向技術

Download Report

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