軟件工程導(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頁,還剩113頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第9章 面向?qū)ο蠓椒▽W(xué)引論9.1 面向?qū)ο蠓椒▽W(xué)概述9.2 面向?qū)ο蟮母拍?.3 面向?qū)ο蠼?.4 對(duì)象模型9.5 動(dòng)態(tài)模型9.6 功能模型9.7 3種模型之間的關(guān)系第9章 面向?qū)ο蠓椒▽W(xué)引論9.1 面向?qū)ο蠓椒▽W(xué)概述傳統(tǒng)的軟件工程方法學(xué)應(yīng)用于大型軟件產(chǎn)品的開發(fā)時(shí),很少取得成功。自20世紀(jì)80年代中期起,人們開始注重面向?qū)ο蠓治龊驮O(shè)計(jì)的研究,逐步形成了面向?qū)ο蠓椒▽W(xué)。20世紀(jì)90年代,面向?qū)ο蠓椒▽W(xué)已經(jīng)成為人們?cè)陂_發(fā)軟件時(shí)首選的范型。面向?qū)ο蠹夹g(shù)已成為當(dāng)前最好的軟件開發(fā)技術(shù)。 傳統(tǒng)的軟件工程方法學(xué)應(yīng)用于大型軟件產(chǎn)品的開發(fā)時(shí),很少取得成功9.1 面向?qū)ο蠓椒▽W(xué)概述面向?qū)ο蠓椒▽W(xué)的出發(fā)點(diǎn)和基本原

2、則,是盡可能模擬人類習(xí)慣的思維方式,使開發(fā)軟件的方法與過程盡可能接近人類認(rèn)識(shí)世界解決問題的方法與過程。也就是使描述問題的問題空間(也稱為問題域)與實(shí)現(xiàn)解法的解空間(也稱為求解域)在結(jié)構(gòu)上盡可能一致。 9.1 面向?qū)ο蠓椒▽W(xué)概述面向?qū)ο蠓椒▽W(xué)的出發(fā)點(diǎn)和基本原則 對(duì)象是客觀世界中的實(shí)體 對(duì)象不固定 行為豐富多彩 既有靜態(tài)屬性又有動(dòng)態(tài)行為 對(duì)象是計(jì)算機(jī)中的實(shí)體 取決于程序設(shè)計(jì)語言 行為簡(jiǎn)單呆板 僅描述靜態(tài)實(shí)體屬性,必須從外部施加操作才能模擬行為傳統(tǒng)方法學(xué)的解空間: 對(duì)象是客觀世界中的實(shí)體 對(duì)象是計(jì)算機(jī)中的實(shí)體傳統(tǒng)方法學(xué)的解面向?qū)ο蠓椒ǖ慕饪臻g:面向?qū)ο蠓椒▽W(xué)所提供的“對(duì)象”概念,是讓軟件開發(fā)者自己定

3、義或選取解空間對(duì)象,然后把軟件系統(tǒng)作為一系列離散的解空間對(duì)象的集合。這些解空間對(duì)象與問題空間對(duì)象盡可能一致。這些解空間對(duì)象彼此間通過發(fā)送消息而相互作用,從而得出問題的解。每個(gè)對(duì)象就像一個(gè)微型程序,有自己的數(shù)據(jù)、操作、功能和目的。面向?qū)ο蠓椒ǖ慕饪臻g:面向?qū)ο蠓椒ň哂?個(gè)要點(diǎn):對(duì)象:客觀世界是由各種對(duì)象組成,任何事物都是對(duì)象,復(fù)雜的對(duì)象可以由簡(jiǎn)單的對(duì)象以某種方式組合而成。對(duì)象分解取代功能分解。類:把所有對(duì)象都劃分成各種對(duì)象類,每個(gè)對(duì)象類都定義了一組數(shù)據(jù)和一組方法。數(shù)據(jù)用于表示對(duì)象的靜態(tài)屬性,是對(duì)象的狀態(tài)信息。繼承:按照子類(或稱為派生類)與父類(或稱為基類)的關(guān)系,把若干個(gè)對(duì)象類組成一個(gè)層次結(jié)構(gòu)

4、的系統(tǒng)(也稱為類等級(jí))。消息:對(duì)象之間僅能通過傳遞消息互相聯(lián)系。對(duì)象是進(jìn)行處理的主體。面向?qū)ο蠓椒ň哂?個(gè)要點(diǎn):面向?qū)ο蠓椒▽W(xué)的方程:OO = objects + classes + inheritance + communication with messages基于對(duì)象(object-based) = objects + communication with messages基于類(class-based) = objects + classes + communication with messages只有同時(shí)使用對(duì)象、類、繼承和消息的方法,才是真正面向?qū)ο蟮姆椒ā?面向?qū)ο蠓椒▽W(xué)的方程

5、:面向?qū)ο蠓椒ǖ陌l(fā)展史: (1) 雛形階段1972年P(guān)alo Alno研究中心(PARC)發(fā)布了Smalltalk-72,正式使用“面向?qū)ο蟆边@個(gè)術(shù)語。Smalltalk的問世標(biāo)志著面向?qū)ο蟪绦蛟O(shè)計(jì)方法的正式形成。 (2) 完善階段PARC先后發(fā)布了Smalltalk-72,76,78等版本,直至1981年推出該語言最完善的版本Smalltalk-80。Smalltalk-80是第一個(gè)完善的、能夠?qū)嶋H應(yīng)用的面向?qū)ο笳Z言。面向?qū)ο蠓椒ǖ陌l(fā)展史: (3) 繁榮階段自20世紀(jì)80年代中期到90年代,是面向?qū)ο笳Z言走向繁榮的階段。其主要表現(xiàn)是大批比較實(shí)用的OOPL的涌現(xiàn),例如 C+、Objective

