軟件工程第7章_第1頁
軟件工程第7章_第2頁
軟件工程第7章_第3頁
軟件工程第7章_第4頁
軟件工程第7章_第5頁
已閱讀5頁,還剩63頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第7章 面向對象方法基礎l面向對象的基本概念l面向對象的分析和設計過程lUML概述l面向對象的分析和設計過程lUML概述l面向對象方法是一種把面向對象的思想應用于軟件開發過程中,指導開發活動的系統方法,是建立在對象概念(對象、類、和繼承)基礎上的方法,簡稱OO方法。Peter Coad和Edward Yourdon提出用下列等式識認面向對象方法:面向對象 = 對象(object) + 分類(classification) + 繼承(inheritance) + 通過消息的通信(communication with messages)可以說,采用這四個概念開發的軟件系統是面向對象的 面向對象方法

2、的出現很快受到計算機軟件界的青睞,并成為20世紀90年代的主流開發方法。分析其原因:1.從認知學的角度來看,面向對象方法符合人們對客觀世界的認識規律2.面向對象方法開發的軟件系統易于維護,其體系結構易于理解、擴充和修改3.面向對象方法中的繼承機制有力支持軟件的復用1. (object) 對象是指一組屬性以及這組屬性上的專用操作的封裝體 屬性(attribute)通常是一些數據,有時它也可以是另一個對象。每個對象都有它自己的屬性值,表示該對象的狀態。對象中的屬性只能通過該對象所提供的操作來存取或修改 操作(operation)(也稱方法或服務)規定了對象的行為,表示對象所能提供的服務封裝(enc

3、apsulation)是一種信息隱蔽技術,用戶只能看見對象封裝界面上的信息,對象的內部實現對用戶是隱蔽的。封裝的目的是使對象的使用者和生產者分離,使對象的定義和實現分開 一個對象通常可由對象名、屬性和操作三部分組成2. 類(class) 類是一組具有相同屬性和相同操作的對象的集合。一個類中的每個對象都是這個類的一個實例(instance) 類是創建對象的模板,從同一個類實例化的每個對象都具有相同的結構和行為轎轎 車車型號:字符串型號:字符串顏色:字符串顏色:字符串牌照號:字符串牌照號:字符串張經理的轎車張經理的轎車型號型號= =桑塔納桑塔納顏色顏色= =紅色紅色牌照號牌照號= =滬滬AN203

4、7AN2037類類實例對象實例對象3. 繼承(inheritance) 繼承是類間的基本關系,它是基于層次關系的不同類共享數據和操作的一種機制。父類中定義了其所有子類的公共屬性和操作,在子類中除了定義自己特有的屬性和操作外,可以繼承其父類(或祖先類)的屬性和操作,還可以對父類(或祖先類)中的操作重新定義其實現方法 矩形矩形長長寬寬對角線對角線計算面積計算面積計算對角線計算對角線 多邊形多邊形頂點數頂點數頂點坐標頂點坐標計算面積計算面積旋轉旋轉有時,我們定義一個類,它把一些類組織起來,提供一些公共的行為,但并不需要使用這個類的實例,而僅使用其子類的實例。我們把這種沒有實例的類稱為抽象類(abst

5、ract class)。在抽象類中可以定義抽象操作,抽象操作指:只定義這個類的操作接口,不定義它的實現,其實現部分由其子類定義。抽象操作操作名用斜體字表示,也可以在操作特征(signature)后面加上特征字符串abstract交通工具交通工具飛行器飛行器汽汽 車車 船船轎轎 車車貨貨 車車 一般一般- -特殊關系特殊關系 如果一個子類只有唯一一個父類,這種繼承稱為單一繼承。如果一個子類有一個以上的父類,這種繼承稱為多重繼承水上交通工具水上交通工具 陸上交通工具陸上交通工具 水陸兩棲交通工具水陸兩棲交通工具多重繼承多重繼承4. 消息(message) 消息傳遞是對象間通信的手段,一個對象通過向

