




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
軟件工程與實踐中國水利水電出版社第8章面向?qū)ο笈cuml語言8.1傳統(tǒng)方法學傳統(tǒng)的生命周期方法學主要存在以下問題:(1)生產(chǎn)率提高的幅度遠不能滿足需要;(2)軟件重用度很低;(3)軟件仍然很難維護;(4)軟件往往不能滿足用戶需要。
面向?qū)ο蟮姆椒▽W可以用下列式子來概括:面向?qū)ο?對象+類+繼承+消息通信。
面向?qū)ο蠓椒▽W的主要優(yōu)點是:(1)從應(yīng)用設(shè)計到解決問題的方案更加抽象化而且具有極強的對應(yīng)性。(2)在設(shè)計中容易與用戶溝通。(3)把數(shù)據(jù)和操作封裝到對象之中。(4)設(shè)計中產(chǎn)生各式各樣的部件,然后由部件組成框架,以至于整個程序。(5)應(yīng)用程序具有較好的重用性、易改進、易維護和易擴充。8.2面向?qū)ο蠓椒ǖ幕靖拍?/p>
對象是具有相同狀態(tài)的一組操作的集合,是封裝了數(shù)據(jù)結(jié)構(gòu)及可以施加在這些數(shù)據(jù)結(jié)構(gòu)上的操作的封裝體,這個封裝體有可以惟一地標識它的名字,而且向外界提供一組服務(wù)(即公有的操作)。對象中的數(shù)據(jù)表示對象的狀態(tài),一個對象的狀態(tài)只能由該對象的操作來改變,只能由其他對象向該對象發(fā)送消息。對象響應(yīng)消息時,按照消息模式找出與之匹配的方法,并執(zhí)行該方法。8.2.1對象
在面向?qū)ο蟮能浖夹g(shù)中,”類”就是對具有相同數(shù)據(jù)和相同操作的一組相似對象的定義,也就是說,類是對具有相同屬性和行為的一個或多個對象的描述。例如:植物,飛行器,人等都是類。
“人”這個類具有:身高、姓名、性別、年齡、家庭住址等屬性(靜態(tài)特征);另外,“人”這個類還具有:跑步,開車,吃飯,思考等行為(動態(tài)特征)。
8.2.2類
實例就是由某個特定的類所描述的一個具體的對象。當使用”對象”這個術(shù)語時,既可以指一個具體的對象,也可以泛指一般的對象,但是,當使用”實例”這個術(shù)語時,必然是指一個具體的對象。8.2.3實例
消息就是要求某個對象執(zhí)行在定義它的那個類中的某個操作的規(guī)格說明。
通常,一個消息由下述3部分組成:接收消息的對象;消息選擇符(也稱為消息名);零個或多個變元。8.2.4消息
方法就是對象所能執(zhí)行的操作,也就是類中所定義的服務(wù)。方法描述了對象執(zhí)行操作的算法、響應(yīng)消息的方法。在C++語言中把方法稱為成員函數(shù)。我們前面介紹過,類由屬性(靜態(tài)數(shù)據(jù))和行為(操作)組成,實際上,這里的“行為”就是面向?qū)ο笾兄v到的“方法”。例如:(1)飛行器這個類的方法有:飛行,落地等一些操作。(2)“人”這個類的方法:跑步,開車,吃飯,思考等。8.2.5方法8.2.6屬性
屬性就是類中所定義的數(shù)據(jù),它是對客觀世界實體所具有的性質(zhì)的抽象。類的每個實例都有自己特有的屬性值。在C++語言中把屬性稱為數(shù)據(jù)成員。例如:飛行器這個類的屬性有:顏色,身長,形狀等。
8.2.6繼承
繼承是子類自動地共享父類中定義的數(shù)據(jù)和方法的機制。一個類的上層可以有父類,下層可以有子類。這種層次結(jié)構(gòu)系統(tǒng)的一個重要性質(zhì)是繼承性,一個類直接繼承其父類的全部描述(數(shù)據(jù)和操作)。繼承具有傳遞性。例如:飛機是飛行器的子類,它繼承了飛行器的所有屬性和方法,但是它還有自己的屬性和方法。飛機的屬性除具有飛行器屬性外,還有:乘客容量。8.2.7多態(tài)性
在面向?qū)ο蟮能浖夹g(shù)中,多態(tài)性是指子類對象可以像父類對象那樣使用,同樣的消息既可以發(fā)送給父類對象也可以發(fā)送給子類對象。然而不同層次中的每個類卻各自按自己的需要來實現(xiàn)這個行為。當對象接收到發(fā)送給它的消息時,根據(jù)該對象所屬于的類動態(tài)選用在該類中定義的實現(xiàn)算法。8.2.8重載
重載有兩種:函數(shù)重載和運算符重載。函數(shù)重載是指在同一作用域內(nèi)的若干個參數(shù)特征不同的函數(shù)可以使用相同的函數(shù)名字;運算符重載是指同一個運算符可以施加于不同類型的操作數(shù)上。8.3
UML建模語言
UML(統(tǒng)一建模語言)是面向?qū)ο蠼UZ言的標準,它可以對任何具有靜態(tài)結(jié)構(gòu)和動態(tài)行為的系統(tǒng)進行建模,它的主要作用是幫助用戶進行面向的描述和建模,它可以描述軟件從需求分析到軟件實現(xiàn)和測試的全過程。作為一種建模語言,UML的定義包括UML語義和UML表示法兩個部分。
(1)UML語義(2)UML表示法(
1)模型幫助我們按照實際情況或按照我們所需要的樣式對系統(tǒng)進行可視化。
(2)模型允許我們詳細說明系統(tǒng)的結(jié)構(gòu)和行為。
(3)模型給出一個知道我們構(gòu)造系統(tǒng)的模板。
(4)模型對我們的決策進行文檔化。
8.3.1為什么要建模
UML有兩套建模機制:靜態(tài)建模機制和動態(tài)建模機制。靜可描形,動可描行。動和靜是辯證的兩面,在UML中,靜態(tài)建??梢悦枋鱿到y(tǒng)的組織和結(jié)構(gòu),而動態(tài)建模則可描述系統(tǒng)的行為和動作。靜態(tài)建模機制包括用例圖、類圖、對象圖、包、組件圖和配置圖。動態(tài)建模機制包括消息、狀態(tài)圖、時序圖、協(xié)作圖和活動圖。
8.3.2UML建模機制(1)UML基本構(gòu)造元素:事務(wù)、關(guān)系和圖。(2)UML的事務(wù)有四種:結(jié)構(gòu)事務(wù)、行為事務(wù)、分組事務(wù)和注釋事務(wù)。(3)UML的關(guān)系有四種:依賴、關(guān)聯(lián)、泛化、實現(xiàn)。(4)UML的圖有十種:用例圖、類圖、對象圖、包圖、狀態(tài)圖、活動圖、序列圖、協(xié)作圖、組件圖、部署圖(有的書叫實施圖)。
8.3.3UML的結(jié)構(gòu)1.結(jié)構(gòu)事物結(jié)構(gòu)事物主要包括7種,分別是類、接口、協(xié)作、用例、活動類、組件和節(jié)點。類是具有相同屬性、相同方法、相同語義和相同關(guān)系的一組對象的集合。接口是指類或組件所提供的、可以完成特定功能的一組操作的集合,換句話說,接口描述了類或組件的對外的、可見的動作。協(xié)作定義了交互的操作,是一些角色和其他元素一起工作,提供一些合作的動作。用例定義了系統(tǒng)執(zhí)行的一組操作,對特定的用戶產(chǎn)生可以觀察的結(jié)果?;顒宇愂菍碛芯€程并可發(fā)起控制活動的對象(往往稱為主動對象)的抽象。組件是物理上可替換的,實現(xiàn)了一個或多個接口的系統(tǒng)元素。節(jié)點是一個物理元素,它在運行時存在,代表一個可計算的資源,如一臺數(shù)據(jù)庫服務(wù)器等。
8.3.4UML中的事務(wù)
2.行為事物行為事物主要有兩種:交互和狀態(tài)機。在UML圖中,交互的消息通常畫成帶箭頭的直線狀態(tài)機是對象的一個或多個狀態(tài)的集合。
3.組織事物組織事物是UML模型中負責分組的部分,可以把它看作一個個盒子,每個盒子里面的對象關(guān)系相對復(fù)雜,而盒子與盒子之間的關(guān)系相對簡單。組織事物只有一種,稱為包。包是一種有組織地將一系列元素分組的機制。4.輔助事物輔助事物,也稱注釋事物,屬于這一類的只有注釋。注釋即是UML模型的解釋部分。在UML圖中,一般表示為折起一角的矩形。
1.關(guān)聯(lián)關(guān)系關(guān)聯(lián)關(guān)系是”
...hasa...”(具有)的關(guān)系。在UML圖中,關(guān)聯(lián)關(guān)系用一條實線表示。有一些修飾可以應(yīng)用于關(guān)聯(lián)。(1).
名字:可以給關(guān)系取名字。見圖8-1。8.3.5UML中的關(guān)系
(2)角色:關(guān)系的兩端代表不同的兩種角色。見圖8-2。(3).重數(shù):表示有多少對象通過一個關(guān)系的實例相連。見圖8-3。2.聚合關(guān)系聚合關(guān)系指的是整體與部分的關(guān)系。通常在定義一個整體類后,再去分析這個整體類的組成結(jié)構(gòu)。從而找出一些組成類,該整體類和組成類之間就形成了聚合關(guān)系。例如一個航母編隊包括??漳概灐Ⅱ?qū)護艦艇、艦載飛機及核動力攻擊潛艇等。需求描述中”包含”、”組成”、”分為…部分”等詞常意味著聚合關(guān)系。見圖8-5。
聚合是”
...ownsa...”(擁有)的關(guān)系。它的UML表示法:空心菱形+實線+箭頭,見圖8-6
3.組合關(guān)系組合關(guān)系也表示類之間整體和部分的關(guān)系,但是組合關(guān)系中部分和整體具有統(tǒng)一的生存期。一旦整體對象不存在,部分對象也將不存在。部分對象與整體對象之間具有共生死的關(guān)系。組合關(guān)系是”
...isapartof...”(是…的一部分)的關(guān)系。它的UML表示法:實心菱形+實線+箭頭,見圖8-7。聚合和組合的區(qū)別在于:
(1)聚合關(guān)系是”has-a”關(guān)系,組合關(guān)系是”contains-a”關(guān)系;
(2)聚合關(guān)系表示整體與部分的關(guān)系比較弱,而組合比較強;
(3)聚合關(guān)系中代表部分事物的對象與代表聚合事物的對象的生存期無關(guān),一旦刪除了聚合對象不一定就刪除了代表部分事物的對象。組合中一旦刪除了組合對象,同時也就刪除了代表部分事物的對象。我們用淺顯的例子來說明聚合和組合的區(qū)別。”國破家亡”,國滅了,家自然也沒有了,”國”和”家”顯然也是組合關(guān)系。(4)在聚合關(guān)系中,部分可以獨立于聚合而存在,部分的所有權(quán)也可以由幾個聚合來共享,比如打印機就可以在辦公室內(nèi)被廣大同事共用。
(5)組合比聚合對于組合者和被組合者的關(guān)心定義的更加有約束,組合者不但要知道被組合者的情況,他們的生命周期都是由組合者來控制的。4.依賴關(guān)系對于兩個對象X、Y,如果對象X發(fā)生變化,可能會引起對另一個對象Y的變化,則稱Y依賴于X。依賴關(guān)系是一種”
...usesa...”(使用)關(guān)系,特定事物的改變有可能會影響到使用該事物的事物,反之不成立。在你想顯示一個事物使用另一個事物時使用依賴關(guān)系。通常情況下,依賴關(guān)系體現(xiàn)在某個類的方法使用另一個類作為參數(shù)。在UML中你可以在其它的事物之間使用依賴關(guān)系,特別是包和節(jié)點之間。在UML圖中,依賴關(guān)系用一條帶有箭頭的虛線來表示。人和空氣是一種依賴關(guān)系,UML圖見圖8-10。一個人自創(chuàng)生就需要不停的呼吸,而人的呼吸功能之所以能維持生命就在于吸進來的氣體發(fā)揮了作用,所以說空氣只不過是人類的一個工具,而人并不持有對它的引用。5.泛化關(guān)系泛化是一般事物(稱為超類或父類)和該事物的較為特殊的種類(稱為子類)之間的關(guān)系,子類繼承父類的屬性和操作,除此之外通常子類還添加新的屬性和操作,或者修改了父類的某些操作。泛化意味著子類的對象可以用在父類的對象可能出現(xiàn)的地方,但反過來則不成立。泛化關(guān)系的子類和父類是“akindof”的關(guān)系。圖8-11給出了教師,學生和來賓繼承人”類”的泛化關(guān)系。
若在邏輯上B是A的”一種”,并且A的所有功能和屬性對B而言都有意義,則允許B繼承A的功能和屬性。例如,教師是人,Teacher是Person的”一種”。那么類Teacher可以從類Person派生(繼承)。如果A是基類,B是A的派生類,那么B將繼承A的數(shù)據(jù)和函數(shù)。如果類A和類B毫不相關(guān),不可以為了使B的功能更多些而讓B繼承A的功能和屬性。
6.實現(xiàn)關(guān)系實現(xiàn)關(guān)系將一種模型元素(如類)與另一種模型元素(如接口)連接起來,它表示不繼承結(jié)構(gòu)而只繼承行為。大多少情況下,實現(xiàn)關(guān)系用來規(guī)定接口和實現(xiàn)接口的類或組件之間的關(guān)系。在UML圖中,實現(xiàn)關(guān)系一般用帶有一條帶有空心箭頭的虛線來表示。
圖8-12實現(xiàn)關(guān)系8.3.6UML中的視圖
視圖被劃分成3個視圖域:結(jié)構(gòu)分類視圖、動態(tài)行為視圖和模型管理視圖。結(jié)構(gòu)分類視圖。它描述了系統(tǒng)中的結(jié)構(gòu)成員及其相互關(guān)系。類元包括類、用例、組件和節(jié)點。類元為研究系統(tǒng)動態(tài)行為奠定了基礎(chǔ)。類元視圖包括靜態(tài)視圖、用例視圖和實現(xiàn)視圖和配置視圖。動態(tài)行為視圖。它描述了系統(tǒng)隨時間變化的行為。行為用從靜態(tài)視圖中抽取的系統(tǒng)的瞬間值的變化來描述。動態(tài)行為視圖包括狀態(tài)視圖、活動視圖和交互視圖。模型管理視圖。它說明了模型的分層組織結(jié)構(gòu)。包是模型的基本組織單元。特殊的包還包括模型和子系統(tǒng)。模型管理視圖跨越了其他視圖,并根據(jù)系統(tǒng)開發(fā)和配置組織這些視圖。8.4UML的圖序號模型種類十種圖形建模機制1用例模型用例圖靜態(tài)建模2靜態(tài)模型類圖、對象圖、包圖靜態(tài)建模3行為模型狀態(tài)圖、活動圖動態(tài)建模4交互模型序列圖、協(xié)作圖動態(tài)建模5實現(xiàn)模型組件圖、部署圖靜態(tài)建模
類圖可用于表示邏輯類。邏輯類通常就是業(yè)務(wù)人員所談及的事物種類。類在類圖上使用包含三個部分的矩形來描述,如圖8-13所示。8.4.1類圖
用例圖主要用來圖示化系統(tǒng)的主事件流程,它主要用來描述客戶的需求,即用戶希望系統(tǒng)具備的完成一定功能的動作----軟件的功能模塊,所以是設(shè)計系統(tǒng)分析階段的起點,設(shè)計人員根據(jù)客戶的需求來創(chuàng)建和解釋用例圖,用來描述軟件應(yīng)具備哪些功能模塊以及這些模塊之間的調(diào)用關(guān)系。
用例圖包括:用例和參與者。8.4.2用例圖
圖8-16給出來了在線購物系統(tǒng)的用例圖,給出了角色和用例之間的關(guān)系,以及內(nèi)部用例之間的關(guān)系。角色:游客,會員,管理員。用例:商品信息,購買信息,用戶信息。8.4.3對象圖
對象圖顯示某時刻對象和對象之間的關(guān)系,是類圖的變化,一個對象圖可看成一個類圖的實例,對象圖表示的是類的對象實例而不是真實的類。由于對象存在生命周期,因此對象圖只能在系統(tǒng)某一時間段存在。對象圖中并無新的表示法(除了對象名下要加下劃線以外),與類圖中的表示法一樣,可以認為,只有對象而無類的類圖就是一個”對象圖”。
4.輔助事物輔助事物,也稱注釋事物,屬于這一類的只有注釋。注釋即是UML模型的解釋部分。在UML圖中,一般表示為折起一角的矩形。
為了簡單地表示出復(fù)雜的類圖,可以把類組合成包packages。一個包是UML上有邏輯關(guān)系的元件的集合。包圖由包和包之間的關(guān)系組成,模型如圖。
8.4.4包圖1、包的名稱
包的名稱有兩種形式:簡單名和路徑名,其中簡單名僅包含一個簡單的名稱,路徑名是以包處于的外圍包的名字作為前綴。
2、包圖的組成
包可以擁有其他元素,比如類、接口、組件、節(jié)點、協(xié)作、用例和圖,甚至可以是其它包。一個”包圖”可以是任何一種的UML圖組成,通常是UML用例圖或UML類圖。包是一個UML結(jié)構(gòu),它使得你能夠把諸如用例或類之類模型元件組織為組。包被描述成文件夾,可以應(yīng)用在任何一種UML圖上。序列圖。
序列圖顯示具體用例(或者是用例的一部分)的詳細流程。它幾乎是自描述的,并且顯示了流程中中不同對象之間的調(diào)用關(guān)系,同時還可以很詳細地顯示對不同對象的不同調(diào)用。序列圖有兩個維度:垂直維度和水平維度。垂直維度以發(fā)生的時間順序顯示消息/調(diào)用的序列;水平維度顯示消息被發(fā)送到的對象實例。8.4.5交互圖
其中的aServlet對象表示驅(qū)動類實例。
aServlet向名為gen的ReportGenerator類實例發(fā)送一條消息。該消息被標為generateCDSalesReport,表示ReportGenerator對象實現(xiàn)了這個消息處理程序。進一步理解可發(fā)現(xiàn),generateCDSalesReport消息標簽在括號中包括了一個cdId,表明aServlet隨該消息傳遞一個名為cdId的參數(shù)。當gen實例接收到一條generateCDSalesReport消息時,它會接著調(diào)用CDSalesReport類,并返回一個aCDReport的實例。然后gen實例對返回的aCDReport實例進行調(diào)用,在每次消息調(diào)用時向它傳遞參數(shù)。在該序列的結(jié)尾,gen實例向它的調(diào)用者aServlet返回一個aCDReport。
2.協(xié)作圖
UML交互圖的另一種形式是協(xié)作圖。協(xié)作圖和序列圖在語義上相同,但協(xié)作圖排列對象的方式比較自由,完全由繪圖者的喜好決定。在協(xié)作圖中,交互動作的次序由消息的編號決定。一些人偏愛這種繪圖方式,許多功能比較完善的UML工具允許用戶將一個圖在協(xié)作圖符號和序列圖符號之間來回轉(zhuǎn)換。
狀態(tài)圖是描述一個實體基于事件反應(yīng)的動態(tài)行為,顯示了該實體如何根據(jù)當前所處的狀態(tài)對不同的時間做出反應(yīng)的。通常我們創(chuàng)建一個UML狀態(tài)圖是為了研究類、角色、子系統(tǒng)、或組件的復(fù)雜行為。(1)初始起點,它使用實心圓來繪制;(2)狀態(tài)之間的轉(zhuǎn)換,它使用具有開箭頭的線段來繪制;(3)狀態(tài),它使用圓角矩形來繪制;(4)判斷點,它使用空心圓來繪制;(5)一個或者多個終止點,它們使用內(nèi)部包含實心圓的圓來繪制。8.4.6狀態(tài)圖
例如,貸款處理系統(tǒng)最初處于LoanApplication(貸款申請)狀態(tài)。當貸款審查后,如果符合基本條件轉(zhuǎn)到Loanpre-approval(貸款預(yù)批)過程;否則轉(zhuǎn)到LoanRejected(貸款拒絕)狀態(tài)。如果Loanpre-approval過程完成這個判斷(它是在轉(zhuǎn)換過程期間做出的)使用一個判斷點來表示--即轉(zhuǎn)換線條間的空心圓。通過該狀態(tài)圖可知,如果沒有經(jīng)過LoanClosing狀態(tài),貸款不可能從LoanPre-Approved狀態(tài)進入LoaninMaintenance狀態(tài)。而且,所有貸款都將結(jié)束于LoanRejected或者LoaninMa
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《跨境電商》課件-注冊準備
- 2025至2031年中國臥式銑鏜加工中心行業(yè)投資前景及策略咨詢研究報告
- 2025至2030年中國閉式鋼片綜數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國輕型油壓缸數(shù)據(jù)監(jiān)測研究報告
- 2025年MPB客車項目合作計劃書
- 二零二五年度網(wǎng)絡(luò)安全防護免責任協(xié)議書
- 沿海貨運港口企業(yè)縣域市場拓展與下沉戰(zhàn)略研究報告
- 竹制品家具企業(yè)縣域市場拓展與下沉戰(zhàn)略研究報告
- 婚內(nèi)財產(chǎn)女方專屬分配協(xié)議書-2025年度
- 針織襯衫企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級戰(zhàn)略研究報告
- 《BIM技術(shù)應(yīng)用研究8500字(論文)》
- GB/T 778.1-2007封閉滿管道中水流量的測量飲用冷水水表和熱水水表第1部分:規(guī)范
- GB/T 34754-2017家庭牧場草地放牧強度分級
- GB/T 28572-2012大中型水輪機進水閥門系列
- GB/T 21287-2021電子特氣三氟化氮
- GB/T 13818-2009壓鑄鋅合金
- CB/T 3780-1997管子吊架
- 2009-2022歷年湖北省選調(diào)生招錄考試《綜合知識和行政職業(yè)能力測驗》真題含答案帶詳解2022-2023上岸資料匯編1
- 錫精礦進口中英文合同模板
- 消防安全教育培訓(xùn)記錄
- 某水廠水資源論證報告書
評論
0/150
提交評論