6、-C等。(4) 當(dāng)前的狀況20世紀(jì)90年代,面向?qū)ο蟮姆治雠c設(shè)計(jì)方法多達(dá)數(shù)十種,這些方法各有所長(zhǎng),現(xiàn)在趨于統(tǒng)一。統(tǒng)一建模語言UML,其推薦的方法是USDP(Unified Software Development Process);UML是一種面向?qū)ο蟮慕UZ言,在軟件產(chǎn)業(yè)界獲得了很大的支持。(3) 繁榮階段1. 與人類習(xí)慣的思維方法一致面向?qū)ο蟮能浖夹g(shù)以對(duì)象為核心,軟件系統(tǒng)由對(duì)象組成。對(duì)象由數(shù)據(jù),以及可以對(duì)這些數(shù)據(jù)施加的操作,封裝在一起所構(gòu)成的統(tǒng)一體。對(duì)象之間通過傳遞消息互相聯(lián)系。面向?qū)ο蟮脑O(shè)計(jì)方法強(qiáng)調(diào)模擬現(xiàn)實(shí)世界中的概念而不強(qiáng)調(diào)算法。面向?qū)ο蠓椒▽W(xué)的基本原則是按照人類習(xí)慣的思維方法建立問

7、題域的模型。9.1.2 面向?qū)ο蠓椒▽W(xué)的優(yōu)點(diǎn)1. 與人類習(xí)慣的思維方法一致9.1.2 面向?qū)ο蠓椒▽W(xué)的2. 穩(wěn)定性好面向?qū)ο蟮能浖到y(tǒng)的結(jié)構(gòu)是根據(jù)問題領(lǐng)域的模型建立起來的,而不是基于對(duì)系統(tǒng)應(yīng)完成的功能的分解。當(dāng)對(duì)系統(tǒng)的功能需求變化時(shí)并不會(huì)引起軟件結(jié)構(gòu)的整體變化,往往僅需要作一些局部性的修改。以對(duì)象為中心構(gòu)造的軟件系統(tǒng)是比較穩(wěn)定的。 2. 穩(wěn)定性好3. 可重用性好在面向?qū)ο蠓椒ㄋ褂玫膶?duì)象中,數(shù)據(jù)和操作正是作為平等伙伴出現(xiàn)的。因此,對(duì)象具有很強(qiáng)的自含性。對(duì)象固有的封裝性和信息隱藏機(jī)制,使得對(duì)象的內(nèi)部實(shí)現(xiàn)與外界隔離,具有較強(qiáng)的獨(dú)立性。對(duì)象是比較理想的模塊和可重用的軟件成分。 3. 可重用性好4.

8、較易開發(fā)大型軟件產(chǎn)品用面向?qū)ο蠓椒▽W(xué)開發(fā)軟件時(shí),構(gòu)成軟件系統(tǒng)的每個(gè)對(duì)象就像一個(gè)微型程序,有自己的數(shù)據(jù)、操作、功能和用途??梢园岩粋€(gè)大型軟件產(chǎn)品分解成一系列本質(zhì)上相互獨(dú)立的小產(chǎn)品來處理,這就不僅降低了開發(fā)的技術(shù)難度,而且也使得對(duì)開發(fā)工作的管理變得容易多了。 4. 較易開發(fā)大型軟件產(chǎn)品5. 可維護(hù)性好面向?qū)ο蟮能浖€(wěn)定性比較好。面向?qū)ο蟮能浖容^容易修改。面向?qū)ο蟮能浖容^容易理解。易于測(cè)試和調(diào)試。5. 可維護(hù)性好一般說來,使用面向?qū)ο蠓椒▽W(xué)開發(fā)軟件時(shí),工作重點(diǎn)應(yīng)該放在生命周期中的分析階段?!皣娙边@個(gè)詞體現(xiàn)了面向?qū)ο筌浖_發(fā)過程迭代和無縫的特性。9.1.3 噴泉模型一般說來,使用面向?qū)ο蠓椒▽W(xué)開

9、發(fā)軟件時(shí),工作重點(diǎn)應(yīng)該放在生命軟件工程導(dǎo)論課件之第9章面向?qū)ο蠓椒▽W(xué)引論(第五版)9.2 面向?qū)ο蟮母拍?.2.1 對(duì)象在應(yīng)用領(lǐng)域中有意義的、與所要解決的問題有關(guān)系的任何事物都可以作為對(duì)象,它既可以是具體的物理實(shí)體的抽象,也可以是人為的概念,或者是任何有明確邊界和意義的東西。面向?qū)ο蠓椒▽W(xué)中的對(duì)象是由描述該對(duì)象屬性的數(shù)據(jù)以及可以對(duì)這些數(shù)據(jù)施加的所有操作封裝在一起構(gòu)成的統(tǒng)一體。 9.2 面向?qū)ο蟮母拍?.2.1 對(duì)象在應(yīng)用領(lǐng)域中有意1. 對(duì)象的形象表示一個(gè)對(duì)象很像一臺(tái)錄音機(jī)。當(dāng)在軟件中使用一個(gè)對(duì)象的時(shí)候,只能通過對(duì)象與外界的界面來操作它。使用對(duì)象時(shí)只需知道它向外界提供的接口形式而無須知道它的內(nèi)部

