軟件工程導(dǎo)論課件第9章面向?qū)ο蠓椒▽W(xué)引論_第1頁
軟件工程導(dǎo)論課件第9章面向?qū)ο蠓椒▽W(xué)引論_第2頁
軟件工程導(dǎo)論課件第9章面向?qū)ο蠓椒▽W(xué)引論_第3頁
軟件工程導(dǎo)論課件第9章面向?qū)ο蠓椒▽W(xué)引論_第4頁
軟件工程導(dǎo)論課件第9章面向?qū)ο蠓椒▽W(xué)引論_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第9章面向?qū)ο蠓椒▽W(xué)引論9.1 面向?qū)ο蠓椒▽W(xué)概述9.2 面向?qū)ο蟮母拍?.3 面向?qū)ο蠼?.4 對象模型9.5 動態(tài)模型9.6 功能模型9.7 3種模型之間的關(guān)系目標(biāo)了解面向?qū)ο蠓椒▽W(xué)了解面向?qū)ο蠡靖拍盍私饷娓飨驅(qū)ο竽P徒⒔⑾到y(tǒng)對象模型建立系統(tǒng)功能模型建立系統(tǒng)動態(tài)模型9.1 面向?qū)ο蠓椒▽W(xué)概述9.1.1 傳統(tǒng)方法學(xué)缺點(diǎn)9.1.2 面向?qū)ο箝_發(fā)方法9.1.3 面向?qū)ο蠓椒ㄒc(diǎn)9.1.4 面向?qū)ο蠓椒ńM成9.1.5 面向?qū)ο蠓椒ㄟ^程9.1.6 面向?qū)ο蠓椒▋?yōu)點(diǎn)9.1.7 傳統(tǒng)方法的缺點(diǎn)結(jié)構(gòu)化分析方法:面向功能軟件結(jié)構(gòu)嚴(yán)重依賴于功能,而功能是軟件開發(fā)中最不穩(wěn)定的因素。數(shù)據(jù)和操作相分離9.1

2、.8 面向?qū)ο箝_發(fā)方法OOSD(Object-OrientedSoftwareDevelopment)是一種把面向?qū)ο蟮乃枷霊?yīng)用于軟件開發(fā)過程,指導(dǎo)開發(fā)活動的系統(tǒng)方法。面向?qū)ο?對象(objects)+類(classes)+繼承(inheritance)+通信(communicationwithmessages)9.1.9 面向?qū)ο蠓椒ǖ囊c(diǎn)認(rèn)為客觀世界是由各種對象組成的,任何事物都是對象。把所有對象都劃分成各種對象類(簡稱為類,class),每個對象類都定義了一組數(shù)據(jù)和一組方法。按照子類(或稱為派生類)與父類(或稱為基類)的關(guān)系,把若干個對象類組成一個層次結(jié)構(gòu)的系統(tǒng)(也稱為類等級)。對象彼此