6、另一個對象發送消息來請求其服務。一個消息通常包括接收對象名、調用的操作名和適當的參數(如果有必要的話)。消息只告訴接收對象需要完成什么操作,但并不指示接收者怎樣完成操作。消息完全由接收者解釋,接收者獨立決定采用什么方法完成所需的操作5. 多態性(polymorphism) 多態性是指同一個操作作用于不同的對象上可以有不同的解釋,并產生不同的執行結果。例如“畫”操作,作用在“矩形”對象上,則在屏幕上畫一個矩形,作用在“圓”對象上,則在屏幕上畫一個圓。也就是說,相同操作的消息發送給不同的對象時,每個對象將根據自己所屬類中定義的這個操作去執行,從而產生不同的結果6. 動態綁定(dynamic bin

7、ding) 動態綁定是指在程序運行時才將消息所請求的操作與實現該操作的方法連接起來 傳統的程序設計語言的過程調用與目標代碼的連接(即調用哪個過程)放在程序運行前(即編譯時)進行(稱為靜態綁定),而動態綁定則是把這種連接推遲到運行時才進行 動態綁定是一種在運行時確定被執行代碼的技術在一般與特殊關系中,子類是父類的一個特例,所以父類對象可以出現的地方,也允許其子類對象出現。因此在運行過程中,當一個對象發送消息請求服務時,要根據接收對象的具體情況將請求的操作與實現的方法進行連接,即動態綁定if 條件 then p := t ; else p := r ;area := p.getarea ;getA

8、rea abstractpolygonareahexagongetArearectanglegetArealengthwidthtrianglegetAreaVar p : polygon ;Var t : triangle := triangle.new ;Var r : rectangle := rectangle.new ; l面向對象的基本概念lUML概述 面向對象分析的一般步驟如下:1.獲取客戶對系統的需求:包括標識場景(scenario)和用況(use case,也稱用例),以及建造需求模型2.用基本的需求為指南,來選擇類和對象(包括屬性和操作)。3.定義類的結構和層次。4.建造對

9、象關系模型。5.建造對象行為模型。6.利用用況/場景來復審分析模型。 1.獲取客戶對系統的需求l需求獲取必須讓客戶與開發者充分地交流l分析員首先標識使用該系統的不同的執行者(actor),執行者代表使用該系統的不同的角色l每個執行者可以敘述他如何使用系統,或者說他需要系統提供什么功能l執行者提出的每一個使用場景(或功能)都是系統的一個用況的實例,用況描述了系統的一種用法(或一個功能)l所有執行者提出的所有用況構成系統的完整的功能需求 注意l執行者與用戶是不同的兩個概念,一個用戶可以扮演幾個角色(執行者),一個執行者可以是用戶,也可以是其他系統(應用程序或設備)l得到的用況必須進行復審,以使需求

10、完整2.標識類和對象 類和對象來自問題領域。可以先標識候選類,然后進行篩選3. 定義類的結構和層次 類的結構主要有兩種:一般特殊結構整體部分結構 一般特殊結構是一種分類結構,反映了類間的一般與特殊的關系。一般類與特殊類之間是一種“is a”的關系,如:汽車是一種交通工具。同樣,特殊類還可以分為更特殊的類,這樣可形成類的層次結構 整體部分結構反映了類間的整體與部分關系。值得注意的是,整體部分關系是對對象而言的,而不是對類的。整體部分關系是一種“has a ”的關系,如“汽車”有“發動機”。同樣,整體部分結構也具有層次結構有的面向對象方法中,把互相協作以完成一組緊密結合在一起的責任的類的集合定義為

11、主題(subject)或子系統(subsystem)。主題和子系統都是一種抽象,從外界觀察系統時,主題或子系統可看作黑盒,它有自己的一組責任和協作者,觀察者不必關心其細節。觀察一個主題或子系統的內部時,觀察者可以把注意力集中在系統的某一個方面。因此,主題或子系統實際上是系統更高抽象層次上的一種描述4.建造對象關系模型 對象-關系模型描述了系統的靜態結構,它指出了類間的關系(relationship) 類之間的關系有關聯、依賴、泛化、實現等5.建立對象行為模型 對象-行為模型描述了系統的動態行為,它們指明系統如何響應外部的事件或激勵(stimulus) 建模的步驟如下l評估所有的用況,以完全理解