10、實(shí)現(xiàn)算法。 1. 對(duì)象的形象表示2. 對(duì)象的定義定義1:對(duì)象是具有相同狀態(tài)的一組操作的集合。定義2:對(duì)象是對(duì)問題域中某個(gè)東西的抽象,這種抽象反映了系統(tǒng)保存有關(guān)這個(gè)東西的信息或與它交互的能力。定義3:對(duì)象=ID,MS,DS,MI。其中,ID是對(duì)象的標(biāo)識(shí)或名字,MS是對(duì)象中的操作集合,DS是對(duì)象的數(shù)據(jù)結(jié)構(gòu),MI是對(duì)象受理的消息名集合(即對(duì)外接口)。2. 對(duì)象的定義3. 對(duì)象的特點(diǎn)以數(shù)據(jù)為中心。操作圍繞對(duì)其數(shù)據(jù)所需要做的處理來設(shè)置。對(duì)象是主動(dòng)的。必須通過公有接口向?qū)ο蟀l(fā)消息,請(qǐng)求它執(zhí)行某個(gè)操作,處理私有數(shù)據(jù)。實(shí)現(xiàn)了數(shù)據(jù)封裝。私有數(shù)據(jù)對(duì)外是隱藏的、不可見的,只能通過公有操作進(jìn)行。本質(zhì)上具有并行性。不同

11、對(duì)象各自獨(dú)立處理自身數(shù)據(jù),彼此通過發(fā)消息傳遞信息完成通信。 模塊獨(dú)立性好。對(duì)象內(nèi)部各種元素彼此結(jié)合得很緊密,內(nèi)聚性相當(dāng)強(qiáng)。3. 對(duì)象的特點(diǎn)4. 表現(xiàn)形式外部實(shí)體:產(chǎn)生或消耗一個(gè)基于計(jì)算機(jī)的系統(tǒng)所用的信息。物:?jiǎn)栴}信息域的一部分。事件:發(fā)生于系統(tǒng)操作的有關(guān)時(shí)刻。角色:由與系統(tǒng)交互作用的人來扮演。組織單位:與應(yīng)用相關(guān)的機(jī)構(gòu)。場(chǎng)所:使問題和系統(tǒng)的整個(gè)運(yùn)作有固定的位置。結(jié)構(gòu):定義一類對(duì)象或定義對(duì)象的相關(guān)類。4. 表現(xiàn)形式1. 類(class):“類”就是對(duì)具有相同數(shù)據(jù)和相同操作的一組相似對(duì)象的定義。2. 實(shí)例(instance):實(shí)例就是由某個(gè)特定的類所描述的一個(gè)具體的對(duì)象。3. 消息(message

12、):消息就是要求某個(gè)對(duì)象執(zhí)行在定義它的那個(gè)類中所定義的某個(gè)操作的規(guī)格說明。通常,一個(gè)消息由下述3部分組成:接收消息的對(duì)象;消息選擇符(也稱為消息名);零個(gè)或多個(gè)變?cè)?9.2.2 其他概念1. 類(class):“類”就是對(duì)具有相同數(shù)據(jù)和相同操作的4. 方法(method):方法就是對(duì)象所能執(zhí)行的操作,也就是類中所定義的服務(wù)。5. 屬性(attribute):屬性就是類中所定義的數(shù)據(jù),它是對(duì)客觀世界實(shí)體所具有的性質(zhì)的抽象。6. 封裝(encapsulation):在面向?qū)ο蟮某绦蛑?,把?shù)據(jù)和實(shí)現(xiàn)操作的代碼集中起來放在對(duì)象內(nèi)部。4. 方法(method):方法就是對(duì)象所能執(zhí)行的操作,也就7. 繼

13、承(inheritance):在面向?qū)ο蟮能浖夹g(shù)中,繼承是子類自動(dòng)地共享基類中定義的數(shù)據(jù)和方法的機(jī)制。8. 多態(tài)性(polymorphism):多態(tài)性是指子類對(duì)象可以像父類對(duì)象那樣使用,同樣的消息既可以發(fā)送給父類對(duì)象也可以發(fā)送給子類對(duì)象。9. 重載(overloading):函數(shù)重載是指在同一作用域內(nèi)的若干個(gè)參數(shù)特征不同的函數(shù)可以使用相同的函數(shù)名字;運(yùn)算符重載是指同一個(gè)運(yùn)算符可以施加于不同類型的操作數(shù)上面。7. 繼承(inheritance):在面向?qū)ο蟮能浖夹g(shù)中9.3 面向?qū)ο蠼S妹嫦驅(qū)ο蠓椒ㄩ_發(fā)軟件,通常需要建立3種形式的模型:對(duì)象模型描述系統(tǒng)數(shù)據(jù)結(jié)構(gòu);動(dòng)態(tài)模型描述系統(tǒng)控制結(jié)構(gòu);功能