3、之間僅能通過傳遞消息互相聯(lián)系。9.1.10 面向?qū)ο蠓椒ńM成OOSD由三部分組成:OOA(Object-OrientedAnalysis)面向?qū)ο蟮姆治鯫OD(Object-OrientedDesign)面向?qū)ο蟮脑O(shè)計OOP(Object-OrientedProgram)面向?qū)ο蟮某绦蛟O(shè)計OOA強(qiáng)調(diào)的是對一個系統(tǒng)中的對象特征和行為的定義。建立系統(tǒng)的三類模型。OOD與OOA密切配合順序?qū)崿F(xiàn)對現(xiàn)實(shí)世界的進(jìn)一步建模。OOP是面向?qū)ο蟮募夹g(shù)中發(fā)展最快的,使用面向?qū)ο蟮某绦蛟O(shè)計語言,進(jìn)行編碼。9.1.11 面向?qū)ο箝_發(fā)過程(I)9.1.12 面向?qū)ο箝_發(fā)過程(II)9.1.13 面向?qū)ο箝_發(fā)過程(III

4、)9.1.14 面向?qū)ο箝_發(fā)過程(IV)9.1.15 面向?qū)ο蠓椒ǖ膬?yōu)點(diǎn)1 .與人類習(xí)慣的思維方式一致2 .穩(wěn)定性好3 .可重用性好4 .可維護(hù)性好9.2 面向?qū)ο蟮母拍?.2.1 對象9.2.2 類9.2.3 實(shí)例9.2.4 消息9.2.5 方法9.2.6 屬性9.2.7 封裝9.2.8 繼承9.2.9 多態(tài)性9.2.10 對象(I)是客觀事物或概念的抽象表述,即對客觀存在的事物的描述統(tǒng)稱為對象對象可以是事、物、或抽象概念,是將一組數(shù)據(jù)和使用該數(shù)據(jù)的一組基本操作或過程封裝在一起的實(shí)體。9.2.11 對象(II)對象的特點(diǎn)(1) 以數(shù)據(jù)為中心。(2) 對象是主動的。(3) 實(shí)現(xiàn)了數(shù)據(jù)封裝。(4

5、) 本質(zhì)上具有并行性。(5) 模塊獨(dú)立性好。9.2.12 類類又稱對象類(ObjectClass),是一組具有相同屬性和相同操作的對象的集合。在一個類中,每個對象都是類的實(shí)例(instance),它們都可以使用類中提供的函數(shù)。9.2.13 實(shí)例實(shí)例就是由某個特定的類所描述的一個具體的對象。類是對具有相同屬性和行為的一組相似的對象的抽象,類在現(xiàn)實(shí)世界中并不能真正存在。9.2.14 消息消息就是向?qū)ο蟀l(fā)出的服務(wù)請求(互相聯(lián)系、協(xié)同工作等)。一個消息包含3個部分:接收消息的對象,消息名,消息變元。例如,MyCircle是Circle類的一個實(shí)例,發(fā)送消息如下:MyCircle.show(GREEN)

6、;9.2.15 方法方法就是對象所能執(zhí)行的操作,也就是類中所定義的服務(wù)。方法描述了對象執(zhí)行操作的算法,響應(yīng)消息的方法。在C+語言中把方法稱為成員函數(shù)。9.2.16 屬性屬性就是類中所定義的數(shù)據(jù),它是對客觀世界實(shí)體所具有的性質(zhì)的抽象。9.2.17 封裝對象封裝了對象的數(shù)據(jù)以及對這些數(shù)據(jù)的操作。9.2.18 繼承(I)繼承是指能夠直接獲得已有的性質(zhì)和特征,而不必重復(fù)定義它們。在面向?qū)ο蟮能浖夹g(shù)中,繼承是子類自動地共享基類中定義的數(shù)據(jù)和方法的機(jī)制。單重繼承:子類僅從一個父類繼承屬性和方法多重繼承:子類可從多個父類繼承屬性和方法9.2.19 繼承(II)9.2.20 多態(tài)性在類等級的不同層次中可以共

7、享(公用)一個行為(方法)的名字,然而不同層次中的每個類卻各自按自己的需要來實(shí)現(xiàn)這個行為。當(dāng)對象接收到發(fā)送給它的消息時,根據(jù)該對象所屬于的類動態(tài)選用在該類中定義的實(shí)現(xiàn)算法9.3 面向?qū)ο蠼?I)面向?qū)ο蠓椒ㄗ罨镜脑瓌t,是按照人們習(xí)慣的思維方式,用面向?qū)ο笥^點(diǎn)建立問題域的模型,開發(fā)出盡可能自然地表現(xiàn)求解方法的軟件。OMT(ObjectModelTechnology)是一種軟件工程方法學(xué),支持整個面向?qū)ο筌浖芷?,它覆蓋了問題構(gòu)成、分析、設(shè)計和實(shí)現(xiàn)等階段。9.4 面向?qū)ο蠼?II)面向?qū)ο箝_發(fā)軟件,需要建立3種形式的模型。對象模型。描述系統(tǒng)數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)。動態(tài)模型。描述系統(tǒng)控制結(jié)構(gòu)執(zhí)行