12、系統中交互的序列l標識驅動交互序列的事件,理解這些事件如何和特定的對象相關聯l為每個用況創建事件軌跡(event trace)l為系統建造狀態機圖l復審對象-行為模型,以驗證準確性和一致性 面向對象設計的一般步驟如下:1.系統設計將子系統分配到處理器將子系統分配到處理器選擇實現數據管理、界面支持和任務選擇實現數據管理、界面支持和任務管理的設計策略管理的設計策略為系統設計合適的控制機制為系統設計合適的控制機制復審并考慮權衡(折衷)復審并考慮權衡(折衷)2.對象設計在過程級別(procedural lavel)設計每個操作,即設計每個操作的實現細節定義內部類為類的屬性設計內部數據結構3.消息設計

13、使用對象間的協作和對象-關系模型,設計消息模型4.復審 復審設計模型并在需要時迭代。 1. 系統設計1) 將分析模型劃分成子系統 在OO系統設計中,我們把分析模型中緊密相關的類、關系等設計元素包裝成子系統 通常,子系統的所有元素共享某些公共的性質,它們可能都涉及完成相同的功能;它們可能駐留在相同的產品硬件中;或者它們可能管理相同的類和資源 子系統由它們的責任所刻畫,即,一個子系統可以通過它提供的服務來標識。在OOD中,這種服務是完成特定功能的一組操作 子系統的設計準則是:(1) 子系統應具有定義良好的接口,通過接口和系統的其它部分通信(2) 除了少數的“通信類” 外,子系統中的類應只和該子系統

14、中的其它類協作(3) 子系統的數量不宜太多(4) 可以在子系統內部再次劃分,以降低復雜性2) 標識問題本身的并發性,并為子系統分配處理器 通過對對象-行為模型的分析,可發現系統的并發性。如果對象(或子系統)不是同時活動的,則它們不需并發處理,此時這些對象(或子系統)可以在同一個處理器上實現。反之,如果對象(或子系統)必須對一些事件同時異步地動作,則它們被視為并發的,此時,可以將并發的子系統分別分配到不同的處理器,或者分配在同一個處理器,而由操作系統提供并發支持3) 任務管理設計Coad和Yourdon提出如下管理任務對象的設計策略:(1) 確定任務的類型(2) 必要時,定義協調者任務和關聯的對

15、象(3) 將協調者任務和其它任務集成通常可通過了解任務是如何被啟動的來確定任務的類型,如事件驅動任務,時鐘驅動任務。每個任務應該定義其優先級,并識別關鍵任務。當有多個任務時還可以考慮增加一個協調者任務,以控制這些任務協同工作4) 數據管理設計 通常數據管理設計成層次模式,其目的是將數據的物理存儲及操縱與系統的業務邏輯加以分離 數據管理的設計包括設計系統中各種數據對象的存儲方式(如內部數據結構、文件、數據庫),以及設計相應的服務,即為要儲存的對象增加所需的屬性和操作5) 資源管理設計 OO系統可利用一系列不同的資源(如磁盤驅動器、處理器、通信線路等外部實體或數據庫、對象等抽象資源),很多情況下,

16、子系統同時競爭這些資源,因此要設計一套控制機制和安全機制,以控制對資源的訪問,避免對資源使用的沖突 6)人機界面設計 對大多數應用系統而言,人機界面本身是一個非常重要的子系統。人機界面主要強調人如何命令系統,以及系統如何向人提交信息。它包括窗口、菜單、報告的設計7) 子系統間的通信 子系統之間可以通過建立客戶/服務器連接進行通信,也可以通過端對端(peer to peer)連接進行通信。我們必須確定子系統間通信的合約(contract),合約提供了一個子系統和另一個子系統交互的方式2. 對象設計 對象設計是為每個類的屬性和操作作出詳細的設計,并設計連接類與它的協作者之間的消息規約(1) 對象描

17、述 對象設計的描述可以采取以下形式之一: a.協議描述:描述對象的接口,即定義對象可以接收的消息以及當對象接收到消息后完成的相關操作 b.實現描述:描述傳送給對象的消息所蘊含的每個操作的實現細節,實現細節包括有關對象私有部分的信息,即關于描述對象屬性的數據結構的內部細節和描述操作的過程細節 對對象的使用者來說,只需要協議描述就夠了2)設計算法和數據結構 為對象中的屬性和操作設計數據結構和實現算法3. 設計模式(design patterns) 在許多面向對象系統中,存在一些類和對象的重復出現的模式。這些模式求解特定的設計問題,使面向對象設計更靈活,并最終可復用。這些模式幫助設計者復用以前成功的

