統(tǒng)一建模語言UML第二版課件_第1頁
統(tǒng)一建模語言UML第二版課件_第2頁
統(tǒng)一建模語言UML第二版課件_第3頁
統(tǒng)一建模語言UML第二版課件_第4頁
統(tǒng)一建模語言UML第二版課件_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、課程計劃課程名稱:面向?qū)ο蠓治雠c設(shè)計課程名稱:面向?qū)ο蠓治雠c設(shè)計 學(xué)學(xué) 時:時:32學(xué)時學(xué)時學(xué)學(xué) 分:分:2學(xué)分學(xué)分課程性質(zhì):課程性質(zhì):專業(yè)選修課程專業(yè)選修課程選用教材:袁濤選用教材:袁濤 孔蕾蕾編著孔蕾蕾編著 統(tǒng)一建模語言統(tǒng)一建模語言UML 清華大學(xué)出版社清華大學(xué)出版社. 2012. 9教學(xué)計劃主要參考書:主要參考書:1、郭寧編著:UML及建模清華大學(xué)出版社,北京交通大學(xué)出版社 2007年1月2、王少鋒編著:面向?qū)ο蠹夹g(shù)UML教程 清華大學(xué)出版社. 2006.7 教學(xué)大綱 本課程根據(jù)計算機科學(xué)與技術(shù)專業(yè)本科教學(xué)的需要,總結(jié)與吸收國內(nèi)外有關(guān)研究成果,從理論與實踐相結(jié)合方面介紹面向?qū)ο蠹夹g(shù),在闡

2、述面向?qū)ο蟮睦碚摰耐瑫r,采用UML語言進行實例分析與設(shè)計,使學(xué)生學(xué)完本課程,既掌握了面向?qū)ο蟮睦碚?,又能用?biāo)準的面向?qū)ο蟮姆椒ń鉀Q實際問題。教學(xué)大綱 課程的要點有: 面向?qū)ο笏枷氲挠蓙?;面向?qū)ο蟮睦砟?;面向?qū)ο笙到y(tǒng)的特性;UML基本元素;UML用例圖;交互作用圖;活動圖;類圖與對象圖;狀態(tài)圖;組件圖與配置圖;圖形語義、功能和應(yīng)用。教學(xué)大綱 學(xué)完本課程,學(xué)生在面向?qū)ο罄碚摰幕A(chǔ)上可采用統(tǒng)一建模語言(UML)來對軟件系統(tǒng)進行描述、構(gòu)造、可視化和文檔編制,進入計算機應(yīng)用軟件開發(fā)的前沿??己朔绞窖芯空撐模航Y(jié)合實際課題,依照本課程所學(xué)的技術(shù)方法,進行軟件分析設(shè)計,撰寫相應(yīng)的文檔,爭取發(fā)表一篇論文。第第1

3、章章 面向?qū)ο蠹夹g(shù)概述面向?qū)ο蠹夹g(shù)概述11 軟件危機及軟件工程軟件危機及軟件工程12 對軟件開發(fā)的基本認識對軟件開發(fā)的基本認識13 軟件的固有復(fù)雜性軟件的固有復(fù)雜性14 控制軟件復(fù)雜性的基本方法控制軟件復(fù)雜性的基本方法15 面向?qū)ο蠹夹g(shù)面向?qū)ο蠹夹g(shù)16 面向?qū)ο箢I(lǐng)域中的基本概念面向?qū)ο箢I(lǐng)域中的基本概念11 軟件危機及軟件工程軟件危機及軟件工程 20世紀60年代中期開始爆發(fā)的軟件危機 , 經(jīng)過五十多年的探索和發(fā)展,軟件工程這門學(xué)科有了長足進展,但軟件危機依然存在,而且有越來越嚴重的趨勢。大量事實說明,軟件的質(zhì)量和生產(chǎn)率問題遠沒有得到解決,與五十多年前的軟件相比,現(xiàn)在的軟件在規(guī)模、復(fù)雜性等方面遠遠

