版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第第9章章 面向對象方法學引論面向對象方法學引論n教學目標教學目標 掌握面向對象方法學的概念、掌握用于面向掌握面向對象方法學的概念、掌握用于面向對象分析、設計的對象分析、設計的3種模型(對象模型、動態(tài)模種模型(對象模型、動態(tài)模型、功能模型)。型、功能模型)。n教學重點教學重點 面向對象方法學的基本概念面向對象方法學的基本概念n教學難點教學難點 面向對象建模的了解面向對象建模的了解第第9章章 面向對象方法學引論面向對象方法學引論q教學內容教學內容 9.1 面向對象方法學概述面向對象方法學概述 9.2 面向對象的概念面向對象的概念 9.3 面向對象建模面向對象建模 9.4 對象模型對象模型9.5
2、動態(tài)模型動態(tài)模型 9.6 功能模型功能模型 9.7 三三種種模型之間的關系模型之間的關系傳統(tǒng)的軟件工程方法是面向過程的,將數據和傳統(tǒng)的軟件工程方法是面向過程的,將數據和處理過程分離,求解過程是先對應用領域(問題處理過程分離,求解過程是先對應用領域(問題空間)進行分析,建立起問題空間的邏輯模型,空間)進行分析,建立起問題空間的邏輯模型,再通過一系列復雜的轉換和算法,構造計算機系再通過一系列復雜的轉換和算法,構造計算機系統(tǒng),獲得解空間。統(tǒng),獲得解空間。由于問題空間與解空間的模型、描述方式的不由于問題空間與解空間的模型、描述方式的不同,存在著復雜的轉換過程,需求變化就更難適同,存在著復雜的轉換過程,
3、需求變化就更難適應。傳統(tǒng)的軟件工程方法難于支持軟件復用。應。傳統(tǒng)的軟件工程方法難于支持軟件復用。第第9章章 面向對象方法學引論面向對象方法學引論面向對象的思想最初出現于挪威斯陸大學和挪面向對象的思想最初出現于挪威斯陸大學和挪威計算機中心共同研制的威計算機中心共同研制的SimulaSimula 67 67 語言中,其語言中,其后,隨著位于美國加利福尼亞的后,隨著位于美國加利福尼亞的XeroxXerox(施樂)(施樂) 研究中心推出的研究中心推出的Smalltalk-76 Smalltalk-76 和和80 80 語言,面語言,面向對象的的程序設計技術迅猛的發(fā)展。向對象的的程序設計技術迅猛的發(fā)展。
4、到了到了2020世紀世紀9090年代,面向對象方法學已經成為年代,面向對象方法學已經成為人們在開發(fā)軟件是首選的成熟的范型,成為當前人們在開發(fā)軟件是首選的成熟的范型,成為當前最好的軟件開發(fā)技術。最好的軟件開發(fā)技術。第第9章章 面向對象方法學引論面向對象方法學引論9.1.1 什么是面向對象的開發(fā)方法什么是面向對象的開發(fā)方法 OOSD(Object-Oriented Software Development)法是一種把面向對象的思想應用于軟件開發(fā)過程,法是一種把面向對象的思想應用于軟件開發(fā)過程,指導開發(fā)活動的系統(tǒng)方法。指導開發(fā)活動的系統(tǒng)方法。面向對象的方法是一種運用對象、類、繼承、面向對象的方法是一
5、種運用對象、類、繼承、封裝、聚合、消息傳送、多態(tài)性等概念來構造系封裝、聚合、消息傳送、多態(tài)性等概念來構造系統(tǒng)的軟件開發(fā)方法。統(tǒng)的軟件開發(fā)方法。9.1 面向對象方法概述面向對象方法概述什么是面向對象什么是面向對象根據根據CoadCoad和和YourdonYourdon的定義,按照以下的定義,按照以下4 4個概念個概念設計和實現的系統(tǒng),稱為是面向對象的。設計和實現的系統(tǒng),稱為是面向對象的。 面向對象面向對象= =對象對象 (object) (object) + +類類 (classification) (classification) + +繼承繼承(inheritance)(inheritanc
6、e) + +通信通信 (communication with messages) (communication with messages)9.1.1 什么是面向對象的開發(fā)方法什么是面向對象的開發(fā)方法 面向對象技術的特點面向對象技術的特點1 1、對軟件開發(fā)過程所有階段進行綜合考慮。、對軟件開發(fā)過程所有階段進行綜合考慮。2 2、軟件生存期各階段所使用的方法、技術具有、軟件生存期各階段所使用的方法、技術具有高度的連續(xù)性,用符合人類認識世界的思維方式高度的連續(xù)性,用符合人類認識世界的思維方式來分析、解決問題。來分析、解決問題。3 3、將、將OOAOOA、OODOOD、OOPOOP有機地集成在一起。有
7、機地集成在一起。 OOA(Object-Oriented Analysis)OOA(Object-Oriented Analysis)面向對象分析面向對象分析OOD( Object-Oriented Design )OOD( Object-Oriented Design )面向對象設計面向對象設計OOP( Object-Oriented Program )OOP( Object-Oriented Program )面向對象的面向對象的程序設計程序設計9.1.1 什么是面向對象的開發(fā)方法什么是面向對象的開發(fā)方法 OOSD由三部分組成:由三部分組成: OOA(Object-Oriented Ana
8、lysis)面向對象的分析面向對象的分析 OOD(Object-Oriented Design)面向對象的設計面向對象的設計 OOP (Object-Oriented Program)面向對象的程序設計面向對象的程序設計OOAOOA強調的是對一個系統(tǒng)中的對象特征和行強調的是對一個系統(tǒng)中的對象特征和行為的定義。建立系統(tǒng)的三類(對象、狀為的定義。建立系統(tǒng)的三類(對象、狀態(tài)、處理)模型。態(tài)、處理)模型。OODOODOOD與與OOAOOA密切配合順序實現對現實世界的進密切配合順序實現對現實世界的進一步建模。一步建模。OOPOOPOOP是面向對象的技術中發(fā)展最快的,使用是面向對象的技術中發(fā)展最快的,使用
9、面向對象的程序設計語言,進行編碼。面向對象的程序設計語言,進行編碼。9.1.2 面向對象開發(fā)方法的組成面向對象開發(fā)方法的組成OOAOODOOP 就是要解決就是要解決“做什么做什么”的問題。的問題。OOA 法的基本任務就是要法的基本任務就是要建立三種模型:建立三種模型:狀態(tài)模型狀態(tài)模型(動態(tài)模型)(動態(tài)模型) 描述任何時刻對象的聯(lián)系及其聯(lián)系的改變,即時序。常描述任何時刻對象的聯(lián)系及其聯(lián)系的改變,即時序。常用狀態(tài)圖用狀態(tài)圖, , 事件追蹤圖描述。事件追蹤圖描述。功能功能/ /處理模型處理模型(函數模型)(函數模型) 描述系統(tǒng)內部數據的傳送處理。描述系統(tǒng)內部數據的傳送處理。 顯然,在三大模型中,最重
10、要的是對象模型。顯然,在三大模型中,最重要的是對象模型。對象模型對象模型(信息模型)(信息模型) 定義構成系統(tǒng)的類和對象,它們的屬性與操作。定義構成系統(tǒng)的類和對象,它們的屬性與操作。9.1.2 面向對象開發(fā)方法的組成面向對象開發(fā)方法的組成在需求分析的基礎上,進一步解決在需求分析的基礎上,進一步解決“如何作如何作”的問題,的問題,OOD OOD 法也分為概要設計和詳細設計。法也分為概要設計和詳細設計。細化對象行為,添加新對象,認定類,組類細化對象行為,添加新對象,認定類,組類庫,確定外部接口及主要數據結構庫,確定外部接口及主要數據結構詳細設計:詳細設計:加細對象描述加細對象描述 使用面向對象的程
11、序設計語言,如使用面向對象的程序設計語言,如C+C+進行程序設計。進行程序設計。 CoadCoad和和YourdonYourdon給出一個面向對象的定義:給出一個面向對象的定義:面向對象面向對象= =對象對象+ +類類+ +繼承繼承+ +消息消息如果一個軟件系統(tǒng)是按照這樣四個概念設計和實現的,如果一個軟件系統(tǒng)是按照這樣四個概念設計和實現的,則可以認為這個軟件系統(tǒng)是面向對象的。則可以認為這個軟件系統(tǒng)是面向對象的。9.1.2 面向對象開發(fā)方法的組成面向對象開發(fā)方法的組成面向對象方法的主要特點:面向對象方法的主要特點:按照人類習慣的思維方法,對軟件開發(fā)過程所有階段進行按照人類習慣的思維方法,對軟件開
12、發(fā)過程所有階段進行綜合考慮綜合考慮傳統(tǒng)的程序設計技術是面向過程的設計方法,是以算法為傳統(tǒng)的程序設計技術是面向過程的設計方法,是以算法為核心,把數據和過程作為相互獨立的部分,程序代碼用于處核心,把數據和過程作為相互獨立的部分,程序代碼用于處理這些數據。將數據和代碼分離,反映了計算機的觀點,但理這些數據。將數據和代碼分離,反映了計算機的觀點,但卻忽視了數據和操作之間的內在聯(lián)系,所以用這種方法設計卻忽視了數據和操作之間的內在聯(lián)系,所以用這種方法設計的軟件系統(tǒng)其解空間與問題空間不一致。的軟件系統(tǒng)其解空間與問題空間不一致。而面向對象的方法以對象為核心,強調模擬現實世界中的而面向對象的方法以對象為核心,強
13、調模擬現實世界中的概念而不是算法,盡量用符合人類認識世界的思維方式來漸概念而不是算法,盡量用符合人類認識世界的思維方式來漸進地分析、解決問題,使問題空間與解空間具有一致性,便進地分析、解決問題,使問題空間與解空間具有一致性,便于對軟件開發(fā)過程所有階段進行綜合考慮,能有效地降低軟于對軟件開發(fā)過程所有階段進行綜合考慮,能有效地降低軟件開發(fā)的復雜度,提高軟件質量。件開發(fā)的復雜度,提高軟件質量。面向對象的方法的代表性成果有:面向對象的方法的代表性成果有:1、B.Henderson-sellers 和和 J.m.Edwards提出的面向對象軟件提出的面向對象軟件生存期噴泉模型及面向對象的系統(tǒng)開發(fā)方法。生
14、存期噴泉模型及面向對象的系統(tǒng)開發(fā)方法。2、G.Booch提出的面向對象的開發(fā)方法。提出的面向對象的開發(fā)方法。3、P.Coad和和E.Yourd提出的提出的OOA和和OOD法。法。 4、J. Rumbaugh等人提出的對象建模技術等人提出的對象建模技術(OMT)。5、Jacobson 提出的面向對象的軟件工程提出的面向對象的軟件工程(OOSE)。6、G.Booch J.Rumbough Jacobson等人在等人在Booch方法、方法、OMT和和OOSE的基礎上推出了統(tǒng)一建模語言的基礎上推出了統(tǒng)一建模語言UML。 理解面向對象的基本概念對于學習和掌握面向對象的理解面向對象的基本概念對于學習和掌握
15、面向對象的開發(fā)方法是十分重要的。開發(fā)方法是十分重要的。9.2 面向對象的概念面向對象的概念 對客觀對客觀存在的事物的描述存在的事物的描述可以是事、物、或抽象可以是事、物、或抽象概念概念 ,是將一組數據和使用該數據的一組基本操作或過程,是將一組數據和使用該數據的一組基本操作或過程封裝在一起的實體封裝在一起的實體。對象都存在一定的對象都存在一定的,內部,內部可可以給對象定義以給對象定義對象通過其運算所展示對象通過其運算所展示的特定行為稱為的特定行為稱為對象本身的性質稱為對象本身的性質稱為,對象將它自身的屬性及運算,對象將它自身的屬性及運算“包裝起來包裝起來”,稱為稱為對象的最基本的特征是封裝性和繼
16、承性對象的最基本的特征是封裝性和繼承性。 9.2.1 對象對象1、 類(類(Class)類類又稱又稱對象類對象類(Object Class),是一組具有相同),是一組具有相同屬性和相同操作的對象的集合。在一個類中,每個對屬性和相同操作的對象的集合。在一個類中,每個對象都是類的象都是類的實例實例(instance) ,它們都可以使用類中提,它們都可以使用類中提供的函數。供的函數。類具有屬性類具有屬性,用數據結構來描述類的屬性,用數據結構來描述類的屬性,類具類具有操作有操作,它是對象的行為的抽象,操作實現的過程稱,它是對象的行為的抽象,操作實現的過程稱為方法(為方法(method) ,方法有方法名
17、,方法體和參數。,方法有方法名,方法體和參數。由于對象是類的實例,在進行分析和設計時,通由于對象是類的實例,在進行分析和設計時,通常把注意力集中在類上,而不是具體的對象上。常把注意力集中在類上,而不是具體的對象上。9.2.2 其它概念其它概念幾何對象幾何對象顏色顏色位置位置移動(移動(delta:矢量):矢量)選擇(選擇(P:指針型)指針型):布爾型布爾型旋轉旋轉(角度角度)圖圖9.19.1對象類的描述對象類的描述人人姓姓 名名:字符串字符串年年 齡齡: 整整 型型改換工作改換工作改換地址改換地址文件文件文件名文件名文件大小文件大小最近更新日期最近更新日期打印打印(人人)張紅兵張紅兵28繪圖員
18、繪圖員人民路人民路8號號(人人)李軍李軍24程序員程序員無無圖圖9.2 9.2 對象的描述對象的描述類名類名屬性屬性運算運算 對象圖對象圖 類圖類圖 繼承是使用現存的定義作為基礎,建立新定義的技術。是父繼承是使用現存的定義作為基礎,建立新定義的技術。是父類和子類之間共享數據結構和方法的機制,這是類之間的一種類和子類之間共享數據結構和方法的機制,這是類之間的一種關系。在定義和實現一個類的時候,可以在一個已經存在的類關系。在定義和實現一個類的時候,可以在一個已經存在的類的基礎上來進行,把這個已經存在的類所定義的內容做為自己的基礎上來進行,把這個已經存在的類所定義的內容做為自己的內容,并加入若干新內
19、容。的內容,并加入若干新內容。 繼承性分類:繼承性分類: :一個子類只有一個父類。即子類只繼承一個父類:一個子類只有一個父類。即子類只繼承一個父類 的數據結構和方法。的數據結構和方法。 :一個子類可有多個父類。繼承多個父類的數據結:一個子類可有多個父類。繼承多個父類的數據結構和方法。構和方法?;惢愖宇愖宇怉子類子類B繼承性描述繼承性描述現存類定義現存類定義父類父類( (基類基類) )新類定義新類定義子類子類( (派生類派生類) )繼繼 承承繼承性繼承性 互相聯(lián)系、協(xié)同工互相聯(lián)系、協(xié)同工作等作等對象之間的聯(lián)系可表示為對象間的消息傳遞,即對象之間的聯(lián)系可表示為對象間的消息傳遞,即對象間的通訊機
20、制。對象間的通訊機制。 一個消息應該包含以下信息:消息名、接收消息對象的一個消息應該包含以下信息:消息名、接收消息對象的標識、服務標識標識、服務標識 、消息和方法、輸入信息、回答信息。、消息和方法、輸入信息、回答信息。注意:注意:在并發(fā)系統(tǒng)中,多個控制線程(在并發(fā)系統(tǒng)中,多個控制線程(Thread of Control)并發(fā)執(zhí)行,情況就復雜得多,消息可以是發(fā)出服并發(fā)執(zhí)行,情況就復雜得多,消息可以是發(fā)出服務請求、提交數據、發(fā)布事件信息、或是傳遞同步控制信務請求、提交數據、發(fā)布事件信息、或是傳遞同步控制信息。息。在對象的操作中當一個消息發(fā)送給某個對象時,消息在對象的操作中當一個消息發(fā)送給某個對象時
21、,消息包含接收對象去執(zhí)行某種操作的消息。包含接收對象去執(zhí)行某種操作的消息。n 多態(tài)性多態(tài)性(Polymorphism)是指相同的操作或函數,過程作是指相同的操作或函數,過程作用于不同的對象上并獲得不同的結果。用于不同的對象上并獲得不同的結果。n 即相同的操作的消息發(fā)送給不同的對象時,每個對象將即相同的操作的消息發(fā)送給不同的對象時,每個對象將根據自己所屬類中所定義的操作去執(zhí)行,故產生不同的結根據自己所屬類中所定義的操作去執(zhí)行,故產生不同的結果。果。n 例如:例如: “繪圖繪圖”操作,作用在操作,作用在“橢圓橢圓” 和和“矩形矩形” 上,上,畫出不同的圖形。畫出不同的圖形。n動態(tài)綁定動態(tài)綁定(dy
22、namic binding)是在運行時根據對象接收的是在運行時根據對象接收的消息動態(tài)地確定要連接的服務代碼。消息動態(tài)地確定要連接的服務代碼。類中操作的實現過程稱為方法。類中操作的實現過程稱為方法。 一個方法包括方法名、參數及方法體。一個方法包括方法名、參數及方法體。 方法描述了類與對象的行為,每一個對象都封裝了數據和方法描述了類與對象的行為,每一個對象都封裝了數據和算法兩個方面,數據由一組屬性表示,而算法即是當一個對算法兩個方面,數據由一組屬性表示,而算法即是當一個對象接收到一條消息后,它所包含的方法決定對象如何動作。象接收到一條消息后,它所包含的方法決定對象如何動作。通常是在某種編程語言(如
23、通常是在某種編程語言(如Java、C+)下實施的運算。)下實施的運算。9.3 面向對象建模面向對象建模 用面向對象方法成功地開發(fā)軟件的關鍵,同樣用面向對象方法成功地開發(fā)軟件的關鍵,同樣是對問題域的理解。面向對象方法最基本的原則,是對問題域的理解。面向對象方法最基本的原則,是按照人們習慣的思維方式,用面向對象觀點建是按照人們習慣的思維方式,用面向對象觀點建立問題域的模型,開發(fā)出盡可能自然地表現求解立問題域的模型,開發(fā)出盡可能自然地表現求解方法的軟件。方法的軟件。用面向對象方法開發(fā)軟件,通常需要建立用面向對象方法開發(fā)軟件,通常需要建立3種形種形式的模型,它們分別是描述系統(tǒng)數據結構的式的模型,它們分
24、別是描述系統(tǒng)數據結構的對象對象模型模型,描述系統(tǒng)控制結構的,描述系統(tǒng)控制結構的動態(tài)模型動態(tài)模型和描述系統(tǒng)和描述系統(tǒng)功能的功能的功能模型功能模型。這這3種模型各自從不同側面反映了系統(tǒng)的實質性內種模型各自從不同側面反映了系統(tǒng)的實質性內容,綜合起來則全面地反映了對目標系統(tǒng)的需求。容,綜合起來則全面地反映了對目標系統(tǒng)的需求。一個典型的軟件系統(tǒng)組合了上述一個典型的軟件系統(tǒng)組合了上述3方面內容:它使方面內容:它使用數據結構用數據結構(對象模型對象模型),執(zhí)行操作,執(zhí)行操作(動態(tài)模型動態(tài)模型),并且,并且完成數據值的變化完成數據值的變化(功能模型功能模型)。用面向對象方法開發(fā)軟件,在任何情況下,對象用面向對
25、象方法開發(fā)軟件,在任何情況下,對象模型始終都是最重要、最基本、最核心的。模型始終都是最重要、最基本、最核心的。9.4 對象模型對象模型面向對象方法強調圍繞對象而不是圍繞功能來面向對象方法強調圍繞對象而不是圍繞功能來構造系統(tǒng)。對象模型為建立動態(tài)模型和功能模型,構造系統(tǒng)。對象模型為建立動態(tài)模型和功能模型,提供了實質性的框架。提供了實質性的框架。統(tǒng)一建模語言統(tǒng)一建模語言UMLUML;定義類(屬性、服務)、類的圖形符號;定義類(屬性、服務)、類的圖形符號;類與類之間的關聯(lián)、泛化(繼承)、依賴和細類與類之間的關聯(lián)、泛化(繼承)、依賴和細化等關系及其表示等等?;汝P系及其表示等等。9.4 對象模型對象模型
26、n1.類圖簡介類圖簡介n我們看到的大多數UML圖都是類圖。類圖是最廣泛的一種模型,用來表述系統(tǒng)中各個對象的類型以及其間存在的各種靜態(tài)關系。顯示出類、接口以及它們之間的靜態(tài)結構和關系;我們常用類圖描述系統(tǒng)的結構。右是一個典型的類圖。類圖中的關系包括:依賴關系(Dependency)、泛化關系(Generalization)、關聯(lián)關系(Association)、實現關系(Realization) 。9.4 對象模型對象模型n2.類圖的作用類圖的作用n 類圖常用來描述業(yè)務或軟件系統(tǒng)的組成、結構和關系。我們通常通過下面三種方式使用類圖:n(1)為系統(tǒng)詞匯建模型n為系統(tǒng)的詞匯建模實際上是從詞匯表中發(fā)現類
27、,發(fā)現它的責任。n(2)模型化簡單的協(xié)作n協(xié)作是指一些類、接口和其他的元素一起工作,提供一些合作的行為,這些行為不是簡單地將元素加在一起就能實現的。例如:當我們?yōu)橐粋€分布式的系統(tǒng)中的事務處理過程創(chuàng)建模型時,我們不可能只通過一個類來表明事務是怎樣執(zhí)行的,事實上這個過程的執(zhí)行涉及到一系列的類的協(xié)同工作。使用類圖來可視化這些類和他們的關系。n(3)模型化一個邏輯數據庫模式n我們常用類圖設計數據庫的藍圖。在很多領域,我們想把持久性數據保存到關系數據庫或面向對象的數據庫中。我們可以用類圖為這些數據庫模式建立模型。9.4.1類圖的基本符號類圖的基本符號nUML中,表示一個類,主要是標識它的名稱、屬性和操作
28、。如圖所示,類由一個矩形表示,它包含3欄,在每欄中分別寫入類的名稱、類的屬性和類的操作/服務服務。圖3-2 Order類9.4.1類圖的基本符號類圖的基本符號n1名稱n每個類都必須有一個有別于其他類的名稱, 類名部分是不能省略的,其他組成部分可以省略。名稱(Name)是一個文本串,表示方法有兩種:n(1).簡單名:如圖中的Order(訂單),它就只是一個單獨的名稱。n(2).全名:也稱為路徑名,就是在類名前面加上包的名稱,例如java:awt:Rectangel、businessRule:order等。n對于類的命名規(guī)范要求,由字符、數字、下劃線組成的惟一的字符串即可。但在實際應用中,有一個普
29、遍采用的命名原則:采用CamelCase格式(大寫字母開頭、混合大小寫,每個單詞以大寫開始,避免使用特殊符號),盡可能避免使用縮寫。圖3-2 Order類9.4.1類圖的基本符號類圖的基本符號n2.屬性n屬性描述了類的靜態(tài)特征,在面向對象編程中,把屬性表示為成員變量。例如,在圖3-2所示的Order類中,列出了orderDate(下訂單時間)、destArea(送貨區(qū)域)、price(訂單總價格)、paymentType(支付類型)四個屬性,它們是用來描述每個具體的訂單對象的。n在屬性的前面有一個修飾,用來表示屬性的可見性,屬性的可見性一般都是private,這樣才符合面向對象的“封裝”思想。
30、通常屬性名的第一個字母是小寫的。圖3-2 Order類9.4.1類圖的基本符號類圖的基本符號n3.操作n操作是類所提供的服務,通俗地說,操作就是定義了對象所能做的事情。在面向對象編程語言中,它通常表示為成員方法。對于操作的圖示,有以下幾點需要說明:n(1) 操作名的命名規(guī)范也未硬性規(guī)定的,大家習慣采用和屬性名相同的命名規(guī)則。n(2) 對于操作,也經常會提供可見性修飾,只是通常應該聲明為public,否則它難以向其他類提供服務。n(3) 操作在表示時可以只寫出操作名,也可以將操作擁有的參數也寫出來,即寫成員方法的完整簽名。n屬性和操作名之前可附加的可見性修飾符: 加號(+)表示public;減號
31、(-)表示private;#號表示protected;省略這些修飾符表示具有package(包)級別的可見性。 如果屬性或操作名具有下劃線,則說明它是靜態(tài)的。 圖3-2 Order類9.4.1類圖的基本符號類圖的基本符號n4職責n 職責指類承擔的責任和義務。在矩形框中最后一欄中寫明類的職責。如圖9-3最后一行所示。圖9-3 職責的表示9.4.1類圖的基本符號類圖的基本符號n5約束n約束指定了類所要滿足的一個或多個規(guī)則。 在UML中,約束是用花括號括起來的自由文本。如圖9-4所示。圖9-4 約束的表示9.4.2表示關系的基本符號表示關系的基本符號 按照關系的性質,把關系分為4種,它們是關聯(lián)關系、
32、泛化/繼承關系、依賴關系、細化/實現關系。下面分別說明其語義。1 關聯(lián)關系關聯(lián)關系是比較抽象的高層次關系,為了對關聯(lián)進一步具體化,我們需要了解關聯(lián)的屬性。關聯(lián)的屬性包括名稱,角色,多重性,限定,導航。它具體包括聚合關系和組合關系。9.4.2表示關系的基本符號表示關系的基本符號 (1) 名稱可以使用一個動詞或動詞短語給關聯(lián)取名,用來描述關聯(lián)的性質。在描述關聯(lián)時,關聯(lián)的名稱并不是必需的,在關聯(lián)名和角色中選一即可??梢栽陉P聯(lián)上標識閱讀方向的方向指示符,以消除閱讀的歧義。下面的例子表示,關聯(lián)名稱是”使用” ,即,用戶使用計算機。圖9-16關聯(lián)名稱9.4.2 關聯(lián)的屬性n(2)角色n在關聯(lián)關系中,角色表
33、明了關聯(lián)的每一端在關聯(lián)中承擔的職責,即,關聯(lián)發(fā)生時,關聯(lián)的每一端在關聯(lián)中扮演的角色。角色的名稱應該是名詞或名詞短語,以解釋對象是如何參與關聯(lián)的。如圖9-16關聯(lián)的角色。n學生在關聯(lián)中,扮演的是學習者的角色;學校扮演的是教學者的角色。圖9-16關聯(lián)的角色332 關聯(lián)的屬性n(3)多重性n多重性就是某個類有多少個對象可以和另一個類的單個對象關聯(lián)。如圖3-18所示。上圖的多重性表示:一個顧客(customer)可以擁有一個到多個的賬戶(account),但是一個賬戶只能由一個顧客所擁有。圖3-18關聯(lián)的多重性CustermerAccount11.n942 關聯(lián)的屬性n(4)導航性n導航性描述了源對象
34、通過鏈接訪問目標對象。箭頭表明了導航的方向性,即,只有源對象才能訪問目標對象,反之,目標對象不能訪問源對象。如圖9-18所示。圖9-19導航性942 關聯(lián)的屬性n(5)限定符n如果源對象到目標對象是1對多關聯(lián),為了在多個目標對象的集合中查找到需要的目標對象,我們必須在目標對象集合中,選一個唯一標識目標對象的查找鍵(限定符,從目標對象的屬性中選擇),它應該是目標對象中的某個屬性,當然,也可以是表達式。n一個俱樂部(Club)可以有多個成員(Member),為了在成員集合(目標對象)上找到需要的對象,我們選擇memberId作為查找關鍵字,即,限定符。圖9-20 限定符ClubmemberIdMe
35、mbermemberId:String10.1受限多重性源對象目標對象限定符9.4.2表示關系的基本符號表示關系的基本符號 按照關系的性質,把關系分為4種,它們是依賴關系、泛化關系、 關聯(lián)關系、實現關系。下面分別說明其語義。1 關聯(lián)關系關聯(lián)關系是比較抽象的高層次關系,表示兩個類的對象之間存在某種語義上的聯(lián)系。為了對關聯(lián)進一步具體化,我們需要了解關聯(lián)的屬性。關聯(lián)的屬性包括名稱,角色,多重性,限定,導航。9.4.2表示關系的基本符號表示關系的基本符號 2 聚集關系聚集關系是關聯(lián)關系的特例,它表示類與類的關系是整體與部分之間的關系。在陳述需求時使用“包含”、“組成”、“分為部分”等字句,往往意味著存
36、在聚集關系。具體包括聚合關系/共享聚集關系和組合聚集關系。(1)聚合關系:在聚集關系中處于部分方的對象可參與多個處于整體方的對象的構成。例如,大學由多個學院組成。(2)組合關系:在聚集關系中處于部分方的對象與處于整體方的對象共存。例如,窗口中的菜單和按鈕不能離開窗口獨立存在,因此,是組合關系。圖3-13組合關系圖3-12 聚合關系9.4.2表示關系的基本符號表示關系的基本符號 3泛化關系/繼承關系是從特殊元素到一般元素的分類關系稱為泛化關系。模型元素可以是類、用例以及其他。如圖9-11所示。圖9-11 泛化關系9.4.2表示關系的基本符號表示關系的基本符號 4依賴關系和細化關系(1) 依賴關系
37、表示兩個或多個模型元素之間語義上的關系, 客戶元素以某種形式依賴于提供者元素。 實際上,關聯(lián)、實現/細化和泛化/繼承都是依賴關系。 如圖9-10所示。圖9-10 依賴關系9.4.2表示關系的基本符號表示關系的基本符號 n依賴關系可以細分為4大類:使用依賴、抽象依賴、 授權依賴、 綁定依賴。nA、使用依賴n表示客戶使用提供者提供的服務,以實現它的行為,下面都屬于使用依賴的具體形式:n使用(use)n調用(call)n參數(parameter)n發(fā)送(send)n實例化(instantiate)9.4.2表示關系的基本符號表示關系的基本符號nB、 抽象依賴n表示客戶與提供者之間的關系,客戶與提供者
38、屬于不同的抽象事物,具體依賴形式:n跟蹤(trace)n精化(refine)n派生(derive)nC、 授權依賴n表達一個事物訪問另一個事物的能力,具體依賴形式:n訪問(access)n導入(import)n友元(friend)nD、 綁定依賴n綁定依賴屬于較高級的依賴類型,用綁定模板以創(chuàng)建新的模型元素,具體依賴形式:綁定(bind)9.4.2表示關系的基本符號表示關系的基本符號n(2) 細化關系n表示兩個或多個模型元素之間語義上的關系, 客戶元素以某種形式對提供者元素進行細化或精化。 如圖9-11所示。圖9-11 細化關系分析類設計類細化9.5 動態(tài)模型動態(tài)模型動態(tài)模型表示瞬時的、行為化的
39、系統(tǒng)的動態(tài)模型表示瞬時的、行為化的系統(tǒng)的“控制控制”性質,性質,它規(guī)定了對象模型中的對象的合法變化序列。它規(guī)定了對象模型中的對象的合法變化序列。對一個對象來說,生命周期由許多階段組成,在每個特對一個對象來說,生命周期由許多階段組成,在每個特定階段中,都有適合該對象的一組運行規(guī)律和行為規(guī)則,定階段中,都有適合該對象的一組運行規(guī)律和行為規(guī)則,用以規(guī)范該對象的行為。生命周期中的階段也就是對象的用以規(guī)范該對象的行為。生命周期中的階段也就是對象的狀態(tài)。狀態(tài)。各對象之間相互觸發(fā)就形成了一系列的狀態(tài)變化。我們各對象之間相互觸發(fā)就形成了一系列的狀態(tài)變化。我們把一個觸發(fā)行為稱作一個事件。把一個觸發(fā)行為稱作一個事
40、件。狀態(tài)與事件密不可分,一個事件分開兩個狀態(tài),一個狀狀態(tài)與事件密不可分,一個事件分開兩個狀態(tài),一個狀態(tài)隔開兩個事件。事件表示時刻,狀態(tài)代表時間間隔。態(tài)隔開兩個事件。事件表示時刻,狀態(tài)代表時間間隔。9.6 功能模型功能模型圖圖6-1狀態(tài)圖狀態(tài)圖9.6 功能模型功能模型功能模型表示變化的系統(tǒng)的功能模型表示變化的系統(tǒng)的“功能功能”性質,它性質,它指明了系統(tǒng)應該指明了系統(tǒng)應該“做什么做什么”,因此更直接地反映,因此更直接地反映了用戶對目標系統(tǒng)的需求。了用戶對目標系統(tǒng)的需求。功能模型由一組數據流圖組成。在面向對象方功能模型由一組數據流圖組成。在面向對象方法學中,數據流圖遠不如在結構分析、設計方法法學中,
41、數據流圖遠不如在結構分析、設計方法中那樣重要。中那樣重要。同對象模型和動態(tài)模型比較,數據流圖并沒有同對象模型和動態(tài)模型比較,數據流圖并沒有增加新的信息,但是,建立功能模型有助于軟件增加新的信息,但是,建立功能模型有助于軟件開發(fā)人員更深入地理解問題域,改進和完善自己開發(fā)人員更深入地理解問題域,改進和完善自己的設計。的設計。因此,不能完全忽視功能模型的作用。因此,不能完全忽視功能模型的作用。9.6.1 用例圖用例圖n1. 用例圖的概念n用例圖是外部參與者所能觀察到的系統(tǒng)功能的模型圖,該圖呈現了一些參與者和一些用例,以及它們之間的關系,主要用于對系統(tǒng)、子系統(tǒng)或類的功能行為進行建模。圖圖9-1棋牌管理
42、系統(tǒng)的用例圖棋牌管理系統(tǒng)的用例圖9.6.1 用例圖用例圖n2. 用例圖的作用n用例圖展示了用例之間以及用例與參與者之間是怎樣相互聯(lián)系的。用例圖對系統(tǒng)、子系統(tǒng)或類的行為進行了可視化,使用戶能夠理解如何使用這些元素,并使開發(fā)者能夠實現這些元素。n用例圖主要用來描述用戶的功能需求。UML側重從最終用戶的角度來理解軟件系統(tǒng)的需求,強調誰在使用系統(tǒng)、系統(tǒng)可以完成哪些功能。用例分析技術已經是一種公認有效的用戶需求獲取、分析和描述技術。9.6.1 用例圖用例圖n3. 用例圖的組成元素n用例圖的組成元素包括用例、參與者、關系(用例間的關系,參與者之間的關系,參與者與用例之間的關系)。n多個用例組成一個系統(tǒng),參
43、與者是系統(tǒng)外部的一個實體,它以某種方式與系統(tǒng)交互,請求系統(tǒng)執(zhí)行用例,以獲得參與者需要的價值。n在用例圖中最為核心的兩個元素是參與者(Actor)和用例(Use Case)。9.6.1 用例圖用例圖nA. 參與者n參與者是為了完成某個任務,而與系統(tǒng)進行交互的實體。參與者是用戶相對系統(tǒng)而言所扮演的角色。nA.1 參與者有兩種表示方法,如圖9-2所示。圖9-2 參與者的兩種表示法9.6.1 用例圖用例圖nA.2 參與者分類n 參與者不僅可以由人承擔,還可以是其他系統(tǒng)、硬件設備,甚至是時鐘。對參與者有兩種分類方法:一種是按參與者本身的性質分,一種是按參與者的重要性來分。n(1) 按參與者性質分n1)其
44、它系統(tǒng):當系統(tǒng)需要與其它系統(tǒng)交互時,如ATM柜員機系統(tǒng)中,銀行后臺系統(tǒng)就是一個參與者;2)硬件設備:如果系統(tǒng)需要與硬件設備交互時,如在開發(fā)IC卡門禁系統(tǒng)時,IC卡讀寫器就是一個參與者;3)時鐘:當系統(tǒng)需要定時觸發(fā)時,時鐘就是參與者n(2)按參與者重要性分:n與某個用例交互的參與者可能有多個,按參與者對用例的重要性分為以下兩類:n1)主要參與者:從系統(tǒng)獲得可度量價值的用戶,他的需求驅動了用例所表示的行為或功能。n2)次要參與者:在系統(tǒng)中提供服務,并且不能脫離主要參與者而存在。9.6.1 用例圖用例圖nB. 用例nB.1 用例的概念n 用例是對一組場景共同特征的抽象,即,用例是對一組場景共同行為的
45、抽象,場景就是用例的一次完整的、具體的執(zhí)行過程。用例與場景的關系,如同類與對象的關系,用例應該給參與者帶來可見的價值。n. 場景n在系統(tǒng)中,按照某個順序執(zhí)行的一系列相關的動作后,實現了某種功能,把完成了這一功能的操作的集合稱為場景。 “場景”就是用戶使用系統(tǒng)的一個實際的、特定的場面 。n下面列舉一個場景例子。n開發(fā)者與用戶、客戶進行交流,構建場景和用例規(guī)格描述。一個場景就是描述用戶與系統(tǒng)之間的一系列交互活動,描述了系統(tǒng)一次具體執(zhí)行的行為路徑,即,一次完整的事件流。如,小劉通過銀行柜圓機(ATM系統(tǒng))取款3000元的場景,如圖9-3所示。9.6.1 用例圖用例圖場景名稱場景名稱 取款取款3000
46、元元參與者參與者 客戶小劉客戶小劉事件流事件流 (1) 小劉將銀行卡插入柜員機。小劉將銀行卡插入柜員機。(2)柜員柜員機要求客戶輸入卡密碼。機要求客戶輸入卡密碼。(3)小劉輸入卡密碼,并確認密碼。)小劉輸入卡密碼,并確認密碼。(4)柜員柜員機屏幕提示,請客戶選擇服務類型。機屏幕提示,請客戶選擇服務類型。(5)小劉選擇取款服務。)小劉選擇取款服務。(6)柜員柜員機提示:請客戶輸入取款數目。機提示:請客戶輸入取款數目。(7)客戶輸入)客戶輸入3000,并確認。,并確認。(8)柜員柜員機出錢口輸出機出錢口輸出30張一佰元的人民幣。張一佰元的人民幣。(9)小劉取回)小劉取回30張張100元面額的人民幣
47、。元面額的人民幣。(10)柜員柜員機提示服務類型:確認、或繼續(xù),或退卡。機提示服務類型:確認、或繼續(xù),或退卡。(11)小劉選擇服務類型退卡,結束服務。)小劉選擇服務類型退卡,結束服務。圖9-3 小劉取款場景9.6.1 用例圖用例圖nB.2 用例的表示n每個用例都有一個名字,即,用例的名稱,用例的名稱有兩種表示方法:n簡單名:沒有標識用例所屬的包。n路徑名:在用例名前標識了用例所屬的包。圖6-用例的名稱表示 9.6.1.1 參與者之間的泛化關系n參與者之間的關系一般表現為特殊/一般化關系,即,泛化關系。泛化關系的表示如圖9-5所示。圖9-5 參與者是泛化關系9.6.1.1 參與者之間的泛化關系n
48、對于參與者而言,泛化關系的引用可以有效地降低模型的復雜度。例如:在圖96所示的用例圖中,我們引入一個“迎賓員”的角色,希望讓迎賓員能完成“安排座位”的職責??偱_服務員是一種“特殊”地迎賓員,它不僅可以安排座位,還能夠辦理結帳。那么通過泛化來更有效地組織這個用例圖。圖9-6參與者泛化9.6.1.2 標識用例間的關系n包含關系n在UML中,包含關系用構造型include表示,它是指基用例(base use case)在它內部的某一個位置上顯式地合并了另一個用例的行為。n(1) 包含用例的表示n包含是指一個用例被另一個用例使用,被使用的用例就是包含用例,使用包含用例的是基用例。9.6.1.2 標識用例間的關系圖圖9-7 包含用例包含用例n圖9-7說明:查詢、提款、轉帳三個是基用例,它們都包含打印回執(zhí)用例基
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 土力學復習測試題
- 河南省部分重點高中2025屆高考適應性考試考前模擬卷(二)物理試題含答案
- 研學基地課程設計流程表
- xx市產業(yè)園基礎設施項目可行性研究報告
- 校園農耕課程設計理念
- 2024年度企業(yè)內部審計保密及合作協(xié)議3篇
- 招商創(chuàng)業(yè)課程設計與實施
- 2024年企業(yè)員工領導力與執(zhí)行力培訓協(xié)議范本2篇
- 移動通信課程設計lmt
- 素描與人體結構課程設計
- 醫(yī)療質量管理工具課件
- 2023年上海市閔行區(qū)中心醫(yī)院住院醫(yī)師規(guī)范化培訓招生(口腔科)考試參考題庫+答案
- 單肺通氣中的麻醉管理
- 建筑施工安全檢查標準jgj59-2023
- 2023-2024學年江蘇省高郵市小學數學六年級上冊期末通關考試題
- GB/T 7631.5-1989潤滑劑和有關產品(L類)的分類第5部分:M組(金屬加工)
- GB/T 40428-2021電動汽車傳導充電電磁兼容性要求和試驗方法
- 中國人民大學組織行為管理學
- 七年級下冊道德與法治復習資料
- 奧齒泰-工具盒使用精講講解學習課件
- DB32T 4353-2022 房屋建筑和市政基礎設施工程檔案資料管理規(guī)程
評論
0/150
提交評論