14、模型描述系統(tǒng)功能。3種模型都涉及到數(shù)據(jù)、控制和操作等共同的概念,只不過每種模型描述的側(cè)重點(diǎn)不同。3種模型各自從不同側(cè)面反映了系統(tǒng)的實(shí)質(zhì)性內(nèi)容,綜合起來則全面地反映了對(duì)目標(biāo)系統(tǒng)的需求。9.3 面向?qū)ο蠼S妹嫦驅(qū)ο蠓椒ㄩ_發(fā)軟件,通常需要建立3軟件工程導(dǎo)論課件之第9章面向?qū)ο蠓椒▽W(xué)引論(第五版)對(duì)任何大系統(tǒng)來說,上述3種模型都是必不可少的。在不同的應(yīng)用問題中,這3種模型的相對(duì)重要程度會(huì)有所不同,對(duì)象模型始終都是最重要、最基本、最核心的。在整個(gè)開發(fā)過程中,3種模型一直都在發(fā)展、完善。分析過程中,構(gòu)造完全獨(dú)立于實(shí)現(xiàn)的應(yīng)用域模型;設(shè)計(jì)過程中,把求解域的結(jié)構(gòu)逐漸加入到模型中;實(shí)現(xiàn)階段,把應(yīng)用域和求解域的結(jié)

15、構(gòu)都編成程序代碼并進(jìn)行嚴(yán)格的測(cè)試驗(yàn)證。 對(duì)任何大系統(tǒng)來說,上述3種模型都是必不可少的。9.4 對(duì)象模型對(duì)象模型表示靜態(tài)的、結(jié)構(gòu)化的系統(tǒng)的“數(shù)據(jù)”性質(zhì)。它是對(duì)模擬客觀世界實(shí)體的對(duì)象以及對(duì)象彼此間的關(guān)系的映射,描述了系統(tǒng)的靜態(tài)結(jié)構(gòu)。面向?qū)ο蠓椒◤?qiáng)調(diào)圍繞對(duì)象而不是圍繞功能來構(gòu)造系統(tǒng)。對(duì)象模型為建立動(dòng)態(tài)模型和功能模型,提供了實(shí)質(zhì)性的框架。1996年6月出現(xiàn)統(tǒng)一建模語言UML 0.9。1997年11月,國際對(duì)象管理組織OMG批準(zhǔn)把UML 1.1作為基于面向?qū)ο蠹夹g(shù)的標(biāo)準(zhǔn)建模語言。 9.4 對(duì)象模型對(duì)象模型表示靜態(tài)的、結(jié)構(gòu)化的系統(tǒng)的“數(shù)據(jù)”UML概述:Unified Modeling Language (

16、統(tǒng)一建模語言)是國際對(duì)象 管理組織OMG制定的一個(gè)通 用的、可視化建模語言標(biāo)準(zhǔn)。用于描述(specify)、可視化(visualize)、構(gòu)造(construct)和記載(document)軟件密集型系統(tǒng)的各種工件。UML提供了一系列建模元素、概念、關(guān)系以及規(guī)則,應(yīng)用于軟件開發(fā)活動(dòng)。UML概述:UML歷史:1994年,Booch 和Rumbaugh在 Rational開始了 UML的工作,當(dāng)時(shí)目標(biāo)是創(chuàng)建一個(gè)“統(tǒng)一方法”。他們把Booch93和OMT2統(tǒng)一起來,與95年發(fā)布了UM0.8(Unified Method)。1995年OOSE的創(chuàng)始人Jacobson加入到這個(gè)聯(lián)盟中,開始把工作重點(diǎn)放到

17、創(chuàng)建一種標(biāo)準(zhǔn)建模語言,UML Unified Modeling Language。他們以Booch方法、OMT方法、OOSE方法為基礎(chǔ),吸收了其他流派的長(zhǎng)處,于96年6月、10月、97年1月、11月分別推出了UML0.9、0.91、1.0和1.1。James RumbaughGrady BoochIvar JacobsonUML歷史:James RumbaughGrady BoocUML要素:Method方法告訴使用者做什么、怎么做、什么時(shí)候做、為什么做(特定活動(dòng)的目的),方法包括模型。Modeling模型用來描述使用某種方法的結(jié)果,例如,通過不同角度的簡(jiǎn)化視圖,描述對(duì)象系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)結(jié)果,

18、模型用建模語言來表達(dá)。Language建模語言由記號(hào)(模型使用的符號(hào))和一組規(guī)則(語法、語義等)組成。UML要素:UML的圖表:UML的圖表:1. 用例圖(use case diagram)捕獲用戶能夠看到的系統(tǒng)在開發(fā)過程的早期創(chuàng)建目的詳細(xì)說明系統(tǒng)的表達(dá)含義捕獲系統(tǒng)的需求驗(yàn)證系統(tǒng)的體系結(jié)構(gòu)驅(qū)動(dòng)實(shí)現(xiàn)和生成測(cè)試用例由分析人員和領(lǐng)域?qū)<议_發(fā)1. 用例圖(use case diagram)軟件工程導(dǎo)論課件之第9章面向?qū)ο蠓椒▽W(xué)引論(第五版)軟件工程導(dǎo)論課件之第9章面向?qū)ο蠓椒▽W(xué)引論(第五版)2. 類圖(class diagram)捕獲系統(tǒng)的詞匯表在開發(fā)過程中被創(chuàng)建和精確化目的系統(tǒng)中的名字和模型概念詳細(xì)