4、超過以前的軟件,大型軟件開發(fā)中許多問題,如開發(fā)效率低、產(chǎn)品質(zhì)量差、產(chǎn)品難以維護、軟件可移植性差、開發(fā)費用超過預(yù)算、開發(fā)時間超期等依然存在。 11 軟件危機及軟件工程軟件危機及軟件工程 就國內(nèi)外軟件開發(fā)現(xiàn)狀而言,對于小型軟件系統(tǒng),有比較好的開發(fā)方法,成功率也較高,但對于中大型軟件系統(tǒng)的開發(fā),情況則不盡如人意,在開發(fā)效率、開發(fā)費用、產(chǎn)品質(zhì)量等重要方面部不能令人滿意。 11 軟件危機及軟件工程軟件危機及軟件工程 針對大型軟件系統(tǒng)開發(fā)中存在的問題,人們提出了各種各樣的軟件開發(fā)方法,如瀑布式軟件開發(fā)方法、快速原型方法、螺旋式軟件開發(fā)方法、變換式軟件開發(fā)方法、增量式軟件開發(fā)方法、凈室(cleanroom)

5、軟件開發(fā)方法、噴泉式軟件開發(fā)方法等。但這些方法并未完全解決軟件危機的問題,都存在這樣或那樣的問題,軟件危機依然存在。12 對軟件開發(fā)的基本認識對軟件開發(fā)的基本認識 大型軟件系統(tǒng)的特點是:開發(fā)代價高,開發(fā)時間長,參加開發(fā)的人員多,軟件生命周期長。采用傳統(tǒng)的軟件工程方法開發(fā)大型軟件存在開發(fā)效率低、產(chǎn)品質(zhì)量差、產(chǎn)品難以維護、軟件可移植性差、軟件可重用性低等問題。 12 對軟件開發(fā)的基本認識對軟件開發(fā)的基本認識 一個軟件系統(tǒng)的開發(fā)可以從兩個方面進行刻畫,一方面是軟件開發(fā)過程,從軟件需求、總體設(shè)計、詳細設(shè)計、代碼實現(xiàn)、測試到最終產(chǎn)品的提交,以及后期的軟件維護及再開發(fā)過程,這方面要求軟件開發(fā)具有連續(xù)性,開

6、發(fā)各階段得到的產(chǎn)品要求在理輯上相互一致:另一方面是軟件開發(fā)過程中所涉及的各種資源,它們包括參與開發(fā)的各種工作人員、硬件資源和軟件資源,這些資源在使用過程中需要進行協(xié)調(diào)和管理。12 對軟件開發(fā)的基本認識對軟件開發(fā)的基本認識正是這兩個方面之間的相互作用,形成了完整的軟件開發(fā)話動。目前軟件開發(fā)中存在的問題,究其原因,往往是由于在這兩個方面上控制不當(dāng),或協(xié)調(diào)不一致造成的。軟件工程的目的就是要在規(guī)定的時間、規(guī)定的開發(fā)費用內(nèi)開發(fā)出滿足用戶需求的高質(zhì)量的軟件系統(tǒng)。 13 軟件的固有復(fù)雜性軟件的固有復(fù)雜性軟件具有與硬件表現(xiàn)形式不同、生產(chǎn)方式不同、產(chǎn)品要求不同及維護方式不同的特點。軟件的特點說明了軟件開發(fā)的復(fù)雜

7、性和因難性。著名的計算機專家、被稱之為IBM 360系列計算機之父的FBrooks認為軟件的復(fù)雜性是固有的,軟件可能是人類所能制造出來的最復(fù)雜的實體。導(dǎo)致軟件復(fù)雜性的原因很多,下面列出一些主要的原因。 13 軟件的固有復(fù)雜性軟件的固有復(fù)雜性 首先,軟件的復(fù)雜性和計算機的體系結(jié)構(gòu)有關(guān)。 其次,軟件開發(fā)是人的一種智力活動,軟件系統(tǒng)從本質(zhì)上來說是由許多相互聯(lián)系的概念所組成的結(jié)構(gòu)。 第三,造成軟件系統(tǒng)復(fù)雜性的另一個原因是,軟件系統(tǒng)中各元素之間的相互作用關(guān)系具有不確定性。 第四,由于軟件沒有固定的形式與堅硬的外殼,人們普遍認為軟件系統(tǒng)是軟”的,似乎可以隨意擴充和修改。 第五,規(guī)模較大的軟件系統(tǒng)的生命周期