8、操作。功能模型。描述系統(tǒng)功能數(shù)值變化。這三種模型從不同側(cè)面描述了對系統(tǒng)的需求。在面向?qū)ο蟮姆治?OOA)階段,這三種模型是必不可少的。9.5 對象模型對象模型描述了系統(tǒng)的靜態(tài)結(jié)構(gòu)。OO方法強(qiáng)調(diào)圍繞對象而不是功能來構(gòu)造系統(tǒng)。使用統(tǒng)一建模語言UML(UnifiedModelingLanguage)提供的類圖來建立對象模型。UML用例圖是建立功能模型的有力工具。9.6 面向?qū)ο蠼ML(UnifiedModelingLanguage)產(chǎn)生于90年代中期。它不僅統(tǒng)一了Booch、OMT和OOSE方法中的概念和表示法,而且對其作了進(jìn)一步擴(kuò)展,最終成為在面向?qū)ο蠹夹g(shù)領(lǐng)域占主導(dǎo)地位的、并被大眾所接受的標(biāo)準(zhǔn)

9、建模語言。1、UML概述UML的發(fā)展歷程(下圖)UML是一個通用的標(biāo)準(zhǔn)建模語言,可以對任何具有靜態(tài)結(jié)構(gòu)和動態(tài)行為的系統(tǒng)進(jìn)行可視化建模。UML不是一個開發(fā)過程,也不是一個方法,但允許任何一種開發(fā)過程和面向?qū)ο蠓椒ㄊ褂盟=y(tǒng)一建模語言UML9.3面向?qū)ο蠼ML事物關(guān)系圖結(jié)構(gòu)事物行為事物組織事物輔助事物靜態(tài)圖實(shí)現(xiàn)關(guān)系泛化關(guān)系依賴關(guān)系關(guān)聯(lián)關(guān)系動態(tài)圖狀態(tài)機(jī)包注釋順序圖活動圖用例圖實(shí)施圖類圖構(gòu)件圖對象圖狀態(tài)圖協(xié)作圖節(jié)點(diǎn)組件活動類協(xié)作接口類用例3030(1)統(tǒng)一標(biāo)UML統(tǒng)一了Booch、OMT和OOSE等方法中的基本概念,已成為OMG的正式標(biāo),提供了標(biāo)的面向?qū)ο蟮哪P驮氐亩x和表示。(2) 面向?qū)ο骍

10、ML還吸取了面向?qū)ο蠹夹g(shù)領(lǐng)域中其他流派的長處。UML符號表示考慮了各種方法的圖形表示,刪掉了大量易引起混亂的、多余的和極少使用的符號,也添加了一些新符號。(3) 可視化、表示能力強(qiáng)系統(tǒng)的邏輯模型或?qū)崿F(xiàn)模型都能用UML模型清晰的表示,可用于復(fù)雜軟件系統(tǒng)的建模。(4) 獨(dú)立于過程UML是系統(tǒng)建模語言,獨(dú)立于開發(fā)過程。(5) 易掌握、易用由于UML的概念明確,建模表示法簡潔明了,圖形結(jié)構(gòu)清晰,易于掌握使用。面向?qū)ο蠼?1315.4.1 類圖的基本符號(I)1. 定義類UML中類的圖形符號為長方形,用兩條橫線把長方形分成上、中、下3個區(qū)域,3個區(qū)域分別放類的名字、屬性和服務(wù)1.1.1 類圖的基本符號