19、描述協(xié)作關(guān)系詳細(xì)描述邏輯數(shù)據(jù)庫表由分析人員、設(shè)計(jì)人員和代碼實(shí)現(xiàn)人員開發(fā)2. 類圖(class diagram)軟件工程導(dǎo)論課件之第9章面向?qū)ο蠓椒▽W(xué)引論(第五版)軟件工程導(dǎo)論課件之第9章面向?qū)ο蠓椒▽W(xué)引論(第五版)3. 對(duì)象圖(object diagram)捕獲實(shí)例和連接在分析和設(shè)計(jì)階段創(chuàng)建目的舉例說明數(shù)據(jù)/對(duì)象結(jié)構(gòu)詳細(xì)描述瞬態(tài)圖由分析人員、設(shè)計(jì)人員和代碼實(shí)現(xiàn)人員開發(fā)3. 對(duì)象圖(object diagram)軟件工程導(dǎo)論課件之第9章面向?qū)ο蠓椒▽W(xué)引論(第五版)軟件工程導(dǎo)論課件之第9章面向?qū)ο蠓椒▽W(xué)引論(第五版)4. 構(gòu)件圖(component diagram) 捕獲實(shí)現(xiàn)的物理結(jié)構(gòu)作為體系結(jié)構(gòu)

20、規(guī)范的一部分實(shí)現(xiàn)目的組織源代碼構(gòu)造一個(gè)可執(zhí)行的發(fā)布版本指定物理數(shù)據(jù)庫由集成人員和程序人員創(chuàng)建4. 構(gòu)件圖(component diagram) 軟件工程導(dǎo)論課件之第9章面向?qū)ο蠓椒▽W(xué)引論(第五版)5. 部署圖(deployment diagram)捕獲系統(tǒng)硬件的拓?fù)浣Y(jié)構(gòu)作為系統(tǒng)結(jié)構(gòu)規(guī)范的一部分被創(chuàng)建目的描述組件的分布標(biāo)識(shí)系統(tǒng)性能瓶頸由集成人員、網(wǎng)絡(luò)工程師和系統(tǒng)工程師開發(fā)5. 部署圖(deployment diagram)軟件工程導(dǎo)論課件之第9章面向?qū)ο蠓椒▽W(xué)引論(第五版)6. 時(shí)序圖(sequence diagram)捕獲系統(tǒng)的動(dòng)態(tài)行為(面向時(shí)間的)目的模型流程的控制舉例說明典型的腳本6. 時(shí)

21、序圖(sequence diagram)軟件工程導(dǎo)論課件之第9章面向?qū)ο蠓椒▽W(xué)引論(第五版)打印機(jī)就緒打印文件打印機(jī)忙保存文件打印文件打印文件計(jì)算機(jī)打印服務(wù)器打印隊(duì)列計(jì)算機(jī)打印機(jī)就緒打印機(jī)忙打印文件打印文件計(jì)算機(jī)打印服務(wù)器打7. 協(xié)作圖(collaboration diagram)捕獲系統(tǒng)的動(dòng)態(tài)行為(面向消息的)目的模型流程控制舉例說明對(duì)象結(jié)構(gòu)和控制的協(xié)調(diào)7. 協(xié)作圖(collaboration diagram)軟件工程導(dǎo)論課件之第9章面向?qū)ο蠓椒▽W(xué)引論(第五版)打印機(jī)忙保存文件打印機(jī)就緒打印文件打印文件計(jì)算機(jī)打印隊(duì)列打印服務(wù)器打印機(jī)打印機(jī)忙打印機(jī)就緒打印文件計(jì)算機(jī)打印隊(duì)列打印服務(wù)器打8. 狀

22、態(tài)圖(state diagram)捕獲系統(tǒng)動(dòng)態(tài)行為(面向事件的)目的對(duì)象生命周期模型為起反作用的對(duì)象(用戶接口、設(shè)備等)建模8. 狀態(tài)圖(state diagram)軟件工程導(dǎo)論課件之第9章面向?qū)ο蠓椒▽W(xué)引論(第五版)超時(shí)到達(dá)上樓上樓到達(dá)上樓到達(dá)在底樓向上移動(dòng)向底樓移動(dòng)向下移動(dòng)空閑超時(shí)到達(dá)上樓上樓到達(dá)上樓到達(dá)在底樓向上移動(dòng)向底樓移動(dòng)向下移動(dòng)9. 活動(dòng)圖(activity diagram)捕獲動(dòng)態(tài)行為(面向活動(dòng)的)目的給商業(yè)工作流建模給操作建模9. 活動(dòng)圖(activity diagram)軟件工程導(dǎo)論課件之第9章面向?qū)ο蠓椒▽W(xué)引論(第五版)Disk freeDisk full顯示磁盤滿顯示在打

23、印刪去顯示信息建立打印文件Win.printAll()printer.print()Disk freeDisk full顯示磁盤滿顯示在打印刪去UML工具: (1) Astah 6.1.1曾用名:JUDE JUDE是一個(gè)中日合作的軟件項(xiàng)目。UML工具: (2) UMLet 10.3輕量級(jí)UML建模工具。開放源代碼。UMLet能夠讓你快速建模,并且能夠?qū)С龈鞣N格式SVG, JPG, PDF and LaTeX-friendly EPS。 (2) UMLet 10.3(3) ArgoUML V0.26.2開源的UML 建模工具。支持所有UML 1.4 的標(biāo)準(zhǔn)圖形。它可以運(yùn)行在任何Java平臺(tái)上,并