8、一般都超過相應(yīng)硬件系統(tǒng)的生命周期。 14 控制軟件復(fù)雜性的基本方法控制軟件復(fù)雜性的基本方法 軟件的復(fù)雜性不是因為某個軟件系統(tǒng)要解決一個特定的復(fù)雜問題而偶然產(chǎn)生的,它是大型軟件系統(tǒng)的一個固有的本質(zhì)特征,軟件的開發(fā)過程必然會受到軟件復(fù)雜性的影響。 正因為軟件的復(fù)雜性是固有的,人們無法徹底消除這些復(fù)雜性,因此只能采用控制復(fù)雜性的方法,盡量減少軟件復(fù)雜性對軟件開發(fā)過程的影響,而分解、抽象、模塊化、信息隱蔽等是控制軟件復(fù)雜性的有效方法。15 面向?qū)ο蠹夹g(shù)面向?qū)ο蠹夹g(shù) 面向?qū)ο?object-oriented,OO)技術(shù)充分體現(xiàn)了分解、抽象、模塊化、信息隱蔽等思想,可以有效地提高軟件生產(chǎn)率、縮短軟件開發(fā)時

9、間、提高軟件質(zhì)量,是控制軟件復(fù)雜性的有效途徑。 與傳統(tǒng)的結(jié)構(gòu)化軟件開發(fā)方法相比,面向?qū)ο筌浖_發(fā)方法在描述和理解問題域時采用截然不同的方法。其基本思想是,對問題域進行自然分割,以更接近人類思維的方式建立問題域模型,從而使設(shè)計出的軟件盡可能直接地描述現(xiàn)實世界,具有更好的可維護性能適應(yīng)用戶需求的變化。 15 面向?qū)ο蠹夹g(shù)面向?qū)ο蠹夹g(shù) 在面向?qū)ο蠓椒ㄖ?,分析和設(shè)計階段采用一致的概念和表示法,面向?qū)ο蟮姆治龊兔嫦驅(qū)ο蟮脑O(shè)計之間不存在鴻溝,這是與結(jié)構(gòu)化分析和設(shè)計方法的一個很大區(qū)別。15 面向?qū)ο蠹夹g(shù)面向?qū)ο蠹夹g(shù) 一般認為,面向?qū)ο蠓治龊驮O(shè)計是以對象的觀點看待問題域,其解決問題的思維過程和結(jié)構(gòu)化分析及設(shè)計

10、方法在本質(zhì)上是有區(qū)別的,但早期提出的適用于結(jié)構(gòu)化分析和設(shè)計的一些概念,如高內(nèi)聚、低耦合、有意識地推遲設(shè)計決策等,同樣可適用于面向?qū)ο蠓治龊驮O(shè)計。也就是說,面向?qū)ο蠓椒ê徒Y(jié)構(gòu)化方法還是存在一定的聯(lián)系。目前學(xué)術(shù)界關(guān)于面向?qū)ο蠓椒▽Y(jié)構(gòu)化方法來說究竟是“革命性”的還是“演化性”的不同的人有不同的觀點。一般來說,認為是“演化性”的人多一些。16 面向?qū)ο箢I(lǐng)域中的基本概念面向?qū)ο箢I(lǐng)域中的基本概念 面向?qū)ο筌浖_發(fā)方法中有很多傳統(tǒng)軟件開發(fā)方法所沒有的概念和術(shù)語。這些概念和術(shù)語包括:對象、實例、類、屬性、方法、封裝、繼承、多態(tài)、消息等。161 對象和實例 對象(object)是系統(tǒng)中用來描述客觀事物的一個實

11、體,它是構(gòu)成系統(tǒng)的基本單位。一個對象由一組屬性和對這組同性進行操作的一組方法組成。 對象只描述客觀事物本質(zhì)的、與系統(tǒng)目標(biāo)有關(guān)的特征,而不考慮那些非本質(zhì)的、與系統(tǒng)目標(biāo)無關(guān)的特征。 對象之間通過消息通信。一個對象通過向另一個對象發(fā)送消息激活某一個功能。 實例(instance)這個概念和對象很類似。在UML中,會經(jīng)常遇到實例這個術(shù)語。一般來說,實例這個概念的含義更廣泛一些,它不僅僅是對類而言,其他建模元素也有實例。如類的實例就是對象,而關(guān)聯(lián)的實例就是鏈 。162 類類 類(class)是具有相同屬性和方法的一組對象的集合,它為屬于該類的全部對象提供了統(tǒng)一的抽象描述。類是靜態(tài)的,類的語義和類之間的關(guān)

