![軟件工程第6章-面向對象方法學與UML_第1頁](http://file4.renrendoc.com/view/7bffbcc480113d9cf2b14d77ba9f11f2/7bffbcc480113d9cf2b14d77ba9f11f21.gif)
![軟件工程第6章-面向對象方法學與UML_第2頁](http://file4.renrendoc.com/view/7bffbcc480113d9cf2b14d77ba9f11f2/7bffbcc480113d9cf2b14d77ba9f11f22.gif)
![軟件工程第6章-面向對象方法學與UML_第3頁](http://file4.renrendoc.com/view/7bffbcc480113d9cf2b14d77ba9f11f2/7bffbcc480113d9cf2b14d77ba9f11f23.gif)
![軟件工程第6章-面向對象方法學與UML_第4頁](http://file4.renrendoc.com/view/7bffbcc480113d9cf2b14d77ba9f11f2/7bffbcc480113d9cf2b14d77ba9f11f24.gif)
![軟件工程第6章-面向對象方法學與UML_第5頁](http://file4.renrendoc.com/view/7bffbcc480113d9cf2b14d77ba9f11f2/7bffbcc480113d9cf2b14d77ba9f11f25.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
軟件工程6面向對象方法學與UML本章概述
面向對象方法有許多優(yōu)點,是目前廣泛使用的軟件開發(fā)方法之一。面向對象方法的要素是對象、類、繼承和用消息通信。軟件工程領域在1995~1997年期間取得的最重要的成果之一,是統(tǒng)一建模語言(UnifiedModelingLanguage,UML)。UML是一種直觀的、通用的、可視化建模語言。在用面向對象方法進行軟件分析和設計時,必須按照其方法和原則,要懂得UML的概念、符號和使用規(guī)則,然后再學習如何靈活應用UML進行軟件的分析、設計。目前在設計移動互聯(lián)系統(tǒng)時,常采用面向對象方法。在介紹用面向對象的方法進行軟件分析和設計時,本書采用統(tǒng)一建模語言(UML)來描述系統(tǒng)?!锉菊轮攸c:面向對象方法的概念;UML圖。面向對象方法學與UMLContents目錄面向對象方法概述01UML概述02UML圖03UML的應用0401面向對象方法概述面向對象方法的要素和優(yōu)點面向對象方法的概念6.1面向對象方法概述
傳統(tǒng)軟件工程方法(結構化分析方法)是其他軟件技術的基礎,曾經(jīng)是主要使用的系統(tǒng)分析設計方法。結構化分析方法將結構化分析和結構化設計人為地分離成兩個獨立的部分。1結構化分析方法將描述數(shù)據(jù)對象和描述作用于數(shù)據(jù)上的操作分別進行,采用不同的表示方法。實際上數(shù)據(jù)和對數(shù)據(jù)的處理是密切相關、不可分割的,分別處理會增加軟件開發(fā)和維護的難度。2傳統(tǒng)軟件工程方法:6.1面向對象方法概述面向對象方法簡稱為OO(ObjectedOriented)方法,是1979年以后發(fā)展起來的,是當前軟件方法學的主要方向,也是目前最有效、最實用和最流行的軟件開發(fā)方法之一。面向對象方法是在汲取結構化思想和優(yōu)點的基礎上發(fā)展起來的,是對結構化方法的進一步發(fā)展和擴充。ObjectedOriented6.1面向對象方法概述面向對象方法與傳統(tǒng)方法的不同之處在于,其目的是有效地描述和刻畫問題領域的信息和行為,以全局的觀點來考慮系統(tǒng)中各種對象的聯(lián)系,考慮系統(tǒng)的完整性和一致性,是對問題域的完整、直接的映射。面向對象設計方法和傳統(tǒng)方法一樣,也分為面向對象分析和面向對象設計兩個步驟,但分析和設計時所用的概念和表示法是相同的,它把兩個步驟結合在一起,不強調(diào)分析與設計之間的嚴格區(qū)分,不同的階段可以交錯、回溯;不過,分析和設計仍然有不同的分工和側重點。ObjectedOriented6.1面向對象方法概述面向對象分析階段01在面向對象分析(ObjectOrientedAnalysis,OOA)階段考慮問題和系統(tǒng)責任,建立一個獨立于系統(tǒng)實現(xiàn)的OOA模型。在分析階段通常建立3種模型:對象模型、動態(tài)模型和功能模型。首先定義對象及其屬性,建立對象模型。這里的對象和傳統(tǒng)方法中的數(shù)據(jù)對象(實體)不同,需要根據(jù)問題域中的操作規(guī)則和內(nèi)在性質(zhì)定義對象的行為特征(服務),建立動態(tài)模型,用動態(tài)模型描述對象的生存周期。分析對象之間的關系采用封裝、繼承、消息通信等原則使問題域的復雜性得到控制。最后根據(jù)對象及其生存周期定義處理過程,建立功能模型。6.1面向對象方法概述面向對象設計階段02在面向對象設計(ObjectOrientedDesign,OOD)階段考慮與實現(xiàn)有關的因素,對OOA模型進行調(diào)整并補充與實現(xiàn)有關的部分,形成面向對象設計模型。面向對象方法考慮問題的基本原則是,盡可能模擬人類習慣的思維方式。面向對象使描述問題的問題空間(也稱為問題域)與實現(xiàn)解法的解空間(也稱為求解域)在概念和表示方法上盡可能一致。面向對象方法有許多優(yōu)點,是目前廣泛使用的軟件開發(fā)方法之一。6.1面向對象方法概述6.1.1面向對象方法的要素和優(yōu)點面向對象方法認為客觀世界是由各種對象組成的,任何事物都是對象,復雜對象由簡單對象組成。把面向對象實體抽象為問題域中的對象,用對象分解取代了傳統(tǒng)的功能分解。1
把所有對象都劃分成各種對象類,每個對象類都定義了一組數(shù)據(jù)和一組方法。其中,數(shù)據(jù)用于表示對象的靜態(tài)屬性,是對象的狀態(tài)信息。方法是允許施加于該類對象上的操作,是該類所有對象共享的。2面向對象方法的四要素:對象類6.1面向對象方法概述6.1.1面向對象方法的要素和優(yōu)點按照父類(或稱為基類)與子類(或稱為派生類)的關系,把若干對象類組成一個層次結構的系統(tǒng)(也稱為類等級)。在層次結構中,下層的派生類具有和上層的基類相同的特性(包括數(shù)據(jù)和方法),稱為繼承。3
對象彼此之間僅能通過傳遞消息相互聯(lián)系。對象與傳統(tǒng)數(shù)據(jù)的本質(zhì)區(qū)別是,它不是被動地等待外界對它施加操作,而是必須發(fā)消息請求執(zhí)行某個操作,處理它的數(shù)據(jù)。對象是處理的主體,外界不能直接對它的數(shù)據(jù)進行操作。4繼承用消息通信
對象的信息都被封裝在該對象類的定義中,必須發(fā)消息請求執(zhí)行它的某個操作,處理它的數(shù)據(jù),不能從外界直接對它的數(shù)據(jù)進行操作,這就是封裝性。面向對象方法的四要素:6.1面向對象方法概述6.1.1面向對象方法的要素和優(yōu)點綜上所述,面向對象就是使用對象、類和繼承機制,并且對象之間僅能通過傳遞消息實現(xiàn)彼此通信??梢杂孟铝蟹匠虂砀爬ǎ篛O=Objects+Classes+Inheritance+CommunicationwithMessages(面向對象=對象+類+繼承+用消息通信)僅使用對象和消息的方法,稱為基于對象的方法(Object-based),不能稱為面向對象方法。使用對象、消息和類的方法,稱為基于類的方法(Class-based),也不能稱為面向對象方法。只有同時使用對象、類、繼承和消息的方法,才是面向對象的方法。6.1面向對象方法概述6.1.1面向對象方法的要素和優(yōu)點1與人類習慣的思維方法一致
傳統(tǒng)的程序設計技術是面向過程的設計方法,以算法為核心,把數(shù)據(jù)和過程作為相互獨立的部分,數(shù)據(jù)代表問題空間中的客體,程序代碼用于處理數(shù)據(jù)。這樣,忽略了數(shù)據(jù)和操作之間的內(nèi)在聯(lián)系,問題空間和解空間并不一致。面向對象技術以對象為核心,盡可能接近人類習慣的抽象思維方法,描述問題空間和描述解空間盡可能一致。對象分類、從特殊到一般、建立類等級、獲得繼承等開發(fā)過程,符合人類認識世界、解決問題的過程。2穩(wěn)定性好
面向對象方法用對象模擬問題域中的實體,以對象間的聯(lián)系刻畫實體間的聯(lián)系。當系統(tǒng)的功能需求變化時不會引起軟件結構的整體變化,只需進行局部的修改。由于現(xiàn)實世界中的實體是相對穩(wěn)定的,因而,以對象為中心構造的軟件系統(tǒng)也比較穩(wěn)定。面向對象方法的主要優(yōu)點:6.1面向對象方法概述6.1.1面向對象方法的要素和優(yōu)點4較易開發(fā)大型軟件產(chǎn)品
用面向對象技術開發(fā)大型軟件時,把大型產(chǎn)品看做是一系列相互獨立的小產(chǎn)品,降低了開發(fā)的技術難度和開發(fā)工作管理的難度。5可維護性好
由于面向對象的軟件穩(wěn)定性比較好、容易修改、容易理解、易于測試和調(diào)試,因而軟件的可維護性好。3可重用性好
面向對象技術可以重復使用一個對象類。例如,創(chuàng)建類的實例,直接使用類;派生一個滿足當前需要的新類。子類可以重用其父類的數(shù)據(jù)結構和程序代碼,并且可以方便地進行修改和擴充,子類的修改并不影響父類的使用。6.1面向對象方法概述6.1.2面向對象方法的概念類和實例消息繼承對象封裝多態(tài)重載6.1面向對象方法概述
6.1.2面向對象方法的概念對象的定義在應用領域中,有意義的、與所要解決的問題有關系的任何事物都可以作為對象,可以是具體的物理實體的抽象、人為的概念等。例如,一名學生、一個班級、借書、還書等。對象是封裝了數(shù)據(jù)結構及可施加在這些數(shù)據(jù)結構上的操作的封裝體,它有唯一的標識符,向外界提供一組服務(操作)。01對象6.1面向對象方法概述
6.1.2面向對象方法的概念屬性(Attribute)屬性是對象的數(shù)據(jù),它是對客觀世界實體所具有性質(zhì)的抽象。每個對象都有自己特有的屬性值。例如,在學生成績管理系統(tǒng)中,可以定義“學生”類,并定義姓名、性別、學號等相同的屬性。每位學生有自己特定的姓名、學號、性別、年齡等,這些就是學生類的屬性。02對象6.1面向對象方法概述
6.1.2面向對象方法的概念方法(Method)方法是對象所能執(zhí)行的操作。方法描述了對象執(zhí)行操作的算法和響應消息的方法,方法的實現(xiàn)要給出代碼。對象中的數(shù)據(jù)表示對象的狀態(tài),一個對象的狀態(tài)只能由該對象的操作來改變。每當需要改變對象的狀態(tài)時,只能由其他對象向該對象發(fā)送消息,對象響應消息時,按照消息模式找出與之匹配的方法,并執(zhí)行該方法來改變對象的狀態(tài)。例如,“學生”對象可以定義選課、補考、升級/留級等操作,每個對象實現(xiàn)具體的操作。有的學生成績不好,需要通過補考來決定升級或留級,而成績合格的學生可直接升級。03對象6.1面向對象方法概述
6.1.2面向對象方法的概念對象的特點以數(shù)據(jù)為核心:對象的操作圍繞對其數(shù)據(jù)所需要做的處理來設置,操作的結果往往與當時所處的狀態(tài)(數(shù)據(jù)的值)有關。主動性:對象是進行處理的主體,不是被動地等待對它進行處理,而是必須通過接口向對象發(fā)送消息,請求它執(zhí)行某個操作,處理它的私有數(shù)據(jù)。實現(xiàn)了數(shù)據(jù)封裝:對象的數(shù)據(jù)是封裝起來的,是不可見的,對數(shù)據(jù)的訪問和處理只能通過公有的操作進行。本質(zhì)上具有并行性:不同對象各自獨立地處理自身的數(shù)據(jù),彼此通過發(fā)送消息傳遞信息完成通信。模塊獨立性好:要求模塊內(nèi)聚性強,耦合性弱。04對象6.1面向對象方法概述
6.1.2面向對象方法的概念類是對具有相同數(shù)據(jù)和相同操作的一組相似對象的定義。在定義類的屬性和操作時,一定要與所解決的問題域有關。同類對象具有相同的屬性和方法,但是,每個對象的屬性值不同,執(zhí)行方法的結果也不同。類01類和實例6.1面向對象方法概述
6.1.2面向對象方法的概念例如,在學生成績管理系統(tǒng)中,可以定義“學生”類,該類可定義姓名、學號、性別、年齡等相同的屬性。類中的每位學生都有自己特定的姓名、學號、性別、年齡等,這些就是學生類的屬性??梢远x學生類的操作:“留級”/“升級”,如果某個學生對象的不及格課程門數(shù)達到規(guī)定的數(shù)量,就要“留級”,而成績合格的學生則“升級”。而在學校圖書館管理系統(tǒng)中,可以定義借書證號、姓名、性別等屬性,可以定義“借書”/“還書”等操作。但是“留級”/“升級”與圖書館管理沒有關系,就不必定義了。類01類和實例6.1面向對象方法概述
6.1.2面向對象方法的概念實例是由某個特定的類所描述的一個具體對象。例如,學生是一個類,某位學生“王偉”就是學生類的一個實例。一般地,實例的概念還有更廣泛的用法,其他建模元素也有實例。實例02類和實例6.1面向對象方法概述
6.1.2面向對象方法的概念
消息就是向對象發(fā)出的服務請求,是要求某個對象執(zhí)行它所屬的類中所定義的某個操作的規(guī)格說明。一個消息通常由以下3部分組成:01
接收消息的對象(提供服務的對象的標識符);03
輸入信息和回答信息。02
消息標識符(也稱為消息名、服務標識);消息6.1面向對象方法概述
6.1.2面向對象方法的概念封裝就是把對象的屬性和方法(服務)結合成一個獨立的單位,盡可能隱蔽對象的內(nèi)部細節(jié)。封裝實際上也就是信息隱藏,通過封裝把對象的實現(xiàn)細節(jié)對外界隱藏起來。對用戶來說,實現(xiàn)部分是不可見的,用戶可見的是接口(即協(xié)議)。封裝可以保護對象,防止用戶直接存取對象的內(nèi)部細節(jié),封裝也保護了客戶端,對象實現(xiàn)部分的改變不會影響客戶端。Encapsulation封裝6.1面向對象方法概述
6.1.2面向對象方法的概念特殊類的對象擁有其一般類的全部屬性與服務,稱為特殊類對一般類的繼承。繼承是子類自動地擁有父類中定義的屬性和方法的機制。面向對象方法把類組成一個層次結構的系統(tǒng),稱為類等級:子類/父類或派生類/基類或特殊類/一般類。繼承具有傳遞性,一個對象繼承了它所在的類等級中、它的上層類的全部屬性和方法,它的子類又繼承了它的屬性和方法。Inheritance繼承6.1面向對象方法概述6.1.2面向對象方法的概念繼承有兩類:單繼承和多重繼承。單繼承:一個類只允許有一個父類,即類等級為樹形結構時,類的繼承是單繼承。例如,學生類分為專科生、本科生、研究生3個子類,就是單繼承。多重繼承:當一個類有多個父類,即類等級為網(wǎng)狀結構時,類的繼承是多重繼承。例如,冷藏車繼承了汽車類和冷藏設備類兩個類的屬性和服務。Inheritance消息6.1面向對象方法概述
6.1.2面向對象方法的概念多態(tài)性是指允許屬于不同類的對象對同一消息做出響應。例如,不同層次的類可以共享一個行為的名稱,在接收到發(fā)給它的消息時,根據(jù)對象所屬的類動態(tài)選用在該類中定義的實現(xiàn)算法,即該行為具有多態(tài)性。例如,多邊形的特殊類有正多邊形、軸向矩形。在多邊形繪圖時,需要確定n個頂點的坐標;在正多邊形繪圖時,需要確定其邊數(shù)、中心坐標、外接圓半徑和一個頂點的坐標;而在軸向矩形繪圖時,只需要確定與坐標原點相對的一個頂點的坐標。因此,多邊形繪圖時的算法具有多態(tài)性。Polymorphism多態(tài)性6.1面向對象方法概述
6.1.2面向對象方法的概念重載函數(shù)重載
在同一作用域內(nèi)的若干參數(shù)特征不同的函數(shù),可以使用相同的函數(shù)名。在C++語言中,函數(shù)重載是根據(jù)函數(shù)變元的個數(shù)和類型決定使用哪個實現(xiàn)代碼的。運算符重載
同一運算符可以施加于不同類型的操作數(shù)上面。在C++語言中,運算符重載是根據(jù)被操作數(shù)的類型決定使用運算符的哪種語義的。重載02UML概述UML的發(fā)展UML的內(nèi)容6.2UML概述
6.2.1UML的發(fā)展統(tǒng)一建模語言(UML)是由世界著名的面向對象技術專家GradyBooch,JimRumbaugh和IvarJacobson發(fā)起,在面向對象的Booch方法、對象建模技術(ObjectModelingTechnique,OMT)和面向對象軟件工程(ObjectOrientedSoftwareEngineering,OOSE)的基礎上,不斷進行完善和發(fā)展的一種建模語言。1996年年底,UML已經(jīng)穩(wěn)定地占領了面向對象技術市場的85%,成為事實上的工業(yè)標準。1997年11月,國際對象管理組織(OMG)批準把UML1.1作為基于面向對象技術的標準建模語言。在計算機學術界、軟件產(chǎn)業(yè)界、商業(yè)界,UML已經(jīng)逐漸成為人們?yōu)楦鞣N系統(tǒng)建立模型,描述系統(tǒng)體系結構、商業(yè)體系結構和商業(yè)過程時使用的統(tǒng)一工具,在實踐過程中人們還在不斷擴展它的應用領域。對象技術組織(ObjectTechnologyOrganization)已將UML作為對象建模技術(OMT)的行業(yè)標準。6.2UML概述
6.2.1UML的發(fā)展1模型是為了理解事物而對事物做出的一種抽象,是對事物的一種書面描述。通常,模型由一組圖形符號和組織這些符號的規(guī)則組成,模型的描述應當無歧義。在開發(fā)軟件系統(tǒng)時,建立模型的目的是為了更好地理解問題、減少問題的復雜性、驗證模型是否滿足用戶對系統(tǒng)的需求,并在設計過程中逐步把實現(xiàn)的有關細節(jié)加進模型中,最終用程序實現(xiàn)模型。UML采用了面向對象的概念,引入了各種獨立于語言的表示符號。UML通過建立用例模型、靜態(tài)模型和動態(tài)模型完成對整個系統(tǒng)的建模,所定義的概念和符號可用于軟件開發(fā)過程的分析、設計和實現(xiàn)的全過程。軟件開發(fā)人員不必在開發(fā)過程的不同階段進行概念和符號的轉換。26.2UML概述
6.2.1UML的發(fā)展3面向對象軟件工程(OOSE)方法的最大特點是面向用例(UseCase)。用例代表某些用戶可見的功能,實現(xiàn)一個具體的用戶目標。用例代表一類功能而不是使用該功能的某一具體實例。用例是精確描述需求的重要工具,貫穿于整個軟件開發(fā)過程,包括對系統(tǒng)的測試和驗證過程。6.2UML概述
6.2.2UML的內(nèi)容01
UML是一種描述、構造、可視化和文檔化的軟件建模語言。03
UML采用圖形表示法,是一種可視化的圖形建模語言。UML的主要內(nèi)容包括UML語義、UML表示法和幾種模型。02UML是面向對象技術中軟件分析與設計的標準建模語言,它統(tǒng)一了面向對象建模的基本概念、術語及其圖形符號,建立了便于交流的通用語言。03
UML表示法為建模者和建模工具的開發(fā)者提供了標準的圖形符號和文字表達的語法。這些圖形符號和文字所表達的是應用級的模型,使用這些圖形符號和正文語法為系統(tǒng)建模構造了標準的系統(tǒng)模型。UML表示法由UML圖、視圖、模型元素、通用機制和擴展機制組成。6.2UML概述6.2.2UML的內(nèi)容1UML的基本元素層
基本元素層由基本元素(Thing)組成,代表要定義的所有事物。2元模型層
元模型層由UML的基本元素組成,包括面向對象和面向構件的概念,每個概念都是基本元素的實例。它為建模者和使用者提供了簡單、一致、通用的表示符號和說明。3靜態(tài)模型層
靜態(tài)模型層由UML靜態(tài)模型組成,靜態(tài)模型描述系統(tǒng)的元素及元素間的關系,常稱為類模型。4用例模型層
用例模型層由用例模型組成,用例模型從用戶的角度描述系統(tǒng)需求,它是所有開發(fā)活動的指南。UML語義是定義在一個建立模型的框架中的,建??蚣苡腥缦?個層次(抽象級別)。6.2UML概述6.2.2UML的內(nèi)容行為圖:包括狀態(tài)圖和活動圖,用于描述系統(tǒng)的動態(tài)行為和對象之間的交互關系。UML的模型圖交互圖:包括順序圖和協(xié)作圖,用于描述系統(tǒng)的對象之間的動態(tài)合作關系。用例圖:用于表示系統(tǒng)的功能,并指出各功能的操作者。12345靜態(tài)圖:包括類圖、對象圖及包,表示系統(tǒng)的靜態(tài)結構。實現(xiàn)圖:包括構件圖和配置圖,用于描述系統(tǒng)的物理實現(xiàn)。UML的模型是用圖來表示的,共有5類9種圖。6.2UML概述6.2.2UML的內(nèi)容135狀態(tài)視圖6活動視圖7交互視圖8模型管理視圖1靜態(tài)視圖2用例視圖3實現(xiàn)視圖4部署視圖視圖由若干張圖構成,從不同的目的或角度描述系統(tǒng)。UML視圖主要包括:靜態(tài)視圖、用例視圖、實現(xiàn)視圖、部署視圖、狀態(tài)視圖、活動視圖、交互視圖、模型管理視圖等。6.2UML概述6.2.2UML的內(nèi)容
圖中使用的概念,如用例、類、對象、消息和關系,統(tǒng)稱為模型元素。模型元素在圖中用相應的圖形符號表示。
一個模型元素可以在多個不同的圖中出現(xiàn),但它的含義和符號是相同的。模型元素6.2UML概述6.2.2UML的內(nèi)容412345字符串:用于表示有關模型的信息。名字:用于表示模型元素。標號:用于表示附屬于圖形符號的字符。特定字符串:用于表示附屬于模型元素的特性。類型表達式:用于聲明屬性變量和參數(shù)。3
UML為所有元素在語義和語法上提供了簡單、一致、通用的定義性說明。UML利用通用機制為圖附加一些額外信息。通用機制的表示方法有:6.2UML概述6.2.2UML的內(nèi)容擴展機制標簽(用{}表示)版型(用《》表示)約束(用{}表示)UML的擴展機制使它能夠適應一些特殊方法或用戶的某些特殊需要。6.2UML概述6.2.2UML的內(nèi)容靜態(tài)模型描述系統(tǒng)內(nèi)的對象、類、包以及類與類、包與包之間的相互關系等。靜態(tài)模型用類圖、對象圖、包、構件圖、部署圖等描述。02用例模型描述用戶所理解的系統(tǒng)功能。用例模型通過用例圖描述。01實現(xiàn)模型包括構件圖和部署圖,它們描述了系統(tǒng)實現(xiàn)時的一些特性。04動態(tài)模型描述系統(tǒng)的行為,描述系統(tǒng)中的對象通過通信相互協(xié)作的方式及對象在系統(tǒng)中改變狀態(tài)的方式等。動態(tài)模型用狀態(tài)圖、順序圖、活動圖、協(xié)作圖等描述。03UML可以建立系統(tǒng)的用例模型、靜態(tài)模型、動態(tài)模型和實現(xiàn)模型,每種模型由適當?shù)腢ML圖組成。03UML圖用例圖類圖和包順序圖活動圖對象圖狀態(tài)圖協(xié)作圖構件圖部署圖6.3UML圖
符號表示內(nèi)容注釋:框中的文字是注釋內(nèi)容。同步消息:表示調(diào)用者發(fā)出消息后必須等待消息返回。只有當處理消息的操作執(zhí)行完畢,調(diào)用者才可以繼續(xù)執(zhí)行自己的操作。異步消息:發(fā)送者發(fā)出消息后,不用等待消息處理完就可以繼續(xù)執(zhí)行自己的操作。異步消息主要用于描述實時系統(tǒng)中的并發(fā)行為。簡單消息:表示簡單的控制流,只表示消息從一個對象傳給另一個對象,沒有描述通信的任何細節(jié)。同步且立即返回:可以把一個簡單消息和一個同步消息合并成一個消息,這樣的消息表示操作調(diào)用一旦完成就立即返回。
UML圖包括用例圖、類圖、對象圖、狀態(tài)圖、順序圖、活動圖、協(xié)作圖、構件圖、部署圖9種。以下幾種符號在各種UML圖中可能都要用。6.3UML圖
6.3.1用例圖用例代表某些用戶可見的功能,實現(xiàn)一個具體的用戶目標。整個系統(tǒng)功能是由一系列用例組成的,待所有用例設計完成,系統(tǒng)設計工作也就完成了,這就是用例驅動方法。用例圖(UseCaseDiagram)定義了系統(tǒng)的功能需求。用例圖從用戶的角度描述系統(tǒng)功能,并指出各功能的操作者。用UML開發(fā)軟件,是對用例進行迭代、漸增式地構造的過程。用例圖的主要元素是用例、執(zhí)行者和通信聯(lián)系。用例圖中用方框畫出系統(tǒng)的功能范圍,該系統(tǒng)功能的用例都置于方框中,用例的執(zhí)行者都置于方框外。執(zhí)行者和用例之間要進行通信聯(lián)系(信息交換)。UseCaseDiagram6.3UML圖
6.3.1用例圖用例用例是一個類,它代表一類功能而不是使用該功能的某一具體實例。用例代表某些用戶可見的功能,實現(xiàn)一個具體用戶目標。用例由執(zhí)行者激活,并提供確切的值給執(zhí)行者。用例可大可小,但必須是對一個具體用戶目標實現(xiàn)的完整描述。用例之間存在一定的關系,如一般-特殊關系、包含關系(特殊的依賴關系)。
用例用橢圓()表示。6.3UML圖
6.3.1用例圖執(zhí)行者執(zhí)行者實際上就是類。執(zhí)行者是與系統(tǒng)交互的人或物。執(zhí)行者是能夠使用某個功能的一類人或物。執(zhí)行者之間可以有一般-特殊關系。
執(zhí)行者也稱角色,用一個人形圖案()表示。6.3UML圖
6.3.1用例圖執(zhí)行者和用例之間要交換信息,稱為通信聯(lián)系。執(zhí)行者與用例之間用線段連接,表示兩者之間進行通信聯(lián)系。執(zhí)行者不一定是一個具體的人,可能是使用該系統(tǒng)的其他系統(tǒng)或設備等,但都用人形圖案來表示。執(zhí)行者激活用例,并與用例交換信息。單個執(zhí)行者可與多個用例聯(lián)系;反過來,一個用例也可與多個執(zhí)行者聯(lián)系。對于同一個用例,不同執(zhí)行者起的作用也可以不同。6.3UML圖
6.3.1用例圖腳本是用例的實例。腳本是系統(tǒng)的一次具體執(zhí)行過程。用例圖中應盡可能包含所有的腳本,才能較完整地從用戶使用的角度來描述系統(tǒng)的功能。6.3UML圖
案例畫出飲用水自動售水系統(tǒng)的用例圖。例6-1飲用水自動售水系統(tǒng)的使用方法如下:供水正常時,綠燈亮,等待顧客投幣。如果顧客投入一元硬幣,則可以自動控制放水5L;若投入五角硬幣,可放水2.5L;如果選擇一元,投入兩個五角硬幣,也可放水5L。如果連續(xù)放水較多,飲用水來不及供應,會亮紅燈表示要求顧客等待,并會把顧客投入的硬幣掉下來。供水恢復正常時,紅燈滅、綠燈亮。顧客投入的硬幣由收銀員定期回收。要求畫出該系統(tǒng)的用例圖。6.3UML圖
案例畫出飲用水自動售水系統(tǒng)的用例圖。例6-1解:下面通過分析該系統(tǒng)的腳本、用例、執(zhí)行者,從而畫出用例圖。顧客甲投入一個一元硬幣,系統(tǒng)收到錢后放出5L水,這個過程就是一個腳本。飲用水自動售水系統(tǒng)中,投入硬幣的人可以是甲,也可以是乙,但是甲或乙不能稱為執(zhí)行者。因為具體某個人,如甲,可以放入一元硬幣,也可以放入五角硬幣,還可以執(zhí)行取款功能,把錢取走。根據(jù)系統(tǒng)功能,可以將執(zhí)行者分為收銀員和顧客兩類。顧客可以投入一元或五角的硬幣,顧客投入兩個五角硬幣和投入一個一元硬幣的效果相同,因而顧客買水有兩個腳本。如果系統(tǒng)飲用水產(chǎn)生得不夠,系統(tǒng)亮紅燈并把投入的硬幣掉下來,這個過程是另一個腳本。收銀員取款也是一個腳本。故系統(tǒng)共有4個腳本。圖示是飲用水自動售水系統(tǒng)的用例圖。案例畫出飲用水自動售水系統(tǒng)的用例圖。例6-16.3UML圖
6.3UML圖
6.3.2類圖和包類圖(ClassDiagram)描述類與類之間的靜態(tài)關系。類圖表示系統(tǒng)或領域中的實體以及實體之間的關聯(lián),由表示類的類框和表示類之間如何關聯(lián)的連線所組成。包用于把各種相關的建模元素組織在一起,形成一個整體。6.3UML圖
6.3.2類圖和包類圖的符號01類的UML圖標是一個矩形框,分成3個部分,上部寫類名,中間寫屬性,下部寫操作。類的圖形符號如圖6-4所示。類與類之間的關系用連線表示,不同的關系用不同的連線和連線端點處的修飾符來區(qū)別,如圖6-4所示。圖6-4類的圖形符號和關系的連線6.3UML圖
6.3.2類圖和包類的名稱類的名稱是名詞,應當含義明確、無歧義。類的屬性描述該類對象的共同特性。類屬性的值應能描述并區(qū)分該類的每個對象。例如,學生對象有屬性“姓名”,是每個學生都具有的共同特性,而具體的某個姓名可以用來區(qū)分學生對象。屬性的選取應符合系統(tǒng)建模的目的,系統(tǒng)需要的特性才可作為類的屬性。屬性的語法格式為
可見性屬性名:類型名=初值{性質(zhì)串}例如,+性別:字符型=“男”{“男”,“女”}類的屬性6.3UML圖
6.3.2類圖和包(1)屬性的可見性就是可訪問性,通常分為3種。公有的(Public):用加號(+)表示。私有的(Private):用減號(–)表示。保護的(Protected):用井號(#)表示。(2)屬性名和類型名之間用冒號(:)分隔。類型名表示該屬性的數(shù)據(jù)類型,類型可以是基本數(shù)據(jù)類型,如整數(shù)、實數(shù)、布爾型等,也可以是用戶自定義的類型。(3)屬性的缺省值用屬性的初值表示。(4)等號:類型名和初值之間用等號連接。(5)標記值:用花括號括起來的性質(zhì)串是一個標記值,列出屬性所有可能的取值,每個值之間用逗號分隔。也可以用性質(zhì)串說明該屬性的其他信息,比如{只讀}。6.3UML圖
6.3.2類圖和包類的操作類的操作用于修改、檢索類的屬性或執(zhí)行某些動作。操作只能用于該類的對象上。描述類的操作的語法規(guī)則為可見性操作名(參數(shù)表):返回值類型{性質(zhì)串}類與類之間的關系通常有關聯(lián)關系、繼承關系、依賴關系和細化關系4種。6.3UML圖
6.3.2類圖和包類的關聯(lián)關系02兩個類之間的關聯(lián)關系用直線連接來表示。類的關聯(lián)關系有方向時,用黑三角表示方向,可在方向上起名字,也可不起名字,圖6-5表示了關聯(lián)的方向。不帶箭頭的關聯(lián)可以是方向未知、未確定或雙向的。在類圖中還可以表示關聯(lián)中的數(shù)量關系,即參與關聯(lián)的對象的個數(shù)或數(shù)量范圍。例如右圖:圖6-5表示學生與計算機的關聯(lián),學生使用計算機,計算機被學生使用,幾個學生合用一臺計算機或多個學生使用多臺計算機。0…1 表示:0到1個對象0…*或* 表示:0到多個對象1…15 表示:1到15個對象3 表示:3個對象個數(shù)缺省 表示:1圖6-5類與類的關聯(lián)
普通關聯(lián)6.3UML圖
6.3.2類圖和包限定關聯(lián)在一對多或多對多的關聯(lián)關系中,可以用限定詞將關聯(lián)變成一對一的關聯(lián),限定詞放在關聯(lián)關系末端的一個小方框內(nèi),如圖6-6所示。圖6-6類的限定6.3UML圖
6.3.2類圖和包關聯(lián)類為了說明關聯(lián)的性質(zhì),可以用關聯(lián)類來記錄關聯(lián)的一些附加信息。關聯(lián)類與一般類一樣,可以定義其屬性、操作和關聯(lián)。關聯(lián)類用一條虛線與關聯(lián)連接。例如,學生與所學習的課程具有關聯(lián)關系,學生學習每門課程都可得到相應的學分、成績。圖6-7是學生類與課程類關聯(lián)關系的關聯(lián)類圖示。圖6-7關聯(lián)類圖示6.3UML圖
6.3.2類圖和包聚集
聚集表示類與類之間的關系是整體與部分的關系。在需求分析時,使用“包含”、“組成”、“分為”等詞時,意味著存在聚集關系。聚集關系除了一般聚集關系,還有兩個特殊的聚集關系,即共享聚集和復合聚集。共享聚集部分對象可同時參與多個整體對象的構成,稱為共享聚集。例如,學生可參加多個學生社團組織。一般聚集和共享聚集的表示符號都是在整體類的旁邊畫一空心菱形,用直線連接部分類,如圖6-8所示。圖6-8共享聚集6.3UML圖
6.3.2類圖和包聚集復合聚集(組成)如果部分類完全隸屬于整體類,部分與整體共存亡,則稱該聚集為復合聚集,簡稱為組成。組成關系用實心菱形表示。例如,旅客列車由火車頭和若干車廂組成,車廂分為軟席、硬席、軟席臥鋪和硬席臥鋪4種。圖6-9是旅客列車組成圖,是復合聚集圖例。圖6-9復合聚集圖例6.3UML圖
6.3.2類圖和包類的一般-特殊關系03類的一般-特殊關系,也稱繼承關系或類的泛化,用空心三角形表示,三角形的頂角對著父類。圖6-10(a)表示汽車類含客車與貨車兩個子類,子類與父類有單繼承關系。圖6-10(b)表示冷藏車既繼承貨車的特性(載貨),又繼承冷藏設備的特性(冷藏),具有多重繼承關系。
(a)(b)圖6-10類的單繼承關系和多重繼承關系6.3UML圖
6.3.2類圖和包類的依賴關系04用帶箭頭的虛線連接有依賴關系的兩個類,箭頭指向獨立的類。如圖6-11所示,類A是獨立的,類B以某種方式依賴于類A,如果類A改變了,將影響依賴于它的類B中的元素。如果一個類向另一個類發(fā)送消息,一個類使用另一個類的對象作為操作的參數(shù),一個類使用另一個類的對象作為它的數(shù)據(jù)成員等,這樣的兩個類之間都存在依賴關系。連接依賴關系的虛線可以帶一個標簽,具體說明依賴的種類。圖6-11類的依賴關系6.3UML圖
6.3.2類圖和包類的細化關系05在軟件開發(fā)的不同階段都使用類圖,這些類圖表示了類在不同層次的抽象。類圖可以分為3個層次。分別是概念層類圖,說明層類圖,實現(xiàn)層類圖。當對同一事物在不同抽象層次上進行描述時,這些描述之間具有細化關系。例如,類A進一步詳細描述后得到類B,稱為類A與類B具有細化關系,用由類B指向類A的虛線及空心三角形表示。圖6-12所示為類的細化關系,類A進一步細化后得到類B,類B細化了類A。細化主要用于表示類的模型之間的相關性,常用于跟蹤模型的演變。圖6-12類的細化關系6.3UML圖
6.3.2類圖和包說明層類圖實現(xiàn)層類圖概念層類圖類的細化關系說明層類圖
在設計階段用說明層類圖描述軟件的接口部分。概念層類圖在需求分析階段用概念層類圖描述應用領域中的概念。
實現(xiàn)層類圖在實現(xiàn)階段用實現(xiàn)層類圖描述軟件系統(tǒng)中類的實現(xiàn)。6.3UML圖
6.3.2類圖和包包06包(Package)是一種組合機制。包由類圖或另一個包構成,表示包與包之間的依賴、細化和泛化等關系。包像一個“容器”,可以組織模型中的相關元素。包是把各種各樣的模型元素通過內(nèi)在的語義關系連接在一起而形成的一個高內(nèi)聚、低耦合的整體。包通常用于對模型的管理,有時可把包稱為子系統(tǒng)。包的圖示符號如圖6-13所示。包的名稱可以寫在小矩形內(nèi),也可寫在大矩形內(nèi)。當不需要關心包的內(nèi)容和細節(jié)時,把包的名稱標注在大矩形內(nèi);當需要顯示包的內(nèi)容時,把包的名稱寫在小矩形內(nèi),包的內(nèi)容放在大矩形內(nèi)。包的內(nèi)容可以是類的列表、類圖或是另一個包。圖6-13包的圖示符號6.3UML圖
6.3.2類圖和包包06包與包之間可以建立依賴、泛化和細化關系,其圖形符號與類圖中相同。包是模型的一部分,實際上是整個系統(tǒng)的子系統(tǒng)。建模人員可將模型按內(nèi)容分配到一系列的包中。設計包時必須遵守的原則有:重用等價原則、共同閉包原則、共同重用原則和非循環(huán)依賴原則。在UML中,包是一種建模元素,在建模時用來組織模型中的各種元素,是分組事物(GroupingThing)的一種。UML中并沒有包圖,通常所說的包圖是指類圖、用例圖等。在系統(tǒng)運行時,并不存在包的實例。而類在運行時會有實例存在,即某個具體的對象。圖6-13包的圖示符號6.3UML圖
6.3.2類圖和包重用等價原則
把包作為可重用的單元。把類放在包中時,要方便重用,方便對該包的各個版本進行管理。共同閉包原則
把需要同時改變的類放在一個包中。共同閉包原則旨在提高包的內(nèi)聚,降低包的耦合。共同重用原則
不會一起使用的包不要放在同一個包中。非循環(huán)依賴原則
包和包之間的依賴關系不要形成循環(huán)。
設計包時必須遵守的原則有:重用等價原則、共同閉包原則、共同重用原則和非循環(huán)依賴原則。6.3UML圖
6.3.3對象圖
對象是類的實例。因此,對象圖(ObjectDiagram)可以看做是類圖的實例,能幫助人們理解比較復雜的類圖。類圖與對象圖之間的區(qū)別是,對象圖中對象的名稱下面要加下劃線。對象有以下3種表示方式:對象名:類名對象名:類名(1)對象名與類名之間用冒號(:)連接,一起加下劃線。(2)可以只寫對象名并加下劃線,將冒號及類名省略。(3)如果只有類名沒有對象名,在表示對象時,類名前一定要加冒號,冒號和類名要同時加下劃線。6.3UML圖
案例對象圖圖6-14圖6-5表示學生類與計算機類之間的關聯(lián)關系,而圖6-14表示學生類中的對象實例“王一”與計算機類中的對象實例“10號機”之間的關聯(lián)關系,這里對象名及類名的下面都加了下劃線。這兩個對象的屬性和服務沒有標出,強調(diào)的是兩個類之間的聯(lián)系:學生類對象“王一”使用了計算機類的對象“10號機”。圖6-14對象圖6.3UML圖
6.3.4狀態(tài)圖01
面向對象方法在進行系統(tǒng)分析時,與傳統(tǒng)方法的需求分析一樣,有時應分析對象的狀態(tài),畫出狀態(tài)圖,才可正確地認識對象的行為并定義它的服務。03
狀態(tài)轉換是指兩個狀態(tài)之間的關系,它描述了對象從一個狀態(tài)進入另一個狀態(tài)的情況,并執(zhí)行了所包含的動作。02
并不是所有的類都需要畫狀態(tài)圖。有明確意義的狀態(tài)、在不同狀態(tài)下行為有所不同的類才需要畫狀態(tài)圖。6.3UML圖
6.3.4狀態(tài)圖橢圓或圓角矩形:表示對象的一種狀態(tài),橢圓內(nèi)部填寫狀態(tài)名。箭頭:表示從箭頭出發(fā)的狀態(tài)可以轉換到箭頭指向的狀態(tài)。事件:引起狀態(tài)轉換的原因。事件名可在箭頭線上方標出。條件:事件名后面可加方括號[],括號內(nèi)寫狀態(tài)轉換的條件。實心圓:指出該對象被創(chuàng)建后所處的初始狀態(tài)。內(nèi)部實心的同心圓:表示對象的最終狀態(tài)。1狀態(tài)圖的符號6.3UML圖
6.3.4狀態(tài)圖一張狀態(tài)圖的初始狀態(tài)只有一個,而最終狀態(tài)可以有多個;也可以沒有最終狀態(tài),只有用圓角矩形表示的中間狀態(tài)。每個中間狀態(tài)有不同的操作(活動),中間狀態(tài)可能包含3個部分:狀態(tài)名稱、狀態(tài)變量的名稱和值、活動表,如圖6-15所示。這里狀態(tài)變量和活動表都是可選項。2狀態(tài)圖的狀態(tài)6.3UML圖
6.3.4狀態(tài)圖活動表經(jīng)常使用下述3種標準事件:entry(進入)、exit(退出)和do(做)。entry事件:指進入該狀態(tài)的動作,相當于狀態(tài)圖中的初始狀態(tài),用實心圓表示。exit事件:指退出該狀態(tài)的動作,對應于狀態(tài)圖中的“”表示。do事件:指在該狀態(tài)下的動作,可在表示該狀態(tài)的圓角矩形內(nèi)用狀態(tài)子圖詳細描述。這些標準事件一般不做其他用途?;顒颖磔^復雜時也可用狀態(tài)圖中嵌套一個狀態(tài)子圖來表示?;顒颖碇斜硎緞幼鞯恼Z法如下:
事件名(參數(shù)表)/動作表達式事件名可以是任何事件,包括上述3種標準事件;需要時可以指定事件的參數(shù)表;動作表達式指定應做的動作。3狀態(tài)圖的事件6.3UML圖
6.3.4狀態(tài)圖狀態(tài)機(StateMachine)指定某對象或交互過程在其整個生存周期中對事件做出響應而先后經(jīng)歷的各種狀態(tài),同時表明響應和動作。狀態(tài)機為類的對象在生存周期建立模型。狀態(tài)機由對象的一系列狀態(tài)和激發(fā)這些狀態(tài)的轉換組成,狀態(tài)轉換附屬的某些動作可能被執(zhí)行,狀態(tài)機用狀態(tài)圖描述。6.3UML圖
案例狀態(tài)機舉例。例6-2
圖6-16是撥打電話的狀態(tài)轉換圖,共有兩個狀態(tài):空閑狀態(tài)和活動狀態(tài)。對于活動狀態(tài)又可具體畫出撥打電話時可能遇到的幾種不同情況,在表示活動狀態(tài)的圓角矩形內(nèi)用嵌套的狀態(tài)子圖詳細描述出來。含有子狀態(tài)的狀態(tài)稱為組合狀態(tài)(CompositeState)。如圖6-16所示,撥打電話狀態(tài)是組合狀態(tài)。6.3UML圖
案例狀態(tài)機舉例。例6-26.3UML圖
從上到下:從表示對象的矩形框開始,從上到下代表時間的先后順序,并表示某段時間內(nèi)該對象是存在的。水平方向:橫向水平線的箭頭指示了不同對象之間傳遞消息的方向。
順序圖(SequenceDiagram)描述對象之間動態(tài)交互的情況,著重表示對象間消息傳遞的時間順序。順序圖中的對象用矩形框表示,框內(nèi)標有對象名。順序圖有以下兩個方向:6.3.5順序圖6.3UML圖
6.3.5順序圖如果對象接收到消息后立即執(zhí)行某個活動,稱對象被激活了,激活用細長的矩形框表示,寫在該對象的下方。消息可以帶有條件表達式,用來表示分支或決定是否發(fā)送。帶有分支的消息,某一時刻只發(fā)送分支中的一個消息。瀏覽順序圖的方法是,從上到下按時間的順序查看對象之間交互的消息。6.3UML圖
案例用順序圖描述打電話的操作過程。例6-3打電話時,主叫方拿起聽筒,信息就發(fā)給交換機;交換機接到信息后,發(fā)信息給主叫方,電話發(fā)出撥號音;主叫方撥電話號碼;交換機發(fā)響鈴信息給通話雙方;若被叫方在30秒內(nèi)接聽電話,雙方就可通話;通話結束,停止鈴音。若被叫方在30秒內(nèi)沒有接聽電話,則停止鈴音,不能通話。圖6-17是一個描述打電話操作過程的順序圖。這里,對于被叫方?jīng)]有接聽電話而不能通話,這樣的情況反映不出來。此時,可以用活動圖描述。6.3UML圖
6.3.6活動圖活動圖(ActivityDiagram)是狀態(tài)圖的一種特殊情況。無需指明任何事件,只要動作被執(zhí)行,活動圖中的狀態(tài)就自動開始轉換。如果狀態(tài)轉換的觸發(fā)事件是內(nèi)部動作的完成,可用活動圖描述;當狀態(tài)轉換的觸發(fā)事件是外部事件時,常用狀態(tài)轉換圖來表示。在活動圖中,用例和對象的行為中的各個活動之間通常具有時間順序。活動圖表達這種順序,展示出對象執(zhí)行某種行為時或者在業(yè)務過程中所要經(jīng)歷的各個活動和判定點。每個活動用一個圓角矩形表示,判定點用菱形框表示。6.3UML圖
案例用活動圖描述打電話過程。例6-4打電話過程可用活動圖描述,如圖6-18所示。打電話者拿起聽筒;出現(xiàn)撥號音;撥號;連接時如果號碼錯誤就停止,如果號碼正確還要判斷對方是否線路忙;線路忙則停止;線路不忙才能接通,聽到響鈴,若對方在30秒內(nèi)接聽電話,就進行通話,通話結束則停止;若對方超過30秒未接聽則停止。這個活動圖描述了撥打電話者的電話功能的設計方案,電話在遇到不同情況時進入不同的狀態(tài),圖中含有判斷。6.3UML圖
6.3.7協(xié)作圖
協(xié)作圖(CollaborationDiagram)用于描述系統(tǒng)中相互協(xié)作的對象之間的交互關系和關聯(lián)鏈接關系,它以對象圖的形式來描述。協(xié)作圖和順序圖都是描述對象間的交互關系,但它們的側重點不同:順序圖著重表示交互的時間順序,協(xié)作圖著重表示交互對象的靜態(tài)鏈接關系。協(xié)作圖中的對象圖示與順序圖相同。對象之間的連線代表了對象之間的關聯(lián)和消息傳遞,每個消息箭頭都帶有一個消息標簽。“”6.3UML圖
6.3.7協(xié)作圖
書寫消息標簽的語法規(guī)則如下:前綴[條件]序列表達式返回值:=消息說明1前綴
前綴表示在發(fā)送當前消息之前應該把指定序列號的消息處理完。若有多個序列號則用逗號隔開。用斜線標志前綴的結束。2條件
書寫條件的語法規(guī)則與狀態(tài)圖一樣,在方括號內(nèi)寫條件。3序列表達式
序列表達式用于指定消息發(fā)送的順序。在協(xié)作圖中把消息按順序編號:消息1總是消息序列的開始消息,消息1.1是處理消息1過程中的第1條嵌套消息,消息1.2是第2條嵌套消息,以此類推。4消息說明
消息說明由消息名和參數(shù)表組成,其語法與狀態(tài)圖中事件說明的語法相同。5返回值
返回值表示消息(操作調(diào)用)的結果。6.3UML圖
案例在學生成績管理系統(tǒng)中,教師擔任多門課程的教學任務,以及學生學習多門課程。圖6-19
協(xié)作圖用于描述系統(tǒng)行為是如何由系統(tǒng)的成分協(xié)作實現(xiàn)的,只有涉及協(xié)作的對象才會被表示出來。在協(xié)作圖中,多對象用多個方框重疊表示。圖6-19描述了在學生成績管理系統(tǒng)中,教師擔任多門課程的教學任務,以及學生學習多門課程。6.3UML圖
6.3.8構件圖
一個可執(zhí)行的程序文件,是鏈接所有二進制構件所得到的結果。源構件可執(zhí)行構件二進制構件實現(xiàn)類的源代碼文件
一個對象代碼文件、一個靜態(tài)庫文件或一個動態(tài)庫文件。構件圖描述軟件構件之間的相互依賴關系。6.3UML圖
6.3.8構件圖構件圖的圖示符號是左邊帶有兩個小矩形的大矩形。構件的名稱寫在大矩形內(nèi)。構件的依賴關系用一條帶箭頭的虛線表示。箭頭的形狀表示消息的類型。構件的接口:從代表構件的大矩形邊框畫出一條線,線的另一端為小空心圓,接口的名稱寫在空心圓附近。這里的接口可以是模塊之間的接口,也可以是軟件與設備之間的接口或人機交互界面。圖6-20表示某系統(tǒng)程序有外部接口,并調(diào)用數(shù)據(jù)庫。由于在調(diào)用數(shù)據(jù)庫時,必須等數(shù)據(jù)庫中的信息返回后,程序才能進行判斷、操作,因而是同步消息傳送。6.3UML圖
6.3.9部署圖部署圖(DeploymentDiagram)描述計算機系統(tǒng)硬件的物理拓撲結構及在此結構上執(zhí)行的軟件。使用部署圖可以表示硬件設備的物理拓撲結構和通信路徑、硬件上運行的軟件構件、軟件構件的邏輯單元等。部署圖常用于幫助人們理解分布式系統(tǒng)。部署圖含有以下要素:結點及其連接、構件及其接口、對象。6.3UML圖
6.3.9部署圖結點(Node)是一種代表運行時計算資源的分類器。一般來說,結點至少要具備內(nèi)存,而且常常具有處理能力。運行時對象和構件可駐留在結點上。結點可代表一個物理設備以及在該設備上運行的軟件系統(tǒng)。例如,一個服務器、一臺計算機、一臺打印機、一臺傳真機等。結點用一個立方體表示,結點名放在立方體的左上角。結點間的連線表示系統(tǒng)之間進行交互的通信線路,在UML中稱為連接。通信的類型寫在表示連接的線旁,以指定所用的通信協(xié)議或網(wǎng)絡類型。結點的連接是關聯(lián),可以加約束、版型、多重性等符號。結點和連接016.3UML圖
6.3.9部署圖部署圖中的構件代表可執(zhí)行的物理代碼模塊(可執(zhí)行構件的實例),在邏輯上可以和類圖中的包或類對應。因此,部署圖顯示了運行時各個包或類在結點中的分布情況。在面向對象方法中,類和構件的操作及屬性對外并不都是可見的,類和構件等元素對外提供的可見操作和屬性稱為接口。接口用一端是小圓圈的直線來表示。構件和接口026.3UML圖
6.3.9部署圖部署圖中的構件是包或類對應的物理代碼模塊,因此,構件中應包含一些運行的對象。部署圖中的對象與對象圖中的對象的表示方法相同。對象036.3UML圖
案例用部署圖描述使用金龍卡飲食銷售系統(tǒng)。例6-5圖6-21是金龍卡飲食銷售系統(tǒng)的部署圖。在該系統(tǒng)中,有若干銷售端,每個銷售端有一個金龍卡接口和一個輸入銷售金額的界面。輸入銷售金額后,要將數(shù)據(jù)庫中該金龍卡原有的余額減去輸入的金額,再將得到的新余額存入數(shù)據(jù)庫中。后臺服務器有系統(tǒng)程序和數(shù)據(jù)庫,系統(tǒng)程序用來對數(shù)據(jù)庫中的數(shù)據(jù)進行處理。收銀端有一個金龍卡接口和一個輸入金額的界面,這里輸入的金額要與數(shù)據(jù)庫中該金龍卡原有的余額相加,再將得到的新余額存入數(shù)據(jù)庫中。6.3UML圖
案例用部署圖描述使用金龍卡飲食銷售系統(tǒng)。例6-504UML的應用UML模型UML視圖UML的擴展機制UML的應用領域UML使用準則6.4UML的應用
結構化程序設計利用UML進行軟件開發(fā)時,在面向對象分析階段和面向對象設計階段所使用的描述符號相同。因此,不需要嚴格區(qū)分這兩個階段的工作。UML是一種標準建模語言,用來建立模型,描述某些內(nèi)容,表示使用一個方法的結果;它缺少描述解決問題的方法和執(zhí)行過程的機制,缺少對過程或方法做什么、怎么做、為什么做、什么時候做的指示。那么如何解決這些問題6.4UML的應用結構化程序設計為了解決對過程的描述問題,使用UML進行面向對象開發(fā)時,采用以用例驅動、以體系結構為中心的、反復迭代的、漸增式的構造方法。首先選擇系統(tǒng)中某些用例,完成這些用例的開發(fā),再選擇一些未開發(fā)的用例進行開發(fā),如此迭代、漸增地進行,直至所有的用例都實現(xiàn)為止。每次迭代都包含了分析、設計、實現(xiàn)、測試和交付各個階段。但整個項目的迭代次數(shù)不宜過多,通常以3~5次為宜。UML使用UML面向對象方法從建立模型開始,畫出相應的UML圖;再考慮不同的視圖補充所需要的圖;最后把這些圖合成為一個整體。這樣,就可比較全面地建立系統(tǒng)模型,合理正確地解決問題、設計軟件。6.4UML的應用結構化程序設計6.4.1UML模型用例模型1423UML模型靜態(tài)模型動態(tài)模型實現(xiàn)模型
這些模型由UML圖組成,開發(fā)者并不需要使用所有的圖,也不需要建立每種模型,應只對關鍵事物建立模型,可根據(jù)軟件系統(tǒng)的實際需要選擇幾種圖和模型。6.4UML的應用結構化程序設計6.4.1UML模型
用例模型從用戶的角度描述系統(tǒng)需求,是所有開發(fā)活動的指南。它包括一張或多張用例圖。用例模型定義了系統(tǒng)的用例、執(zhí)行者(角色Actor)及角色與用例之間的關聯(lián)(Association),即交互行為。
在迭代漸增式開發(fā)軟件時,每次迭代都是在前一次迭代的基礎上增加另一些用例,對每次軟件集成的結果,都應進行系統(tǒng)測試,并向用戶演示,表明用例已正確實現(xiàn)。所有的測試用例都應保存,以便在以后的迭代中進行回歸測試。1用例模型6.4UML的應用結構化程序設計6.4.1UML模型01將用例按優(yōu)先級分類:優(yōu)先級高的、必須首先實現(xiàn)的功能,最先開發(fā)。03
對用例所需的工作量進行估算,合理安排工作計劃。有些在進度方面風險大的、無法估算工作量的用例,不能放到最后再開發(fā),以免因它的實際工作量太大,而影響整個工程的進度。02
區(qū)分用例在體系結構方面的風險大?。喝绻硞€用例暫時不實現(xiàn)會導致以后的迭代漸增開發(fā)時有大量的改寫工作,這樣的用例需要先開發(fā)。
由于用UML開發(fā)軟件,是對用例進行迭代、漸增式地構造的過程。因此,要對用例進行分析,搞清究竟哪些用例必須先開發(fā),哪些用例可以晚一點開發(fā),正確制訂開發(fā)計劃。具體步驟如下:6.4UML的應用6.4.1UML模型
任何建模語言都以靜態(tài)模型作為建模的基礎,UML也不例外。靜態(tài)模型描述系統(tǒng)的元素及元素間的關系。它定義了類、對象和它們之間的關系及組件模型。
UML對可重用性的支持,在設計的前期體現(xiàn)在支持可重復使用的類和結構,后期則體現(xiàn)在組件的裝配上。組件是組成應用程序的可執(zhí)行單元,類被分配到各組件中,以提供可重復使用的應用程序結構部件。組件為即插即用的應用程序結構奠定了基礎。2靜態(tài)模型
靜態(tài)模型主要描述類、接口、用例、協(xié)作、組件、結點等體現(xiàn)系統(tǒng)結構的事物。靜態(tài)模型使用的圖,包括用例圖、類圖、包圖、對象圖、構件圖和部署圖等。
有時軟件系統(tǒng)并不大,可以只建立對象模型,描述系統(tǒng)所包含的所有對象及其相互關系,而靜態(tài)模型中的其他圖可以省略。6.4UML的應用結構化程序設計6.4.1UML模型
消息交互:對象之間為達到特定目的而進行的一系列消息交換,從而組成一系列動作,通過消息通信相互協(xié)作等,可用順序圖、活動圖、協(xié)作圖等描述。
狀態(tài)機:狀態(tài)機由對象的一系列狀態(tài)和激發(fā)這些狀態(tài)轉換的事件組成,用狀態(tài)圖描述。動態(tài)模型描述系統(tǒng)隨時間的推移而發(fā)生的行為。動態(tài)模型可以使用的UML圖有狀態(tài)圖、順序圖、活動圖、協(xié)作圖等。動態(tài)模型主要描述兩種動作:消息交互和狀態(tài)機。3動態(tài)模型6.4UML的應用結構化程序設計6.4.1UML模型實現(xiàn)模型包括構件圖和部署圖,它們描述了系統(tǒng)實現(xiàn)時的一些特性。構件圖顯示代碼本身的邏輯結構。構件圖描述系統(tǒng)中的軟構件以及它們之間的相互依賴關系,構件圖的元素有構件、依賴關系和接口。部署圖顯示系統(tǒng)運行時的結構。部署圖顯示系統(tǒng)硬件的拓撲結構和通信路徑、系統(tǒng)結構結點上執(zhí)行的軟件構件所包含的邏輯單元等。4實現(xiàn)模型6.4UML的應用結構化程序設計6.4.2UML視圖
視圖(View)是模型的簡化說明,即采取特定的角度或觀點并忽略與相應角度或觀點無關的實體來表達系統(tǒng)的某一方面特征。一個系統(tǒng)往往可以從不同的角度進行觀察。從一個角度觀察到的系統(tǒng),構成系統(tǒng)的一個視圖,每個視圖是整個系統(tǒng)描述的一個投影,說明了系統(tǒng)的一個特殊側面。若干不同的視圖可以完整地描述所建造的系統(tǒng)。每種視圖是由若干幅UML圖組成的,每一幅圖包含了系統(tǒng)某一方面的信息,闡明了系統(tǒng)的一個特定部分或方面。由于不同視圖之間存在一些交叉,因此一幅圖可以作為多個視圖的一部分。
在UML中,視圖可劃分成9類,分別屬于3個層次。最上層,視圖被分成3個視圖域:結構分類、動態(tài)行為和模型管理;每個視圖域的第二層包括一些視圖;第三層由UML圖組成。6.4UML的應用
結構化程序設計6.4.2UML視圖用例視圖實現(xiàn)視圖靜態(tài)視圖結構分類用例視圖
由用例圖組成,主要概念為用例、執(zhí)行者、關聯(lián)、擴展、包括用例繼承。靜態(tài)視圖由類圖組成,主要概念為類、關聯(lián)、繼承、依賴關系、實現(xiàn)、接口。
實現(xiàn)視圖由構件圖組成,主要概念為構件、接口、依賴關系和實現(xiàn)。
結構分類描述系統(tǒng)中的結構成員及其相互關系。結構分類包括靜態(tài)視圖、用例視圖和實現(xiàn)視圖。6.4UML的應用
結構化程序設計6.4.2UML視圖
動態(tài)行為描述系統(tǒng)隨時間推移而發(fā)生的行為。動態(tài)行為視圖包括部署視圖、狀態(tài)視圖、活動視圖和交互視圖(由順序圖、協(xié)作圖構成)。動態(tài)行為部署視圖狀態(tài)視圖活動視圖交互視圖由部署圖組成,主要概念為結點、構件、依賴關系、位置。由狀態(tài)圖組成,主要概念為狀態(tài)、事件、轉換、動作。由活動圖組成,主要概念為狀態(tài)、活動、轉換、分叉、結合。由順序圖、協(xié)作圖構成,主要概念為交互、對象、消息、激活、協(xié)作、角色。6.4UML的應用
結構化程序設計6.4.2UML視圖
模型管理說明了模型的分層組織結構。模型管理視圖根據(jù)系統(tǒng)開發(fā)和部署組織視圖,主要概念為包、子系統(tǒng)、模型。6.4UML的應用
結構化程序設計6.4.2UML視圖視圖域視圖圖主要概念結構分類靜態(tài)視圖類圖類、關聯(lián)、泛化、依賴關系、實現(xiàn)、接口用例視圖用例圖用例、執(zhí)行者、關聯(lián)、擴展、包含、用例繼承實現(xiàn)視圖構件圖構件、接口、依賴關系、實現(xiàn)動態(tài)行為部署視圖部署圖結點、構件、依賴關系、位置。狀態(tài)視圖狀態(tài)圖狀態(tài)、事件、轉換、動作活動視圖活動圖狀態(tài)、活動、轉換、分叉、連接交互視圖順序圖交互、對象、消息、激活協(xié)作圖協(xié)作、交互、角色、消息模型管理模型管理視圖類圖包、子系統(tǒng)、模型??蓴U展性所有所有約束、版型、標簽值
UML所有的視圖和所有的圖都具有可擴展性,擴展機制是用約束、版型、標簽值來實現(xiàn)的。下表列出了UML的視圖、圖以及與圖有關的主要概念。6.4UML的應用
結構化程序設計6.4.2UML視圖用例視圖用例視圖展示了外部執(zhí)行者所觀察到的系統(tǒng)功能。用例視圖為客戶、分析員、設計者、編程者和測試者描述了系統(tǒng)的使用方法。用例視圖是中心,它的內(nèi)容決定了其他視圖的開發(fā)。用戶根據(jù)用例視圖來確認系統(tǒng)是否符合他的需求,開發(fā)者根據(jù)用例視圖設計、測試系統(tǒng)功能。用例視圖有助于用戶、系統(tǒng)分析員、開發(fā)人員和測試人員的交流。1邏輯視圖邏輯視圖表示系統(tǒng)中含有的類之間的邏輯關系,描述系統(tǒng)內(nèi)部是如何提供系統(tǒng)功能的。邏輯視圖是為分析者、設計者和編程者提供的。邏輯視圖用類圖和對象圖描述系統(tǒng)的靜態(tài)結構;用狀態(tài)圖、順序圖、協(xié)作圖和活動圖描述系統(tǒng)的動態(tài)行為。2下列5種UML視圖是較常用的,可用來觀察系統(tǒng)。6.4UML的應用結構化程序設計6.4.2UML視圖并發(fā)視圖并發(fā)視圖描述了系統(tǒng)的并發(fā)性。它將系統(tǒng)分割成并發(fā)執(zhí)行的控制線程,還處理這些線程的通信和同步。例如,哪些事情將會同時發(fā)生,哪些事情必須保持同步。建立并發(fā)視圖有助于系統(tǒng)開發(fā)者和系統(tǒng)集成者之間的交流。并發(fā)視圖用狀態(tài)圖、順序圖、協(xié)作圖、活動圖、構件圖和部署圖來描述。3構件視圖構件視圖展示了代碼構件的組織結構,描述了模塊和模塊之間的依賴關系。構件視圖是針對開發(fā)者的,用構件圖來描述。46.4UML的應用
結構化程序設計6.4.2UML視圖部署視圖部署視圖展示系統(tǒng)部署。例如,計算機、設備以及相互間的連接,系統(tǒng)各部件的具體運行地點。部署視圖是針對開發(fā)者、系統(tǒng)集成者和測試者的,它用部署圖來描述。5
例如,圖書館的“圖書目錄查詢”程序在讀者查詢機上運行;“圖書流通”(借書、還書)程序在圖書流通部的計算機上運行。顯然描述系統(tǒng)分析、設計的各個部分和各個方面的所有UML圖,都是描述同一個系統(tǒng)的,它們之間不能有矛盾??傊?,一個系統(tǒng)可以有多種視圖,但視圖之間必須是一致的。同樣,系統(tǒng)可以有多種模型,模型之間也必須是一致的。UML有多種模型和多種圖,在實際的軟件開發(fā)過程中,開發(fā)者可以根據(jù)自己的需要選擇幾種來運用。6.4UML的應用結構化程序設計6.4.3UML使用準則020301
要集中精力圍繞問題的核心來建立模型。最好只畫幾張關鍵的圖,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 五年級上冊數(shù)學聽評課記錄 《平行四邊形》人教版
- 初中數(shù)學人教版九年級下冊同步聽評課記錄28-2-1 第1課時《 解直角三角形》
- 2025年筒式采煤機合作協(xié)議書
- 北師大版七年級下冊數(shù)學聽評課記錄:第六章《概率初步回顧與思考》
- 部審湘教版七年級數(shù)學下冊3.3 第2課時《利用完全平方公式進行因式分解》聽評課記錄
- 青島版數(shù)學七年級下冊《10.1 認識二元一次方程組》聽評課記錄2
- 人教版道德與法治八年級上冊5.3《善用法律》聽課評課記錄
- 湘教版數(shù)學九年級上冊4.1.2《正弦》聽評課記錄
- 五年級上數(shù)學聽評課記錄
- 土地復墾合同范本
- 江蘇省鹽城市鹿鳴路初級中學2024-2025學年八年級上學期期末考試語文試題(含答案)
- 《反家庭暴力》課件
- 【物理】《跨學科實踐:制作簡易桿秤》(教學設計)-2024-2025學年人教版(2024)初中物理八年級下冊
- 新蘇教版一年級數(shù)學下冊第六單元《簡單的數(shù)量關系(一)》教案(共2課時)
- 浙江省寧波市九校2024-2025學年高一上學期期末聯(lián)考試題 數(shù)學 含答案
- GA/T 2146-2024法庭科學涉火案件物證檢驗移動實驗室建設通用要求
- 北京市石景山區(qū)2024-2025學年九年級上學期期末考試數(shù)學試卷(含答案)
- 2025年度服務外包合同:銀行呼叫中心服務外包協(xié)議3篇
- 2025年新高考語文模擬考試試卷(五) (含答案解析)
- 教育部《中小學校園食品安全和膳食經(jīng)費管理工作指引》專題培訓
- 北師大版七年級上冊數(shù)學思維導圖全套
評論
0/150
提交評論