24、且支持10 種自然語言。(3) ArgoUML V0.26.2(4) BOUml 4.20(法國)一個(gè)免費(fèi)的UML 2工具箱。支持C+,Java以及Idl。 (4) BOUml 4.20(法國)(5) Visual paradigm for UML 7.2 community(香港)為軟件工程師、系統(tǒng)分析員、商業(yè)分析員、系統(tǒng)建筑師而設(shè)計(jì)的一個(gè)UML CASE工具。(5) Visual paradigm for UML 7.1. 定義類 3個(gè)區(qū)域分別放類的名字、屬性和服務(wù)。下面兩個(gè)區(qū)域可省略。9.4.1 類圖的基本符號(hào)1. 定義類9.4.1 類圖的基本符號(hào)類的命名準(zhǔn)則:使用標(biāo)準(zhǔn)術(shù)語。應(yīng)該使用在應(yīng)

25、用領(lǐng)域中人們習(xí)慣的標(biāo)準(zhǔn)術(shù)語作為類名,不要隨意創(chuàng)造名字。使用具有確切含義的名詞。盡量使用能表示類的含義的日常用語作名字,不要使用空洞的或含義模糊的詞作名字。必要時(shí)用名詞短語作名字。為使名字的含義更準(zhǔn)確,必要時(shí)用形容詞加名詞或其他形式的名詞短語作名字。類的命名準(zhǔn)則:2. 定義屬性可見性 屬性名: 類型名=初值性質(zhì)串可見性有3種:公有的(public)、私有的(private)和保護(hù)的(protected),分別用+、-和#表示。類型名表示該屬性的數(shù)據(jù)類型,它可以是基本數(shù)據(jù)類型,也可以是用戶自定義的類型。在創(chuàng)建類的實(shí)例時(shí)應(yīng)給其屬性賦值,如果給某個(gè)屬性定義了初值,則該初值可作為創(chuàng)建實(shí)例時(shí)這個(gè)屬性的默認(rèn)

26、值。性質(zhì)串明確地列出該屬性所有可能的取值。枚舉類型的屬性用性質(zhì)串列出可選用的枚舉值。說明屬性的其他性質(zhì)。例如,約束說明只讀表明該屬性是只讀屬性。 2. 定義屬性例子:-管理員: String=“未定”類的屬性中可以有一種能被該類所有對(duì)象共享的屬性,稱為類的作用域?qū)傩?,也稱為類變量。類變量在類圖中表示為帶下劃線的屬性。-貨單數(shù): Integer 例子:3. 定義服務(wù)可見性 操作名(參數(shù)表):返回值類型性質(zhì)串操作可見性的定義方法與屬性相同。參數(shù)表是用逗號(hào)分隔的形式參數(shù)的序列。參數(shù)名:類型名=默認(rèn)值當(dāng)操作的調(diào)用者未提供實(shí)在參數(shù)時(shí),該參數(shù)就使用默認(rèn)值。與屬性類似,在類中也可定義類作用域操作,在類圖中表

27、示為帶下劃線的操作。這種操作只能存取本類的類作用域?qū)傩浴?3. 定義服務(wù)類與類之間的關(guān)系有:關(guān)聯(lián) 表示兩個(gè)類的對(duì)象之間存在某種語義上的聯(lián)系。 聚集 表示類與類之間的關(guān)系是整體與部分的關(guān)系。泛化(繼承) 是通用元素和具體元素之間的一種分類關(guān)系 。依賴和細(xì)化 依賴關(guān)系描述兩個(gè)模型元素之間的語義連接關(guān)系;細(xì)化關(guān)系描述不同抽象層次上的同一個(gè)事物。 9.4.2 表示關(guān)系的符號(hào)類與類之間的關(guān)系有:9.4.2 表示關(guān)系的符號(hào)1. 關(guān)聯(lián)關(guān)聯(lián)表示兩個(gè)類的對(duì)象之間存在某種語義上的聯(lián)系。 (1) 普通關(guān)聯(lián)普通關(guān)聯(lián)是最常見的關(guān)聯(lián)關(guān)系,只要在類與類之間存在連接關(guān)系就可以用普通關(guān)聯(lián)表示。關(guān)聯(lián)是雙向的,可在一個(gè)方向上為關(guān)聯(lián)

28、起一個(gè)名字,在另一個(gè)方向上起另一個(gè)名字。在名字前面(或后面)加一個(gè)表示關(guān)聯(lián)方向的黑三角。1. 關(guān)聯(lián)在表示關(guān)聯(lián)的直線兩端可以寫上重?cái)?shù),表示該類有多少個(gè)對(duì)象與對(duì)方的一個(gè)對(duì)象連接。重?cái)?shù)的表示方法通常有:0.1 表示 0到1個(gè)對(duì)象0.*或* 表示 0到多個(gè)對(duì)象1+或1.* 表示 1到多個(gè)對(duì)象1.15 表示 1到15個(gè)對(duì)象3 表示 3個(gè)對(duì)象未標(biāo)明 表示 1個(gè)對(duì)象在表示關(guān)聯(lián)的直線兩端可以寫上重?cái)?shù),表示該類有多少個(gè)對(duì)象與對(duì)方軟件工程導(dǎo)論課件之第9章面向?qū)ο蠓椒▽W(xué)引論(第五版)(2) 關(guān)聯(lián)的角色在任何關(guān)聯(lián)中都會(huì)涉及到參與此關(guān)聯(lián)的對(duì)象所扮演的角色,在某些情況下顯式標(biāo)明角色名有助于別人理解類圖。如果沒有顯式標(biāo)出角