11、(II)屬性用來描述類的特征,表示需要處理的數(shù)據(jù)。定義如下:2. 定義屬性visibilityattribute-name:type=initial-valueproperty-string可見性屬性名:類型=缺省值性質(zhì)串其中:可見性(visibility)表示該屬性對類外的元素是否可見。分為:public(+)公有的,即模型中的任何類都可以訪問該屬性。private(-)私有的,表示不能被別的類訪問。protected(#)受保護(hù)的,表示該屬性只能被該類及其子類訪問。如果可見性未申明,表示其可見性不確定。2.1.1 類圖的基本符號(III)3. 定義操作對數(shù)據(jù)的具體處理方法的描述則放在操作部

12、分,操作說明了該類能做些什么工作。UML描述操作的語法格式如下:操作可見性的定義方法與屬性相同。參數(shù)表是用逗號分隔的形式參數(shù)的序列。描述一個參數(shù)的語法如下:參數(shù)名:類型名=默認(rèn)值visibilityoperating-name(parameter-list):return-typeproperty-string可見性操作名(參數(shù)表):返回類型性質(zhì)串9.4.2表示關(guān)系的符號(I)類與類之間關(guān)系有:關(guān)聯(lián)聚集泛化(繼承)依賴細(xì)化9.4.2.1 關(guān)聯(lián)(I)關(guān)聯(lián)表示兩個類的對象之間存在某種語義上的聯(lián)系。(1)普通關(guān)聯(lián)普通關(guān)聯(lián)示例9.4.2.1 關(guān)聯(lián)(II)在表示關(guān)聯(lián)的直線兩端可以寫上重數(shù)(multipl

13、icity),它表示該類有多少個對象與對方的一個對象連接。重數(shù)的表示方法通常有:0-1表示0到1個對象0*或*表示0到多個對象1+或1*表示1到多個對象1- -15表示1到15個對象3表示3個對象如果圖中未明確標(biāo)出關(guān)聯(lián)的重數(shù),則默認(rèn)重數(shù)是1。9.4.2.1關(guān)聯(lián)(III)(2)關(guān)聯(lián)的角色在任何關(guān)聯(lián)中都會涉及到參與此關(guān)聯(lián)的對象所扮演的角色(即起的作用),在某些情況下顯式標(biāo)明角色名有助于別人理解類圖。如果沒有顯式標(biāo)出角色名,則意味著用類名作為角色名。遞歸關(guān)聯(lián)(Recursiveassociation)一個類與本身有關(guān)聯(lián)關(guān)系9.4.2.1關(guān)聯(lián)(IV)(3)限定關(guān)聯(lián)限定關(guān)聯(lián)通常用在一對多或多對多的關(guān)聯(lián)關(guān)

14、系中,可以把模型中的重數(shù)從一對多變成一對一,或從多對多簡化成多對一。在類圖中把限定詞放在關(guān)聯(lián)關(guān)系末端的一個小方框內(nèi)。9.4.2.1關(guān)聯(lián)(V)(4)關(guān)聯(lián)類為了說明關(guān)聯(lián)的性質(zhì)可能需要一些附加信息。可以引入一個關(guān)聯(lián)類來記錄這些信息。關(guān)聯(lián)中的每個連接與關(guān)聯(lián)類的一個對象相聯(lián)系。關(guān)聯(lián)類通過一條虛線與關(guān)聯(lián)連接。9.4.2.1關(guān)聯(lián)(VI)關(guān)聯(lián)的語言實(shí)現(xiàn)1-1:PublicclassProgrammerComputer*GetUsedComputer(void)PublicclassComputerProgrammer*GetQuotingProgrammer(void)9.4.2.1關(guān)聯(lián)(VI)關(guān)聯(lián)的語言實(shí)現(xiàn)

15、1-1:PublicclassProgrammerComputer*GetUsedComputer(void)PublicclassComputerProgrammer*GetQuotingProgrammer(void)9.4.2.1關(guān)聯(lián)(VII)1-nPublicclassCompanyProduct*GetProduct();PrivateProduct*Product,;PublicclassProductCompany*GetCompany();9.4.2.1 關(guān)聯(lián)(VIII)限定關(guān)聯(lián)PublicclassBookshelfBook*GetHoldingBook(intbookID)

16、;PublicclassBookBookShelf*GetBookShelf(void);9.4.2.2 聚集(I)聚集是一種特殊的關(guān)聯(lián),它指出類間的“整體-部分”關(guān)系。(1)共享聚集如果在聚集關(guān)系中處于部分方的對象可同時參與多個處于整體方對象的構(gòu)成,則該聚集稱為共享聚集。9.4.2.2 聚集(II)(2)組合聚集如果部分類完全隸屬于整體類,部分與整體共存,整體不存在了部分也會隨之消失,則該聚集稱為組合聚集。9.4.2.3 泛化(I)UML中的泛化關(guān)系就是通常所說的繼承關(guān)系。(1)普通泛化附加標(biāo)記注釋普通泛化9.4.2.3泛化(II)(2)受限泛化可以給泛化關(guān)系附加約束條件,以進(jìn)一步說明該泛化

17、關(guān)系的使用方法或擴(kuò)充方法,這樣的泛化關(guān)系稱為受限泛化。預(yù)定義的約束有4種:多重、不相交、完全和不完全。下圖:多重繼承9.4.2.3 泛化(III)完全繼承指的是父類的所有子類都已在類圖中窮舉出來了,圖示符號是指定完全約束。不完全繼承與完全繼承恰好相反,父類的子類并沒有都窮舉出來,不完全繼承是一般情況下默認(rèn)的繼承關(guān)系。圖9.13復(fù)雜類圖示例組合聚集組合聚集抽象類組合聚集抽象操作泛化具體實(shí)現(xiàn)9.4.2.4 依賴依賴關(guān)系表示:其中一個模型元素是獨(dú)立的,另一個模型元素不是獨(dú)立的,它依賴于獨(dú)立的模型元素,如果獨(dú)立的模型元素改變了,將影響依賴于它的模型元素。9.4.2.5 細(xì)化當(dāng)對同一個事物在不同抽象層次

18、上描述時,這些描述之間具有細(xì)化關(guān)系。假設(shè)兩個模型元素A和B描述同一個事物,它們的區(qū)別是抽象層次不同,如果B是在A的基礎(chǔ)上的更詳細(xì)的描述,則稱B細(xì)化了A,或稱A細(xì)化成了B。注意是虛線,實(shí)線就成了泛化習(xí)題?,F(xiàn)有一醫(yī)院病房監(jiān)護(hù)系統(tǒng),病癥監(jiān)視器安置在每個病房,將病人的病癥信號實(shí)時傳送到中央監(jiān)視系統(tǒng)進(jìn)行分析處理。 在中心值班室里,進(jìn)行監(jiān)控,根據(jù)醫(yī)生的要求隨時打印病人的病情報告,定期更新病歷,當(dāng)病癥出現(xiàn)異常時,系統(tǒng)會立即自動報警, 并實(shí)時打印病人的病情報告,立及更新病歷。建立相應(yīng)的對象模型,用類圖表示。首先給出類的名稱及相應(yīng)的屬性和方法動態(tài)模型描述系統(tǒng)控制結(jié)構(gòu)。通常用狀態(tài)圖表示。9.5 動態(tài)模型下降狀態(tài)在第一層上升狀態(tài)向第一層下降空閑狀態(tài)上升到達(dá)到達(dá)上升超時下降值班護(hù)士使用中央監(jiān)視系統(tǒng)對病員的情況定期更新病歷,當(dāng)病癥出現(xiàn)異常時, 立及更新病歷。到達(dá)第一層功能模型表示變化的系統(tǒng)的“功能”性質(zhì),它指明了系統(tǒng)應(yīng)該“做什么”,通常,功能模型由一組數(shù)據(jù)流圖組成。UML提供的用例圖也是進(jìn)行需求分析和建立功能模型的強(qiáng)有力工具。9.4.2.69.4.

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論