12、系在程序執(zhí)行前就已經(jīng)定義好了,而對象是動態(tài)的,對象是在程序執(zhí)行時被創(chuàng)建和刪除的。163 封裝封裝 封裝(encapsu1ation)就是把對象的屬性和方法結(jié)合成獨立的系統(tǒng)單位,并盡可能地隱蔽對象的內(nèi)部細節(jié)。封裝使一個對象形成兩個部分:接口部分和實現(xiàn)部分。對于用戶來說,接口部分是可見的,而實現(xiàn)部分是不可見的。 封裝提供了兩種保護。首先封裝可以保護對象,防止用戶直接存取對象的內(nèi)部細節(jié);其次封裝也保護了客戶端,防止對象實現(xiàn)部分的變化可能產(chǎn)生的副作用,即實現(xiàn)部分的改變不會影響到相應(yīng)客戶端的改變。164 繼承繼承 利用繼承(inheritance),子類可以繼承父類的屬性或方法。類父類稱作特殊類/一般類

13、、子類超類、派生類基類等。 繼承增加了軟件重用的機會,可以降低軟件開發(fā)和維護的費用,而繼承是OO技術(shù)和非OO技術(shù)的一個很明顯的區(qū)別。所以很多人認為OO技術(shù)的目的就是為了重用,這是一個很流行的關(guān)于面向?qū)ο蠹夹g(shù)和軟件重用的誤解。確實,采用OO技術(shù)可以增加軟件重用的機會,但OO技術(shù)并不等于軟件重用技術(shù),軟件重用技術(shù)也不等于OO技術(shù) 。164 繼承繼承 兩者之間并不存在相互包含的關(guān)系,OO技術(shù)既不是重用技術(shù)的充分條件,也不是重用技術(shù)的必要條件。164 繼承繼承 利用繼承可以開發(fā)更貼近現(xiàn)實的模型,使得模型更簡潔。繼承的另一個好處是可以保證類之間的一致性,父類可以為所有子類定制規(guī)則,子類必須遵守這些規(guī)則。

14、許多面向?qū)ο蟮某绦蛟O(shè)計語言提供了這種實現(xiàn)機制,如c+中的虛函數(shù),Java中的接口等。 164 繼承繼承 在子類中可以增加或重新定義所繼承的屬性或方法,如果是重新定義,則稱為覆蓋(override)。與覆蓋很類似的一個概念是重載(overload),重載指的是一個類中有多個同名的方法,但這些方法在操作數(shù)或和操作數(shù)的類型上有區(qū)別。覆蓋和重裁是OO技術(shù)中很常見的兩個術(shù)語,也很容易混淆。 164 繼承繼承 繼承可分為單繼承和多繼承。單繼承指的是子類只從一個父類繼承,而多繼承指的是子類從多于一個的父類繼承。 165 多態(tài)多態(tài) 從字而上理解,多態(tài)(polymorphism)就是有多種形態(tài)的意思。在面向?qū)ο?/p>

15、技術(shù)中,多態(tài)指的是使一個實體在不同上下文條件下具有不同意義或用法的能力。 多態(tài)往往和覆蓋、動態(tài)綁定(dynamic binding)等概念結(jié)合在一起。多態(tài)屬于運行時的問題,而重載(overload)是編譯時的問題。 165 多態(tài)多態(tài) 如圖16所示是多態(tài)的例子。在圖16的繼承結(jié)構(gòu)中,可以聲明一個graph類型對象的變量,但在運行時,可以把circle類型或Rectangle Rectangle類型的對象賦給該變量。165 多態(tài)多態(tài) 也就是說,該變量所引用的對象在運行時會有不同的形態(tài)。如果調(diào)用draw()方法,則根據(jù)運行時該變量是引用Circle還是Rectangle,來決定調(diào)用Circle中的draw()方法還是Rectangle中的draw()方法。 多態(tài)是保證系統(tǒng)具有較好適應(yīng)性的一個重要手段,也是使用OO技術(shù)所表現(xiàn)出來的一個重要特征。166 消息

溫馨提示

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

評論

0/150

提交評論