29、色名,則意味著用類名作為角色名。 (2) 關(guān)聯(lián)的角色軟件工程導(dǎo)論課件之第9章面向?qū)ο蠓椒▽W(xué)引論(第五版)(3) 限定關(guān)聯(lián)限定關(guān)聯(lián)通常用在一對(duì)多或多對(duì)多的關(guān)聯(lián)關(guān)系中,可以把模型中的重?cái)?shù)從一對(duì)多變成一對(duì)一,或從多對(duì)多簡(jiǎn)化成多對(duì)一。在類圖中把限定詞放在關(guān)聯(lián)關(guān)系末端的一個(gè)小方框內(nèi)。限定提高了語義精確性,增強(qiáng)查詢能力。 (3) 限定關(guān)聯(lián)(4) 關(guān)聯(lián)類為了說明關(guān)聯(lián)的性質(zhì)可能需要一些附加信息,可以引入一個(gè)關(guān)聯(lián)類來記錄這些信息。關(guān)聯(lián)中的每個(gè)連接與關(guān)聯(lián)類的一個(gè)對(duì)象相聯(lián)系。關(guān)聯(lián)類通過一條虛線與關(guān)聯(lián)連接。關(guān)聯(lián)類與一般類一樣,也有屬性、操作和關(guān)聯(lián)。(4) 關(guān)聯(lián)類2. 聚集聚集是關(guān)聯(lián)的特例。聚集表示類與類之間是整體與部

30、分的關(guān)系。除了一般聚集之外,還有兩種特殊的聚集關(guān)系:共享聚集和組合聚集。(1) 共享聚集聚集關(guān)系中處于部分方的對(duì)象可同時(shí)參與多個(gè)處于整體方對(duì)象的構(gòu)成。2. 聚集(2) 組合聚集部分類完全隸屬于整體類,部分與整體共存,整體不存在了部分也會(huì)隨之消失。 (2) 組合聚集軟件工程導(dǎo)論課件之第9章面向?qū)ο蠓椒▽W(xué)引論(第五版)3. 泛化(繼承)它是通用元素和具體元素之間的一種分類關(guān)系。具體元素完全擁有通用元素的信息,并且還可以附加一些其他信息。泛化針對(duì)類而不針對(duì)實(shí)例,一個(gè)類可以繼承另一個(gè)類,但一個(gè)對(duì)象不能繼承另一個(gè)對(duì)象。泛化關(guān)系指出在類與類之間存在“一般-特殊”關(guān)系。泛化可進(jìn)一步劃分成普通泛化和受限泛化。

31、 3. 泛化(繼承)(1) 普通泛化沒有具體對(duì)象的類稱為抽象類。抽象類通常作為父類,用于描述其他類(子類)的公共屬性和行為。自底向上泛化 (1) 普通泛化自底向上泛化 自頂向下泛化 自頂向下泛化 軟件工程導(dǎo)論課件之第9章面向?qū)ο蠓椒▽W(xué)引論(第五版)(2) 受限泛化給泛化關(guān)系附加約束條件,以進(jìn)一步說明該泛化關(guān)系的使用方法或擴(kuò)充方法。預(yù)定義的約束有4種: 多重、不相交、完全和不完全。這些約束都是語義約束。(2) 受限泛化軟件工程導(dǎo)論課件之第9章面向?qū)ο蠓椒▽W(xué)引論(第五版)多重繼承:一個(gè)子類可同時(shí)多次繼承同一個(gè)上層基類。不相交繼承:與多重繼承相反,即一個(gè)子類不能多次繼承同一個(gè)基類。如果圖中沒有指定多

32、重約束,則是不相交繼承,一般的繼承都是不相交繼承。完全繼承:父類的所有子類都已在類圖中窮舉出來了,圖示符號(hào)是指定完全約束。不完全繼承:與完全繼承恰好相反,父類的子類并沒有都窮舉出來,隨著對(duì)問題理解的深入,可不斷補(bǔ)充和維護(hù)。不完全繼承是一般情況下默認(rèn)的繼承關(guān)系。多重繼承:一個(gè)子類可同時(shí)多次繼承同一個(gè)上層基類。4. 依賴和細(xì)化(1) 依賴關(guān)系依賴關(guān)系描述兩個(gè)模型元素(類、用例等)之間的語義連接關(guān)系: 其中一個(gè)模型元素是獨(dú)立的,另一個(gè)模型元素不是獨(dú)立的,它依賴于獨(dú)立的模型元素,如果獨(dú)立的模型元素改變了,將影響依賴于它的模型元素。4. 依賴和細(xì)化軟件工程導(dǎo)論課件之第9章面向?qū)ο蠓椒▽W(xué)引論(第五版)(2

33、) 細(xì)化關(guān)系當(dāng)對(duì)同一個(gè)事物在不同抽象層次上描述時(shí),這些描述之間具有細(xì)化關(guān)系。假設(shè)兩個(gè)模型元素A和B描述同一個(gè)事物,區(qū)別是抽象層次不同,如果B是A的更詳細(xì)的描述,則稱B細(xì)化了A,或稱A細(xì)化成了B。細(xì)化用來協(xié)調(diào)不同階段模型之間的關(guān)系,表示各個(gè)開發(fā)階段不同抽象層次的模型之間的相關(guān)性,常常用于跟蹤模型的演變。 (2) 細(xì)化關(guān)系聚集繼承依賴聚集繼承依賴?yán)}:建立以下系統(tǒng)的對(duì)象模型。在顯示器屏幕上坐標(biāo)為(100,100)的位置畫一個(gè)半徑為40的圓,在坐標(biāo)為(400,150)的位置畫一條弧,弧的起始角度為30度,結(jié)束角度為120度,半徑為50。例題:軟件工程導(dǎo)論課件之第9章面向?qū)ο蠓椒▽W(xué)引論(第五版)軟件工