18、設計,設計者可以把這些模式應用到新的設計中一個設計模式通常可用4個基本要素來描述:1)模式名稱 用于描述模式的助憶符。設計模式名應具有實際的含義,能反映模式的適用性和意圖2)問題 描述何時使用模式,解釋設計問題以及應用模式所必須的環境和條件3)解決方案 描述構成設計方案的各元素、它們之間的關系、各自的職責和協作方式4)效果(consequences) 描述模式應用的效果以及使用模式時的折中問題l面向對象的基本概念l面向對象的分析和設計過程Unified Modeling Languagel為何研究UML結束方法大戰l發展歷史 1994年Booch和Rumbaugh在Rational Softw

19、are Corporation開始了UML的工作,其目標是創建一個“統一的方法”, 1995年OOSE的創始人Jacobson加盟到這項工作中,工作重點轉移到創建一種統一的建模語言UML 1996年6月、10月、1997年1月、11月分別推出了UML0.9、 UML0.91、 UML1.0、 UML1.1 lUML是一種描繪軟件藍圖的標準語言, 是一種定義良好,易于表達,功能強大且普遍適用的建模語言。UML后來被對象管理組織采納為業界標準。因此,它已成為國際標準的面向對象建模語言。JimRumbaughGradyBoochIvarJacobsonl1997年11月,OMG(Object Man

20、agement Group)批準把UML1.1作為基于面向對象技術的標準建模語言l之后,UML進行了持續的修訂和改進,先后產生了UML1.2、1.3、1.4、1.5版本l2004年推出了UML2.0,UML2.0對UML1.x作了重大的修改。 lUML是一種通用的、統一的、可視化建模語言,即UML是采用圖形方式對待開發的軟件系統進行描述的語言,可以把復雜問題簡單化和直觀化,幫助軟件設計人員理解和認識系統,抓住問題的本質,忽略非本質因素,促進問題的解決。l模型元素 模型元素指模型中的實體以及實體間相互連接的關系 部分模型元素部分模型元素注解注解類類屬性屬性操作操作對象:類對象:類屬性屬性操作操作

