Download presentation
Presentation is loading. Please wait.
1
軟體工程 -物件導向程式設計與UML系統分析實作
第三章 物件導向的觀念 軟體工程 -物件導向程式設計與UML系統分析實作
2
3.1 模組與物件 在物件導向程式設計的觀念提出之前,軟體開發者,大多是使用結構化的程式設計。
3
模組 模組就是用一個單一的函式所組成一連串的程式敘述, 可解決一最小的問題。
4
圖3-1汽車行駛程式呼叫的模組圖 [註:以流程圖來表現,每個方塊代表一個模組]
5
物件導向語言 物件導向語言顧名思義就是以物件為程式設計時最主要考慮到的對象。
6
圖3-2物件之間靠傳遞訊息,啟動某些操作
7
3.2物件導向基本觀念 世界是由各種「物件」(Object)所組成,同類的物件可以再加以抽象化而成「類別」(Class),而每一類別具有自己的「屬性」(Attribute)來描述其特性與「方法」(Method)來描述其動態之行為,彼此間之互動是藉由「訊息」(Message)傳遞來溝通。
8
類別(Class) 為了簡化問題必須將各個物件加以分類,分類的結果便是產生類別(Class) 圖3-3 物件導向類別圖表示法
9
實體 (Instance) 實體也就是物件實體,是經由類別描述過的物件,可說是類別的實體化,也就是產生一個一個的物件。
10
屬性(Attribute) 屬性是物件所擁有的資料描述或項目,亦有稱為資料結構或狀態。有的將靜態的資料稱為屬性,動態的資料稱為狀態(State)。
11
方法(Method) 方法亦稱為操作(Operation)或行為(Behavior),方法是物件的動作,不同的訊息會對應到不同的處理方法。
12
訊息(Message) 訊息是物件之間互相溝通的工具,當物件收到訊息後,物件會依據訊息內容而執行不同的動作。
13
3.3 物件重要特性 封裝性(Encapsulation) 繼承(Inheritance) 多型 (Polymorphism)
覆蓋(Overriding) 動態連結(Dynamic Binding)
14
封裝性(Encapsulation) 封裝即所謂資訊隱藏(Information Hiding),主要是將物件的內外部份分開來,其他物件只能藉由外部的界面取得其提供的資料,物件內部的細節資料則隱藏起來,其他物件即無法瞭解此物件的內部細節,若不經過允許之窗口(即此物件提供之方法)便無從更動此物件內之資料。
15
圖3-5 物件的封裝性
16
繼承(Inheritance) :又稱為一般化(Generalization)與特殊化(Specialization)的關係,A繼承B乃指物件類別A是物件類別B的一種,因此物件類別A可以繼承物件類別B的屬性與方法。兩個以上類別一般化後之類別稱為超類別(Superclass)。
17
圖3-6 類別的繼承
18
多型 (Polymorphism) 所謂多型是指類別內同名的「方法」,因在不同的類別中定義,執行時會有不同結果的功能。
19
圖3-7多型
20
覆蓋(Overriding) 每一類別會定義所屬之屬性與方法,當此類別被要求提供某種服務而需執行某方法時,若此類別本身定義有此方法,則可以直接執行此方法,否則此類別會沿著類別階層由下往上找,直至找到為止。
21
圖3-8 覆蓋
22
動態連結(Dynamic Binding)
所謂連結是將程式中所使用到的各名稱(包括程式名稱及變數名稱),分配到適當的記憶體位置。如果是在程式執行過程中才完成連結的,則稱為動態連結(Dynamic Binding),又稱為延後連結(Late Binding)
23
圖3-9 動態繫結圖
24
3.4內聚力與耦合力 評估一個系統設計的好壞,亦即計算獨立性的標準,有內聚力(cohesion)與耦合力(coupling)兩種。
25
3.4.1 耦合力分類 程式設計的領域時,表示程式單元之間牽連相依的程度,模組之間的耦合度欲寬鬆愈好。
26
耦合力 耦合力是指兩個模組之間的獨立性高低,以物件導向程式而言是指物件與物件之間的獨立性高低。
27
圖3-10耦合力由低至高
28
3.4.2 內聚力分類 程式的內聚力則是愈強愈好。
29
內聚力(Cohesion) 內聚力(Cohesion)指的就是事物凝聚的狀態或程度。
30
圖3-11 內聚力的由低至高
31
3.4.3 物件的內聚力和耦合力 物件導向語言的特性,剛好符合了「高內聚力」和「低耦合力」,這是物件導向的優點,也更促進了軟體的可重覆再使用的能力。
32
3.5 物件導向語言的種類 4個基本的分支: 1. 基於Smalltalk語言的;包括Smalltalk的5個版本,以Smalltalk-80爲代表。 2. 基於C語言的;包括 objective-C、 C++、 Java。(編輯註:及 Microsoft 近來所提出的 C#)。 3. 於LISP語言的;包括 Flavors、 XLISP、 LOOPS、 CLOS。 4. 於PASCAL語言的;包括 Object Pascal (ex:Delphi)、 Turbo Pascal、 Eiffel、 Ada 95。
33
3.6 Java Java是個純物件導向語言,為Sun公司所發展。
34
圖3-12 Java的吉祥物Duke和代表Java的Java咖啡杯
35
JAVA的歷史 將此語言定名為GREEN團隊成員平時都愛喝的咖啡名稱JAVA。 1995年5月23日,SUN正式對外發表了JAVA語言
36
JAVA程式語言的特性 1. 熟悉且簡易(simple and familiar) 2. 物件導向(object oriented)
3. 分散式(distributed) 4. 直譯式(interpreted) 5. 堅韌性(robust) 6. 安全(secure) 7. 架構中立(architecture neutral) 8. 高效率(high performance)且多執行緒(multithreaded) 9. bytecides能迅速轉成機械碼。 10.而多執行緒是指各程式碼能同時進行各自的工作。 11.動態(dynamic)連結。
37
3.7 案例研討-訂房系統
38
3.8 總結 隨著經驗的積累,物件導向的發展將日漸流行,物件導向技術也將日趨成熟。
Similar presentations