34、程導(dǎo)論課件之第9章面向?qū)ο蠓椒▽W(xué)引論(第五版)軟件工程導(dǎo)論課件之第9章面向?qū)ο蠓椒▽W(xué)引論(第五版)軟件工程導(dǎo)論課件之第9章面向?qū)ο蠓椒▽W(xué)引論(第五版)9.5 動(dòng)態(tài)模型動(dòng)態(tài)模型表示瞬時(shí)、行為化的系統(tǒng)的“控制”性質(zhì),它規(guī)定對(duì)象模型中對(duì)象的合法變化序列。通常,用UML提供的狀態(tài)圖來描繪對(duì)象的狀態(tài)、觸發(fā)狀態(tài)轉(zhuǎn)換的事件以及對(duì)象的行為。每個(gè)類的動(dòng)態(tài)行為用一張狀態(tài)圖來描繪,各個(gè)類的狀態(tài)圖通過共享事件合并起來,從而構(gòu)成系統(tǒng)的動(dòng)態(tài)模型。動(dòng)態(tài)模型是基于事件共享而互相關(guān)聯(lián)的一組狀態(tài)圖的集合。 9.5 動(dòng)態(tài)模型動(dòng)態(tài)模型表示瞬時(shí)、行為化的系統(tǒng)的“控制”性超時(shí)到達(dá)下樓上樓到達(dá)上樓到達(dá)在底樓向上移動(dòng)向底樓移動(dòng)向下移動(dòng)空閑電

35、梯的運(yùn)行超時(shí)到達(dá)下樓上樓到達(dá)上樓到達(dá)在底樓向上移動(dòng)向底樓移動(dòng)向下移動(dòng)復(fù)印機(jī)的工作過程復(fù)印機(jī)的工作過程9.6 功能模型功能模型表示變化的系統(tǒng)的“功能”性質(zhì),它指明了系統(tǒng)應(yīng)該“做什么”,因此更直接地反映了用戶對(duì)目標(biāo)系統(tǒng)的需求。通常,功能模型由一組數(shù)據(jù)流圖組成。在面向?qū)ο蠓椒▽W(xué)中,數(shù)據(jù)流圖遠(yuǎn)不如在結(jié)構(gòu)分析、設(shè)計(jì)方法中那樣重要。UML提供的用例圖也是進(jìn)行需求分析和建立功能模型的強(qiáng)有力工具。在UML中把用用例圖建立起來的系統(tǒng)模型稱為用例模型。 9.6 功能模型功能模型表示變化的系統(tǒng)的“功能”性質(zhì),它指用例圖包含的模型元素有系統(tǒng)、行為者、用例及用例之間的關(guān)系。符號(hào)表示:9.6.1 用例圖用例圖包含的模型元

36、素有系統(tǒng)、行為者、用例及用例之間的關(guān)系。91. 系統(tǒng)系統(tǒng)被看作是一個(gè)提供用例的黑盒子,內(nèi)部如何工作、用例如何實(shí)現(xiàn),這些對(duì)于建立用例模型來說都是不重要的。系統(tǒng)方框的邊線表示系統(tǒng)的邊界,用于劃定系統(tǒng)的功能范圍,定義了系統(tǒng)所具有的功能。 1. 系統(tǒng)軟件工程導(dǎo)論課件之第9章面向?qū)ο蠓椒▽W(xué)引論(第五版)軟件工程導(dǎo)論課件之第9章面向?qū)ο蠓椒▽W(xué)引論(第五版)2. 用例一個(gè)用例是可以被行為者感受到的、系統(tǒng)的一個(gè)完整的功能。在UML中把用例定義成系統(tǒng)完成的一系列動(dòng)作,動(dòng)作的結(jié)果能被特定的行為者察覺到。這些動(dòng)作除了完成系統(tǒng)內(nèi)部的計(jì)算與工作外,還包括與一些行為者的通信。用例通過關(guān)聯(lián)與行為者連接,關(guān)聯(lián)指出一個(gè)用例與哪些行為者交互,這種交互是雙向的。用例具有下述特征:代表某些用戶可見的功能,實(shí)現(xiàn)一個(gè)具體的用戶目標(biāo);總是被行為者啟動(dòng)的,并向行為者提供可識(shí)別的值;必須是完整的。2. 用例軟件工程導(dǎo)論課件之第9章面向?qū)ο蠓椒▽W(xué)引論(第五版)3. 行為者行為者是指與系統(tǒng)交互的人或其他系統(tǒng),它代表外部實(shí)體。使用用例并且與系統(tǒng)交互的任何人或物都是行為者。行為者代表一種角色,而不是某個(gè)具體的人或物。事實(shí)上,一個(gè)具體的人可以充當(dāng)多種不同角色。 3. 行為者軟件工程導(dǎo)論課

溫馨提示

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

評(píng)論

0/150

提交評(píng)論