21、狀態狀態用況用況 結點結點供應接口供應接口包包依賴依賴關聯關聯泛化泛化主動類主動類屬性屬性操作操作請求接口請求接口構件構件實現實現主題域視圖 (view)圖(diagram)結構化結構化靜態視圖靜態視圖類圖(類圖(class)設計視圖設計視圖內部結構(內部結構(internal structure)協作圖(協作圖(collaboration)構件圖(構件圖(component)用況視圖用況視圖用況圖(用況圖(use case)動態的動態的狀態機視圖狀態機視圖狀態機圖(狀態機圖(state machine)活動視圖活動視圖活動圖(活動圖(activity)交互視圖交互視圖順序圖(順序圖(sequ

22、ence)通信圖(通信圖(communication)物理的物理的部署視圖部署視圖部署圖(部署圖(deployment)模型管理模型管理模型管理視圖模型管理視圖包圖(包圖(package)剖面剖面包圖(包圖(package)l靜態視圖靜態視圖對應用領域中的概念以及與系統實現有關的內部概念建模,主要由類以及類之間的相互關系組成,在靜態視圖中不描述依賴于時間的系統行為。靜態視圖用類圖來展示l設計視圖設計視圖對應用自身的設計結構建模,例如,將設計結構擴展成:結構化類元(classifier)、為實現功能所需的協作以及良定義接口的構件的組裝。設計視圖由內部結構圖、協作圖和構件圖實現l用況視圖用況視圖對

23、被稱為執行者的外部代理(他與特定視點的主題交互)所感受到的主題(如系統)功能建模。用況視圖的意圖是列出系統中的用況和執行者,并顯示哪個執行者參與了哪個用況的執行。用況的行為用動態視圖,特別是交互視圖來表示。用況視圖用用況圖來展示l狀態機視圖狀態機視圖對一個類的對象的可能生命歷程建模。一個狀態機包括用遷移連接的狀態,每個狀態對一個對象在其生命期中滿足某種條件的一個時間段建模。當一個事件發生時,它會導致觸發對象的一個狀態向另一個新狀態的遷移,附加在遷移上的動作或活動也同時被執行。狀態機視圖用狀態機圖來展示l活動視圖活動展示了包含在執行計算或工作流中的計算活動的控制流。一個動作是一個基本的計算步,一

24、個活動結點是一組動作或子活動,一個活動可描述順序的和并發的計算。活動視圖用活動圖來展示l交互視圖交互視圖描述系統各部分中消息交換的順序。交互視圖提供了系統中行為的整體視圖,也就是說,它展示了多個對象間交叉的控制流。交互視圖用順序圖和通信圖來展示l部署視圖部署視圖描述了運行時結點上制品的分布。制品是一個物理實現單元,如一個文件,它也可以表示一或多個構件的實現(一種表現形式)。結點是運行時表示計算資源的物理對象,如,計算機、設備或內存。部署視圖允許對分配的結果和資源分配進行評估。部署視圖用部署圖來展示l模型管理視圖模型管理視圖對模型自身的組織建模。一個模型由一組保存模型元素(如類、狀態機、用況)的

25、包組成。包還可以包含其它的包,因此,一個模型從一個間接包含所有模型內容的根包(root package)開始。包是操縱模型內容的單元,也是訪問控制和配置控制的單元。每個模型元素可以被一個包或另一個元素擁有。模型管理信息通常展示在包圖中,它是類圖的變種l剖面(profile)UML是用一個元模型(metamodel)定義的,元模型是指描述建模語言自身的模型。通常元模型的改變是復雜的,也是危險的。剖面機制允許在不修改基礎元模型的前提下對UML作有限的變化。UML包含三個主要的可擴展結構:約束(constraints)、版型(stereotypes)和標簽值(tagged values)約束是以自然

26、語言或特定形式語言的正文表示的語義條件或限制,約束寫在花括號中(),如value0,or。版型是在基于現有各類模型元素的外形中定義模型元素的新類型,它本質上是一種新元類(metaclass)。版型可以擴展語義,但不能擴展原元模型類的結構。用標記版型,如signal。標簽值是貼在任何模型元素上的被命名的信息片。下圖給出了版型和標簽值的應用實例版型和標簽值版型和標簽值authorshipSchedulingtagged valuesauthorshipauthor=“Frank Martin”due=Dec.31,2009l 類圖 類圖展示了系統中類的靜態結構,即類與類之間的相互聯系。類之間有多種

27、聯系方式,如關聯(相互連接)、依賴(一個類依賴或使用另一個類)、泛化(一個類是另一個類的特殊情況)等。可以把若干個相關的類包裝在一起作為一個單元(包),相當于一個子系統。一個系統可以有多張類圖,一個類也可以出現在幾張類圖中l 對象圖 對象圖是類圖的實例,它展示了系統執行在某一時間點上的一個可能的快照。對象圖使用與類圖相同的符號,只是在對象名下面加上下劃線,同時它還顯示了對象間的實例鏈接(link)關系l內部結構圖內部結構圖展示了類的分解,給出了組成一個結構化類元的相互連接的部分、端口和連接器手冊:演出手冊手冊:演出手冊數據庫:演出數據庫數據庫:演出數據庫售票員:售票員售票員:售票員售票處售票處售票售票內部結構圖內部結構圖l協作圖協作圖展示了協作的定義,是一種合成的結構圖。協作是為了完成某一目的而一起工作的一組對象間的上下文關系劇院售票劇院售票* * 1 1售票亭:售票亭售票亭:售票亭:售票處:售票處1 1 * *終端:售票終端終端:售票終端協作圖協作圖l構件圖構件圖展示了系統中的構件(即來自應用的軟件單元),構件間通過接口的連接,以及構件之間的依賴關系。構件是一種結構化類元,可以用內部結構圖來定義它的內部結構l用況圖用況圖展示了各類外部執行者與系統所提供的用

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論