[软件工程] 面向对象方法学引论
面向對象方法學引論
- 面向對象方法學引論
- 9.1 面向對象方法概述
- 9.1.1 什么是面向對象的開發方法
- 9.1.2 面向對象開發方法的組成
- OOSD由三部分組成
- 1、OOA法
- 對象模型(信息模型)
- 狀態模型(動態模型)
- 2、OOD 法
- 3、OOP 法
- 9.2 面向對象的概念
- 9.2.1 對象
- 9.2.2 其它概念
- 1、 類(Class)
- 2、 繼承 (Inheritance)
- 3、消息(Message)
- 4. 多態性和動態綁定
- 5、方法(method)
- 9.3 面向對象建模
- 9.4 對象模型
- 9.5 動態模型
- 9.6 功能模型
- 9.7 3種模型之間的關系
面向對象方法學引論
面向對象的思想最初出現于挪威斯陸大學和挪威計算機中心共同研制的Simula 67 語言中,其后,隨著位于美國加利福尼亞的Xerox(施樂) 研究中心推出的Smalltalk–76 和80 語言,面向對象的的程序設計技術迅猛的發展。
到了20世紀90年代,面向對象方法學已經成為人們在開發軟件是首選的成熟的范型,成為當前最好的軟件開發技術。
傳統的軟件工程方法是面向過程的,將數據和處理過程分離,求解過程是先對應用領域(問題空間)進行分析,建立起問題空間的邏輯模型,再通過一系列復雜的轉換和算法,構造計算機系統,獲得解空間。
由于問題空間與解空間的模型、描述方式的不同,存在著復雜的轉換過程,需求變化就更難適應。傳統的軟件工程方法難于支持軟件復用。
9.1 面向對象方法概述
9.1.1 什么是面向對象的開發方法
OOSD(Object-Oriented Software Development)法是一種把面向對象的思想應用于軟件開發過程,指導開發活動的系統方法。
面向對象的方法是一種運用對象、類、繼承、封裝、聚合、消息傳送、多態性等概念來構造系統的軟件開發方法。
什么是面向對象
根據Coad和Yourdon的定義,按照以下4個概念設計和實現的系統,稱為是面向對象的。
面向對象: 對象 (object)
類 (classification)
繼承(inheritance)
通信 (communication with messages)
面向對象技術的特點
1、對軟件開發過程所有階段進行綜合考慮。
2、軟件生存期各階段所使用的方法、技術具有高度的連續性,用符合人類認識世界的思維方式來分析、解決問題。
3、將OOA、OOD、OOP有機地集成在一起。
OOA(Object-Oriented Analysis)面向對象分析
OOD( Object-Oriented Design )面向對象設計
OOP( Object-Oriented Program )面向對象的程序設計
9.1.2 面向對象開發方法的組成
OOSD由三部分組成
OOSD由三部分組成:
OOA(Object-Oriented Analysis)面向對象的分析
強調的是對一個系統中的對象特征和行為的定義。建立系統的三類(對象、狀態、處理)模型。
OOD(Object-Oriented Design)面向對象的設計
與OOA密切配合順序實現對現實世界的進一步建模。
OOP (Object-Oriented Program)面向對象的程序設計
是面向對象的技術中發展最快的,使用面向對象的程序設計語言,進行編碼。
1、OOA法
就是要解決“做什么”的問題。OOA 法的基本任務就是要建立三種模型:
對象模型(信息模型)
定義構成系統的類和對象,它們的屬性與操作。
狀態模型(動態模型)
描述任何時刻對象的聯系及其聯系的改變,即時序。常用狀態圖, 事件追蹤圖描述。
功能模型(函數模型)
描述系統內部數據的傳送處理。
顯然,在三大模型中,最重要的是對象模型。
2、OOD 法
在需求分析的基礎上,進一步解決“如何作”的問題,OOD 法也分為概要設計和詳細設計。
概要設計:細化對象行為,添加新對象,認定類,組類庫,確定外部接口及主要數據結構
詳細設計:加細對象描述
3、OOP 法
使用面向對象的程序設計語言,如C++進行程序設計。
Coad和Yourdon給出一個面向對象的定義:
面向對象=對象+類+繼承+消息
如果一個軟件系統是按照這樣四個概念設計和實現的,則可以認為這個軟件系統是面向對象的。
9.2 面向對象的概念
理解面向對象的基本概念對于學習和掌握面向對象的開發方法是十分重要的。
9.2.1 對象
對象(Object)是客觀事物或概念的抽象表述,即對客觀存在的事物的描述統稱為對象,對象可以是事、物、或抽象概念 ,是將一組數據和使用該數據的一組基本操作或過程封裝在一起的實體。
對象都存在一定的狀態(state),內部標識(identity),可以給對象定義一組運算(operation),對象通過其運算所展示的特定行為稱為對象行為(behavior),對象本身的性質稱為屬性(attribute),對象將它自身的屬性及運算“包裝起來”,稱為“封裝”(encapsulation).
對象的最基本的特征是封裝性和繼承性。
9.2.2 其它概念
1、 類(Class)
類又稱對象類(Object Class),是一組具有相同屬性和相同操作的對象的集合。在一個類中,每個對象都是類的實例(instance) ,它們都可以使用類中提供的函數。
類具有屬性,用數據結構來描述類的屬性,類具有操作,它是對象的行為的抽象,操作實現的過程稱為方法(method) ,方法有方法名,方法體和參數。
由于對象是類的實例,在進行分析和設計時,通常把注意力集中在類上,而不是具體的對象上。
2、 繼承 (Inheritance)
繼承是使用現存的定義作為基礎,建立新定義的技術。是父類和子類之間共享數據結構和方法的機制,這是類之間的一種關系。在定義和實現一個類的時候,可以在一個已經存在的類的基礎上來進行,把這個已經存在的類所定義的內容做為自己的內容,并加入若干新內容。
繼承性分類:
單重繼承:一個子類只有一個父類。即子類只繼承一個父類 的數據結構和方法。
多重繼承:一個子類可有多個父類。繼承多個父類的數據結 構和方法。
3、消息(Message)
消息就是向對象發出的服務請求(互相聯系、協同工作等)。對象之間的聯系可表示為對象間的消息傳遞,即對象間的通訊機制。
一個消息應該包含以下信息:消息名、接收消息對象的標識、服務標識 、消息和方法、輸入信息、回答信息。
在對象的操作中當一個消息發送給某個對象時,消息包含接收對象去執行某種操作的消息。
注意:在并發系統中,多個控制線程(Thread of Control)并發執行,情況就復雜得多,消息可以是發出服務請求、提交數據、發布事件信息、或是傳遞同步控制信息。
4. 多態性和動態綁定
多態性(Polymorphism)是指相同的操作或函數,過程作用于不同的對象上并獲得不同的結果。
即相同的操作的消息發送給不同的對象時,每個對象將根據自己所屬類中所定義的操作去執行,故產生不同的結果。
例如: “繪圖”操作,作用在“橢圓” 和“矩形” 上,畫出不同的圖形。
動態綁定(dynamic binding)是在運行時根據對象接收的消息動態地確定要連接的服務代碼。
5、方法(method)
類中操作的實現過程稱為方法。
一個方法包括方法名、參數及方法體。
方法描述了類與對象的行為,每一個對象都封裝了數據和算法兩個方面,數據由一組屬性表示,而算法即是當一個對象接收到一條消息后,它所包含的方法決定對象如何動作。通常是在某種編程語言(如Java、C++)下實施的運算。
9.3 面向對象建模
- 用面向對象方法成功地開發軟件的關鍵,同樣是對問題域的理解。面向對象方法最基本的原則,是按照人們習慣的思維方式,用面向對象觀點建立問題域的模型,開發出盡可能自然地表現求解方法的軟件。
- 用面向對象方法開發軟件,通常需要建立3種形式的模型,它們分別是描述系統數據結構的對象模型,描述系統控制結構的動態模型和描述系統功能的功能模型。
9.4 對象模型
面向對象方法強調圍繞對象而不是圍繞功能來構造系統。對象模型為建立動態模型和功能模型,提供了實質性的框架。
統一建模語言UML;
- 定義類(屬性、服務)、類的圖形符號;
- 類與類之間的關聯、泛化(繼承)、依賴和細化等關系及其表示等等。
9.5 動態模型
動態模型表示瞬時的、行為化的系統的“控制”性質,它規定了對象模型中的對象的合法變化序列。
- 對一個對象來說,生命周期由許多階段組成,在每個特定階段中,都有適合該對象的一組運行規律和行為規則,用以規范該對象的行為。生命周期中的階段也就是對象的狀態。
- 各對象之間相互觸發就形成了一系列的狀態變化。我們把一個觸發行為稱作一個事件。
- 狀態與事件密不可分,一個事件分開兩個狀態,一個狀態隔開兩個事件。事件表示時刻,狀態代表時間間隔。
9.6 功能模型
功能模型表示變化的系統的“功能”性質,它指明了系統應該“做什么”,因此更直接地反映了用戶對目標系統的需求。
9.7 3種模型之間的關系
對象模型、動態模型、功能模型分別從3個不同側面描述了所要開發的系統。
這3種模型相互補充、相互配合,使得我們對系統的認識更加全面:
功能模型指明了系統應該“做什么”;
動態模型明確規定了什么時候(即在何種狀態下接受了什么事件的觸發)做;
對象模型則定義了做事情的實體。
其中,對象模型是最基本最重要的,它為其他兩種模型奠定了基礎,我們依靠對象模型完成3種模型的集成。
(1)針對每個類建立的動態模型,描述了類實例的生命周期或運行周期。
(2)狀態轉換驅使行為發生,這些行為在數據流圖中被映射成處理,在用例圖中被映射成用例,它們同時與類圖中的服務相對應。
(3)功能模型中的處理(或用例)對應于對象模型中的類所提供的服務。
(4)數據流圖中的數據存儲,以及數據的源點/終點,通常是對象模型中的對象。
(5)數據流圖中的數據流,往往是對象模型中對象的屬性值,也可能是整個對象。
(6)用例圖中的行為者,可能是對象模型中的對象。
(7)功能模型中的處理(或用例)可能產生動態模型中的事件。
(8)對象模型描述了數據流圖中的數據流、數據存儲以及數據源點/終點的結構。
總結
以上是生活随笔為你收集整理的[软件工程] 面向对象方法学引论的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Vue表单类的父子组件数据传递示例_vu
- 下一篇: excel排名_Excel案例:比赛中,