軟件工程UML全冊(cè)配套完整課件3_第1頁
軟件工程UML全冊(cè)配套完整課件3_第2頁
軟件工程UML全冊(cè)配套完整課件3_第3頁
軟件工程UML全冊(cè)配套完整課件3_第4頁
軟件工程UML全冊(cè)配套完整課件3_第5頁
已閱讀5頁,還剩1856頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

軟件工程UML全冊(cè)配套完整課件3面向?qū)ο蠓治龊驮O(shè)計(jì)今天你OO了嗎?教材及參考書教材:刁成嘉主編《UML系統(tǒng)建模與分析設(shè)計(jì)》北京:機(jī)械工業(yè)出版社2007參考書:

[1]譚云杰《大象ThinkinginUML》(第二版)北京:中國水利水電出版社2012 [2]張龍祥《UML與系統(tǒng)分析設(shè)計(jì)》(第二版)北京:人民郵電出版社2007[3]麻志毅《面向?qū)ο笙到y(tǒng)與分析》北京:機(jī)械工業(yè)出版社2008計(jì)算機(jī)科學(xué)與技術(shù)的課程體系計(jì)算機(jī)軟件與理論計(jì)算機(jī)軟件計(jì)算機(jī)理論(離散數(shù)學(xué)、計(jì)算理論)計(jì)算機(jī)體系結(jié)構(gòu)計(jì)算機(jī)體系結(jié)構(gòu)、數(shù)字邏輯、計(jì)算機(jī)原理計(jì)算機(jī)應(yīng)用計(jì)算機(jī)網(wǎng)絡(luò)與通信、控制與接口、信息安全人工智能、圖形學(xué)、圖像處理、多媒體技術(shù)軟件課程體系與知識(shí)結(jié)構(gòu)(1/2)1、算法與數(shù)據(jù)結(jié)構(gòu)A.數(shù)據(jù)結(jié)構(gòu)B.算法分析與設(shè)計(jì)、并行計(jì)算2、操作系統(tǒng)A.操作系統(tǒng)B.分布式系統(tǒng)、網(wǎng)絡(luò)編程技術(shù)3、編譯與計(jì)算機(jī)語言A.編譯原理、高級(jí)語言程序設(shè)計(jì)(C++,JAVA,C#)(大部分同學(xué)會(huì)有一個(gè)誤區(qū),以為精通編程語言就掌握了面向?qū)ο螅〣.形式語言與自動(dòng)機(jī)、形式語義學(xué)軟件課程體系與知識(shí)結(jié)構(gòu)(2/2)4、數(shù)據(jù)庫技術(shù)A.數(shù)據(jù)庫系統(tǒng)原理(Oracle、mysql、SQL2005)B.數(shù)據(jù)倉庫、分布式數(shù)據(jù)庫5、軟件方法學(xué)A.面向?qū)ο蠓椒▽W(xué)(面向?qū)ο蠓治雠c設(shè)計(jì)、設(shè)計(jì)模式(優(yōu)化類的設(shè)計(jì)))、結(jié)構(gòu)化方法B.軟件復(fù)用技術(shù)、軟件體系結(jié)構(gòu)6、軟件工程A.軟件工程B.軟件項(xiàng)目管理、軟件質(zhì)量管理、軟件環(huán)境與工具學(xué)這門課程是干什么的?做什么?:提取對(duì)象(什么是對(duì)象,對(duì)象的特點(diǎn))如何?從具體的軟件項(xiàng)目中提取對(duì)象工具?有什么工具來描述對(duì)象。(描述對(duì)象之間的聯(lián)系)請(qǐng)注意:我的面向?qū)ο蟮木幊棠繕?biāo)從來不是復(fù)用,提供了一種解決復(fù)雜問題的一種方式。(GradyBooch)請(qǐng)思考這些項(xiàng)目設(shè)計(jì)時(shí)會(huì)碰到什么問題?學(xué)籍管理系統(tǒng)教務(wù)管理系統(tǒng)購物網(wǎng)站資產(chǎn)管理系統(tǒng)壁球管理系統(tǒng)憤怒的小鳥游戲面向?qū)ο筌浖こ谭椒∣OA(做什么)OOD(怎么做)OOP(如何實(shí)現(xiàn))UML不是OOA/D,也不是方法,它是一種圖形表示如果不掌握對(duì)象思想,那UML或任何CASE毫無用處需要一種用于OOA/D的語言,思考的工具,溝通的形式,UML就是這種工具課程目標(biāo):分析(analysis)-對(duì)問題和需求的調(diào)查研究設(shè)計(jì)(design)-滿足需求的概念上的解決方案,為實(shí)現(xiàn)服務(wù)面向?qū)ο蠓治觯╫bject-orientedanalysis)-在問題域內(nèi)發(fā)現(xiàn)和描述對(duì)象面向?qū)ο笤O(shè)計(jì)(object-orienteddesign)-如何定義軟件對(duì)象以及它們?nèi)绾螀f(xié)作以實(shí)現(xiàn)需求1.5面向?qū)ο蠓椒ǖ陌l(fā)展史及現(xiàn)狀簡(jiǎn)介面向?qū)ο蠓椒ǜ耪?.1傳統(tǒng)開發(fā)方法中存在的問題1.2面向?qū)ο蟮幕舅枷?.3面向?qū)ο蟮闹饕拍罴盎驹瓌t1.4面向?qū)ο蠓椒ǖ闹饕獌?yōu)點(diǎn)傳統(tǒng)型商務(wù)以數(shù)據(jù)為中心

在二十世紀(jì)六十年代以前

軟件系統(tǒng)都是較小且相對(duì)簡(jiǎn)單的所用的編程語言都是十分簡(jiǎn)單(Fortran,Cobol等)時(shí)興個(gè)人英雄主義,即崇尚程序員的個(gè)人技能代碼是面條式的,特別是代碼中含有GOTO語句

隨著軟件復(fù)雜性的增長,隨心所欲的方法就不再是可接受的了,因?yàn)檫@樣的代碼是很難維護(hù)的。

高層次語言的引入有助于解決一些與復(fù)雜性有關(guān)的問題,但這些語言并不能充分解決問題。

那時(shí),無開發(fā)方法而言

1.1傳統(tǒng)開發(fā)方法中存在的問題1、功能分解法(起于二十世紀(jì)七十年代)(1/4)功能分解法(functiondecomposition)

功能分解=功能+子功能+功能接口以系統(tǒng)需要提供的功能為中心來組織系統(tǒng)。首先定義各種功能,然后把功能分解為子功能,同時(shí)定義功能之間的接口。對(duì)較大的子功能進(jìn)一步分解,直到可給出明確的定義。根據(jù)功能/子功能的需要設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)和算法。功能

功能

功能

系統(tǒng)

子功能子功能子功能子功能分解分解分解……………………工作過程:一層層地進(jìn)行功能分解功能模塊功能模塊功能模塊功能模塊功能模塊功能模塊功能模塊功能模塊功能模塊功能模塊得到的系統(tǒng)模型:由模塊及其接口構(gòu)成1、功能分解法(起于二十世紀(jì)七十年代)(2/4)優(yōu)點(diǎn):當(dāng)時(shí)的計(jì)算機(jī)應(yīng)用還不是很普及,只是特定的用戶按自己的需要,對(duì)軟件系統(tǒng)做出了功能性的要求,有據(jù)可尋。在相當(dāng)大的程度上,解決了以前存在的問題。特別是與模塊化編程結(jié)合使用,效率更高。刪除GOTO語句,使得軟件能得到有效的維護(hù)。與模塊化編程相結(jié)合,使得軟件能得到有效的維護(hù)直接地反映用戶的需求,所以工作很容易開始。1、功能分解法(起于二十世紀(jì)七十年代)(3/4)缺點(diǎn):開頭容易,結(jié)束難。結(jié)構(gòu)化分析和設(shè)計(jì)注重處理功能,對(duì)所處理的數(shù)據(jù)放于次要的位置。對(duì)需求變化的適應(yīng)能力很差。局部的錯(cuò)誤和局部的修改很容易產(chǎn)生全局性的影響。不能直接地映射問題域,很難檢驗(yàn)分析結(jié)果的正確性。1、功能分解法(起于二十世紀(jì)七十年代)(4/4)

數(shù)據(jù)流法=數(shù)據(jù)流+數(shù)據(jù)處理(加工)+數(shù)據(jù)存儲(chǔ)+端點(diǎn)+處理說明+數(shù)據(jù)字典又稱作結(jié)構(gòu)化分析。基本策略是跟蹤數(shù)據(jù)流,即研究問題域中數(shù)據(jù)如何流動(dòng)以及在各個(gè)環(huán)節(jié)上進(jìn)行何種處理,從而發(fā)現(xiàn)數(shù)據(jù)流和加工。問題域被映射為數(shù)據(jù)流圖(DFD),并用處理說明和數(shù)據(jù)字典進(jìn)行詳細(xì)說明。數(shù)據(jù)流加工數(shù)據(jù)存儲(chǔ)端點(diǎn)處理說明————————————————————————數(shù)據(jù)詞典————————————————————————2、數(shù)據(jù)流法(結(jié)構(gòu)化分析法)(1/2)數(shù)據(jù)流圖的圖形記號(hào)外部實(shí)體位于軟件系統(tǒng)邊界之外的信息生產(chǎn)者或消費(fèi)者轉(zhuǎn)換轉(zhuǎn)換數(shù)據(jù)流的處理過程,又稱泡(bubble)數(shù)據(jù)源數(shù)據(jù)流為一個(gè)或多個(gè)轉(zhuǎn)換提供數(shù)據(jù)源或數(shù)據(jù)存儲(chǔ)服務(wù)的緩沖區(qū)、文件或數(shù)據(jù)庫在轉(zhuǎn)換之間有向流動(dòng)的數(shù)據(jù)項(xiàng)或數(shù)據(jù)項(xiàng)集合

“與”,即同時(shí)輸入/出;

+“或”,即至少一項(xiàng)輸入/出;⊕“異或”,即非同時(shí)輸入/出*“家庭保安系統(tǒng)”頂級(jí)數(shù)據(jù)流圖警報(bào)類別顯示信息電話撥號(hào)音頻傳感數(shù)據(jù)用戶命令家庭保安系統(tǒng)控制面板傳感器顯示器電話機(jī)警報(bào)器“家庭保安系統(tǒng)”1級(jí)數(shù)據(jù)流圖警報(bào)類別電話撥號(hào)音頻傳感信息配置數(shù)據(jù)傳感數(shù)據(jù)配置數(shù)據(jù)原口令口令有效/口令無效口令配置數(shù)據(jù)配置命令顯示信息啟動(dòng)/停止時(shí)的顯示信息口令有效啟動(dòng)/停止命令用戶命令配置信息控制面板用戶命令處理系統(tǒng)配置口令核對(duì)信息顯示啟動(dòng)/停止處理顯示面板傳感器監(jiān)測(cè)傳感器警報(bào)器電話機(jī)數(shù)據(jù)字典舉例家庭保安系統(tǒng)中的“電話號(hào)碼”數(shù)據(jù)條目可以定義如下:<電話號(hào)碼>=<分機(jī)號(hào)>|<外線號(hào)碼><分機(jī)號(hào)>=1816|1817|…|1858<外線號(hào)碼>=9+(<市話號(hào)碼>|<長話號(hào)碼>)<長話號(hào)碼>=0+(<區(qū)號(hào)>+<市話號(hào)碼>)<區(qū)號(hào)>=*任何長度為3的數(shù)字串*<市話號(hào)碼>=<局號(hào)>+<分局號(hào)><局號(hào)>=395|396|397|303|304|305<分局號(hào)>=*任何長度為4的數(shù)字串*業(yè)務(wù)模型數(shù)據(jù)流加工數(shù)據(jù)存儲(chǔ)端點(diǎn)處理說明數(shù)據(jù)字典跟蹤數(shù)據(jù)流,從而發(fā)現(xiàn)數(shù)據(jù)流和加工。優(yōu)點(diǎn):有嚴(yán)格的法則,逐步求精,較強(qiáng)調(diào)研究問題域。缺點(diǎn):在概念上,不能直接地映射到問題域中的事物對(duì)需求變化的適應(yīng)能力較弱。大系統(tǒng)數(shù)據(jù)流和加工的數(shù)量太多,引起分析文檔的膨脹。系統(tǒng)復(fù)雜時(shí),難以檢驗(yàn)分析的正確性。分析與設(shè)計(jì)的概念和表示法不一致,其轉(zhuǎn)換規(guī)則也不嚴(yán)格。容易導(dǎo)致模塊的低內(nèi)聚和模塊間的高耦合,從而使得系統(tǒng)缺乏靈活性和可維護(hù)性。2、數(shù)據(jù)流法(結(jié)構(gòu)化分析法)(2/2)信息建模法(informationmodeling)信息建模=實(shí)體(對(duì)象)+屬性+關(guān)系+父類型/子類型+關(guān)聯(lián)對(duì)象由實(shí)體-聯(lián)系法(E-R方法)發(fā)展而來。與數(shù)據(jù)庫設(shè)計(jì)有很深的淵源。核心概念是實(shí)體和聯(lián)系:實(shí)體描述問題域的事物,含有屬性;聯(lián)系描述事物之間在數(shù)據(jù)方面的關(guān)系,也可以帶有屬性3、信息建模方法(1/2)發(fā)展之后的方法也把實(shí)體稱作對(duì)象,并使用了類型和子類型的概念,作為實(shí)體(對(duì)象)的抽象描述。實(shí)體-關(guān)系圖實(shí)體-關(guān)系(Entity-Relation)圖簡(jiǎn)稱E-R圖,是表示數(shù)據(jù)對(duì)象及其之間關(guān)系的圖形語言機(jī)制。數(shù)據(jù)對(duì)象(實(shí)體)用長方形、關(guān)系用菱形、屬性用橢圓表示。數(shù)據(jù)對(duì)象之間數(shù)量上的對(duì)應(yīng)關(guān)系的表示如下圖所示:0:11:10:多1:多為了便于區(qū)分,在E-R模型中的實(shí)體、關(guān)系和屬性都應(yīng)在對(duì)應(yīng)的框中寫上各自的名字。實(shí)體-關(guān)系圖實(shí)體-關(guān)系圖實(shí)例制造商生產(chǎn)經(jīng)銷商汽車經(jīng)銷存儲(chǔ)標(biāo)識(shí)碼顏色型號(hào)制造商車體類型買主例如,在教學(xué)管理中,學(xué)校開設(shè)若干門課程,一個(gè)教師可以教授其中的一門或多門課程,每位學(xué)生也需要學(xué)習(xí)其中的幾門課程。因此,教學(xué)管理中涉及的對(duì)象(實(shí)體型)有學(xué)生、教師和課程。用E-R圖描述它們之間的聯(lián)系,如圖所示。其中,學(xué)生與課程是多對(duì)多的聯(lián)系,而教師與課程的聯(lián)系是一對(duì)多。

教學(xué)管理E-R圖1NNM業(yè)務(wù)模型實(shí)體(對(duì)象)屬性聯(lián)系父類型/子類型關(guān)聯(lián)對(duì)象

強(qiáng)調(diào)對(duì)信息實(shí)體建模,而不是對(duì)象建模。對(duì)象只有屬性,而無操作。父類與子類之間也只有屬性繼承。沒采用消息通訊。3、信息建模方法(2/2)它是基于現(xiàn)實(shí)的行為視圖,狀態(tài)是這類系統(tǒng)的構(gòu)造塊,并且所操作的數(shù)據(jù)是獨(dú)立于狀態(tài)的。

基于系統(tǒng)狀態(tài)的處理。這一方法沒有說到數(shù)據(jù)管理。

4、有限狀態(tài)機(jī)方法計(jì)算機(jī)是執(zhí)行一套規(guī)則的推理機(jī)(if—then語句)?;谌斯ぶ悄芟到y(tǒng)基于規(guī)則的系統(tǒng)并沒有幫助我們處理數(shù)據(jù),也不支持過程概念如prolog,list語言

??????5、基于規(guī)則的系統(tǒng)總結(jié)

上述方法都僅基于一個(gè)角度看待系統(tǒng),對(duì)系統(tǒng)的其它視圖建模方面的能力都很弱。但對(duì)OO產(chǎn)生都做出了一定的貢獻(xiàn).

隨需應(yīng)變的商務(wù)為了克服早期的方法的不足,這時(shí)人們已經(jīng)開始考慮使用面向?qū)ο蠓椒▉黹_發(fā)系統(tǒng)。較為完善面向?qū)ο蟮姆治龊驮O(shè)計(jì)方法出現(xiàn)在八十年代中后期。早期的方法只使用一種系統(tǒng)的視角作為構(gòu)造塊,而沒有容納其他視角。功能分解法集中于將功能作為系統(tǒng)的構(gòu)造塊在數(shù)據(jù)分析方法中(實(shí)體聯(lián)系模型)構(gòu)造塊是實(shí)體,但在該方法中用來滿足系統(tǒng)需求的功能被完全忽略掉了。兩種方法都沒有處理對(duì)動(dòng)態(tài)行為的捕獲,聲明性語義(規(guī)則)以及例外處理機(jī)制都被完全忽略了。

1.2面向?qū)ο蟮幕舅枷?/p>

(1/11)面向?qū)ο蠓椒ǖ慕鉀Q問題的思路是從現(xiàn)實(shí)世界中的客觀對(duì)象(如人和事物)入手,盡量運(yùn)用人類的自然思維方式來構(gòu)造軟件系統(tǒng),這與傳統(tǒng)的結(jié)構(gòu)化方法從功能入手和信息工程化方法從信息入手是不一樣的。在面向?qū)ο蠓椒ㄖ?,把一切都看成是?duì)象。1.2面向?qū)ο蟮幕舅枷?/p>

(2/11)例題:編寫一個(gè)開發(fā)票程序,需要對(duì)發(fā)票的名細(xì)欄進(jìn)行計(jì)算。編號(hào)名稱規(guī)格單位數(shù)量單價(jià)金額合計(jì)非面向?qū)ο笏悸罚?定義數(shù)據(jù)結(jié)構(gòu) 定義函數(shù)面向?qū)ο笏悸罚簩?duì)象一組屬性操作:發(fā)票總計(jì)

……一切都是對(duì)象1.2面向?qū)ο蟮幕舅枷?/p>

(3/11)對(duì)象組裝從程序設(shè)計(jì)方法的角度看,面向?qū)ο笫且环N新的程序設(shè)計(jì)范型(paradigm),其基本思想是使用對(duì)象、類、繼承、封裝、聚合、關(guān)聯(lián)、消息、多態(tài)性等基本概念來進(jìn)行程序設(shè)計(jì).自八十年代以來,面向?qū)ο蠓椒ㄒ焉钊氲接?jì)算機(jī)軟件領(lǐng)域的幾乎所有分支。它不僅是一些具體的軟件開發(fā)技術(shù)與策略,而且是一整套關(guān)于如何看待軟件系統(tǒng)與現(xiàn)實(shí)世界的關(guān)系,用什么觀點(diǎn)來研究問題并進(jìn)行問題求解,以及如何進(jìn)行系統(tǒng)構(gòu)造的軟件方法學(xué)。從這個(gè)意義上講:面向?qū)ο蠓椒ㄊ且环N運(yùn)用對(duì)象、類、繼承、封裝、聚合、關(guān)聯(lián)、消息、多態(tài)性等概念來構(gòu)造系統(tǒng)的軟件開發(fā)方法。什么是面向?qū)ο?.2面向?qū)ο蟮幕舅枷?/p>

(4/11)(1)從現(xiàn)實(shí)世界中客觀存在的事物出發(fā)來建立軟件系統(tǒng),強(qiáng)調(diào)直接以問題域(現(xiàn)實(shí)世界)中的事物為中心來思考問題、認(rèn)識(shí)問題,并根據(jù)這些事物的本質(zhì)特征,把它們抽象地表示為系統(tǒng)中的對(duì)象,作為系統(tǒng)的基本構(gòu)成單位。這可以使系統(tǒng)直接映射問題域,保持問題域中事物及其相互關(guān)系的本來面貌(對(duì)象)1.2面向?qū)ο蟮幕舅枷?/p>

(5/11)(2)用對(duì)象的屬性表示事物的性質(zhì);用對(duì)象的操作表示事物的行為。(屬性與操作)(3)對(duì)象的屬性與操作結(jié)合為一體,成為一個(gè)獨(dú)立的、不可分的實(shí)體,對(duì)外屏蔽其內(nèi)部細(xì)節(jié)。(對(duì)象的封裝)1.2面向?qū)ο蟮幕舅枷?/p>

(6/11)(4)對(duì)事物進(jìn)行分類。把具有相同屬性和相同操作的對(duì)象歸為一類,類是這些對(duì)象的抽象描述,每個(gè)對(duì)象是它的類的一個(gè)實(shí)例.(分類)(5)復(fù)雜的對(duì)象可以用簡(jiǎn)單的對(duì)象作為其構(gòu)成部分.(聚合)(6)通過在不同程度上運(yùn)用抽象的原則,可以得到較一般的類和較特殊的類。特殊類繼承一般類的屬性與操作,從而簡(jiǎn)化系統(tǒng)的構(gòu)造過程及其文檔.(繼承)1.2面向?qū)ο蟮幕舅枷?/p>

(7/11)(7)類具有封閉性,把內(nèi)部的屬性和操作隱藏起來,只有公共的操作對(duì)外是可見的.(類的封閉性)(8)

對(duì)象之間通過消息進(jìn)行通訊,以實(shí)現(xiàn)對(duì)象之間的動(dòng)態(tài)聯(lián)系.(消息)(9)通過關(guān)聯(lián)表達(dá)類(一組對(duì)象)之間的靜態(tài)關(guān)系.(關(guān)聯(lián))1.2面向?qū)ο蟮幕舅枷?/p>

(8/11)客觀世界對(duì)象對(duì)象對(duì)象對(duì)象對(duì)象對(duì)象對(duì)象對(duì)象對(duì)象對(duì)象對(duì)象名屬性…操作…類類類類分類類繼承類類對(duì)象聚合抽象客觀事物及其間的聯(lián)系關(guān)聯(lián)用況圖類圖順序圖狀態(tài)圖活動(dòng)圖構(gòu)件圖OO模型對(duì)象對(duì)象對(duì)象對(duì)象對(duì)象對(duì)象對(duì)象對(duì)象計(jì)算機(jī)內(nèi)的對(duì)象編程構(gòu)成封裝運(yùn)行分析設(shè)計(jì)………………充分運(yùn)用人類日常的思維方法強(qiáng)調(diào)運(yùn)用人類在日常的邏輯思維中經(jīng)常采用的思想方法與原則,例如抽象、分類、繼承、聚合、封裝、關(guān)聯(lián)等等。這使得軟件開發(fā)者能更有效地思考問題,并以其他人也能看得懂的方式把自己的認(rèn)識(shí)表達(dá)出來。1.2面向?qū)ο蟮幕舅枷?/p>

(10/11)用類和對(duì)象作為系統(tǒng)的基本構(gòu)成單位。對(duì)象對(duì)應(yīng)問題域中的事物,其屬性與操作刻畫了事物的性質(zhì)和行為,它們之間的繼承關(guān)系、聚合關(guān)系、消息和關(guān)聯(lián)如實(shí)地表達(dá)了問題域中事物之間實(shí)際存在的各種關(guān)系。因此,無論系統(tǒng)的構(gòu)成成分,還是通過這些成分之間的關(guān)系而體現(xiàn)的系統(tǒng)結(jié)構(gòu),都可直接地映射問題域。樹立觀點(diǎn):面向?qū)ο蟮姆椒ㄅc面向過程的方法根本不同在于:就是不再把世界看成一個(gè)緊密關(guān)聯(lián)的系統(tǒng),而是看成一些獨(dú)立的離散的小零件,這個(gè)世界通過某些規(guī)則組織起來的,完成一個(gè)特定功能。1.2面向?qū)ο蟮幕舅枷?/p>

(11/11)總結(jié):面向?qū)ο笾械闹饕拍睿簩?duì)象、屬性、操作、類、繼承、聚合、關(guān)聯(lián)、永久對(duì)象,對(duì)象還分為主動(dòng)對(duì)象和消息,泛化分為有多態(tài)性和無多態(tài)性的。面向?qū)ο笾械幕驹瓌t:信息隱蔽或封裝、消息傳遞、后期連接、委托、類/對(duì)象和關(guān)系等。1.3面向?qū)ο笾械闹饕拍罴盎驹瓌t對(duì)象標(biāo)識(shí)就是對(duì)象的名字,有“外部標(biāo)識(shí)”和“內(nèi)部標(biāo)識(shí)”之分。對(duì)象是現(xiàn)實(shí)世界中某個(gè)實(shí)際存在的事物,它可以是有形的(比如一輛汽車),也可以是無形的(比如一項(xiàng)計(jì)劃)。對(duì)象是構(gòu)成世界的一個(gè)獨(dú)立單位。它具有自己的靜態(tài)特征和動(dòng)態(tài)特征。對(duì)象是系統(tǒng)中用來描述客觀事物的一個(gè)實(shí)體,它是構(gòu)成系統(tǒng)的一個(gè)基本單位。一個(gè)對(duì)象由一組屬性和對(duì)這組屬性進(jìn)行操作的一組操作構(gòu)成。對(duì)象屬性操作對(duì)象標(biāo)識(shí)屬性是用來描述對(duì)象性質(zhì)的一個(gè)數(shù)據(jù)項(xiàng)。操作是用來描述對(duì)象行為的一個(gè)動(dòng)作序列。對(duì)象,屬性,操作,對(duì)象標(biāo)識(shí)抽象1.3.1面向?qū)ο笾械闹饕拍?1/9)類,一般類,特殊類,抽象(2/9)抽象與分類:抽象(化)忽略事物的非本質(zhì)特征,只注意那些與當(dāng)前目標(biāo)有關(guān)的本質(zhì)特征,從而找出事物的共性。把具有共同性質(zhì)的事物劃分為一類,得出一個(gè)抽象的概念,叫做分類。類是具有相同屬性和操作的一組對(duì)象的集合,它為屬于該類的全部對(duì)象提供了統(tǒng)一的抽象描述,其內(nèi)部包括屬性和操作兩個(gè)主要部分。類的作用是用來創(chuàng)建對(duì)象,對(duì)象是類的一個(gè)實(shí)例。不同程度的抽象可得到不同層次的分類較多地忽略事物之間的差別得到較一般的類較多地注意事物之間的差別得到較特殊的類運(yùn)輸工具火車汽車飛機(jī)卡車轎車輪船車輛繼承:特殊類擁有其一般類的全部屬性與操作,稱作特殊類對(duì)一般類的繼承。繼承意味著自動(dòng)地?fù)碛?,或隱含地復(fù)制子類從父類中繼承屬性和操作,根據(jù)需要添加自己的屬性和方法。繼承簡(jiǎn)化了人們對(duì)事物的認(rèn)識(shí)和描述,非常有益于軟件復(fù)用,是OO技術(shù)提高軟件開發(fā)效率的重要原因之一。公司人員姓名身份證號(hào)碼股東股份

············職員工資··················例:由繼承機(jī)制保證一般類與特殊類之間的關(guān)系叫泛化關(guān)系(繼承關(guān)系),簡(jiǎn)稱泛化。繼承關(guān)系的語義:“isakindof”繼承(3/9)多繼承:允許一個(gè)特殊類具有一個(gè)以上一般類的繼承模式稱作多繼承多繼承特殊類的內(nèi)部情況在職研究生姓名······學(xué)號(hào)班級(jí)專業(yè)······職稱專業(yè)······在職單位············來自“人員”類來自“研究生”類來自“教職工”類本類中顯示定義例:人員姓名······教職工職稱專業(yè)······研究生學(xué)號(hào)班級(jí)專業(yè)······在職研究生在職單位

······(4/9)對(duì)象通過它對(duì)外提供的操作在系統(tǒng)中發(fā)揮作用。當(dāng)系統(tǒng)中的其他對(duì)象或其他系統(tǒng)成分(在不要求完全對(duì)象化的語言中,允許有不屬于任何對(duì)象的成分,例如C++程序中的main函數(shù)),請(qǐng)求這個(gè)對(duì)象執(zhí)行某個(gè)操作時(shí),該對(duì)象就響應(yīng)這個(gè)請(qǐng)求,完成該操作。在OO方法中,把向?qū)ο蟀l(fā)出的操作請(qǐng)求稱為消息.

目前在大部分面向?qū)ο蟮木幊陶Z言中,消息其實(shí)就是函數(shù)(或過程)調(diào)用。但是,函數(shù)調(diào)用只是實(shí)現(xiàn)消息的方式之一,上述理解只適合于順序系統(tǒng)。

例子:顧客買報(bào)紙消息(5/9)聚合:一個(gè)(較復(fù)雜的)對(duì)象由其他若干(較簡(jiǎn)單的)對(duì)象作為其構(gòu)成部分,稱較復(fù)雜的對(duì)象為組合,稱較簡(jiǎn)單的對(duì)象為成分,稱這種關(guān)系為聚合。這種關(guān)系的語義是“hasa”或“isapartof”聚合刻畫了現(xiàn)實(shí)事物之間的構(gòu)成關(guān)系兩種方式:(前一種方式又稱組合)部分對(duì)象部分對(duì)象整體對(duì)象嵌套對(duì)象整體對(duì)象部分對(duì)象部分對(duì)象整體對(duì)象對(duì)象指針或?qū)ο髽?biāo)識(shí)描述緊密、固定的關(guān)系,例如汽車與發(fā)動(dòng)機(jī)描述松散、靈活的關(guān)系,例如公司與法律顧問(6/9)例:汽車發(fā)動(dòng)機(jī)14..60….10..1車輪公司0..*0..*法律顧問組合關(guān)系聚合關(guān)系聚合(7/9)關(guān)聯(lián):類之間的靜態(tài)聯(lián)系稱作關(guān)聯(lián)。在實(shí)例化后,由類產(chǎn)生對(duì)象,由關(guān)聯(lián)產(chǎn)生連接對(duì)象的鏈。鏈?zhǔn)顷P(guān)聯(lián)的實(shí)例。關(guān)聯(lián)的表示符號(hào)也稱作實(shí)例連接城市0..*0..*有航線城市之間有航線教師學(xué)生0..*1指導(dǎo)論文教師為學(xué)生指導(dǎo)論文例:(8/9)其他:永久對(duì)象:可以在程序運(yùn)行后繼續(xù)保存的對(duì)象時(shí)間空間意義實(shí)現(xiàn)途徑:語言,OO-DBMS主動(dòng)對(duì)象:表示進(jìn)程或線程的對(duì)象。描述具有主動(dòng)行為的事物描述并發(fā)執(zhí)行的任務(wù)(9/9)(1)抽象

從事物中舍棄個(gè)別的非本質(zhì)的特征,而抽取共同的、本質(zhì)特征的做法叫抽象。例如,一個(gè)現(xiàn)實(shí)事物,可能擔(dān)任很多角色,只有與問題域有關(guān)的角色,才予以考慮。在不同的高度看待或解決問題。

OO中的應(yīng)用:過程抽象:任何一個(gè)完成確定功能的操作序列,其使用者都可把它看作一個(gè)單一的實(shí)體,盡管實(shí)際上它可能是由一系列更低級(jí)的操作完成的。 數(shù)據(jù)抽象:根據(jù)施加于數(shù)據(jù)之上的操作來定義數(shù)據(jù)類型,并限定數(shù)據(jù)的值只能由這些操作來修改和觀察??陀^事物->對(duì)象->類->一般類不同開發(fā)階段需要進(jìn)行不同程度的抽象便于實(shí)現(xiàn)模塊的可替換性

1.3.2面向?qū)ο笾械幕驹瓌t(1/14)(2)封裝:把對(duì)象的屬性和操作結(jié)合成一個(gè)獨(dú)立的系統(tǒng)單位,并盡可能隱蔽對(duì)象的內(nèi)部細(xì)節(jié)。只是向外部提供接口,降低了對(duì)象間的耦合度。售報(bào)亭屬性服務(wù)報(bào)刊A報(bào)刊B…錢箱報(bào)刊零售款貨清點(diǎn)顧客由封裝機(jī)制保證:數(shù)據(jù)不能被對(duì)象的使用者直接訪問。只允許通過由對(duì)象提供的方法或代碼訪問數(shù)據(jù)。1.3.2面向?qū)ο笾械幕驹瓌t(2/14)封裝的重要意義:使對(duì)象能夠集中而完整地描述并對(duì)應(yīng)一個(gè)具體事物。體現(xiàn)了事物的相對(duì)獨(dú)立性,使對(duì)象外部不能隨意存取對(duì)象的內(nèi)部數(shù)據(jù),避免了外部錯(cuò)誤對(duì)它的“交插感染”。對(duì)象的內(nèi)部的修改對(duì)外部的影響很小,減少了修改引起的“波動(dòng)效應(yīng)”。公開靜態(tài)的、不變的操作,而把動(dòng)態(tài)的、易變的操作隱藏起來。封裝帶來的問題:編程的麻煩執(zhí)行效率的損失解決辦法:不強(qiáng)調(diào)嚴(yán)格封裝,實(shí)行可見性控制。(混合型OOPL)例如:C++1.3.2面向?qū)ο笾械幕驹瓌t(3/14)信息隱蔽對(duì)象的操作定義了其他的對(duì)象怎樣獲得對(duì)其的訪問。每一個(gè)對(duì)象都將提供給所有對(duì)象的公共操作公開化。它也提供僅局限于特定對(duì)象的其它的操作(受保護(hù)的和私有的)。其他的對(duì)象對(duì)被請(qǐng)求的對(duì)象怎樣提供操作(代碼,內(nèi)部數(shù)據(jù))沒有感知。操作操作操作操作

……

屬性集(4/14)(3)委托

借助消息傳遞,工作可從一個(gè)對(duì)象(客戶)傳遞到另一個(gè)對(duì)象(代理),因?yàn)閺目蛻舻挠^點(diǎn),代理具有客戶所需要的操作。工作連續(xù)地傳遞,直到到達(dá)了既有數(shù)據(jù)又有方法(代碼)能完成這項(xiàng)工作的對(duì)象。

例如:建造一所辦公樓董事會(huì)->總經(jīng)理->建筑公司注意:委托是執(zhí)行任務(wù)的權(quán)利,而不是責(zé)任。(5/14)(4)分類把具有共同性質(zhì)的事物劃分為一類,得出一個(gè)抽象的概念。分類幫助我們組織我們所生活的復(fù)雜世界。我們可以對(duì)在一個(gè)特殊分類中的對(duì)象做一些假設(shè)。如果一個(gè)對(duì)象是分類(類)的一個(gè)實(shí)例,它將符合該分類的總體模式。分類:對(duì)象->類->一般類類/對(duì)象所有的對(duì)象都是類的實(shí)例。實(shí)例能夠在運(yùn)行時(shí)被產(chǎn)生(初始化)或銷毀(刪除)。對(duì)象怎樣提供操作,由該對(duì)象為其實(shí)例的類所決定。這樣,同一個(gè)類的所有對(duì)象在響應(yīng)特定的操作請(qǐng)求(功能調(diào)用)時(shí)使用相同的方法。

(6/14)(5)泛化(繼承)無多態(tài)性的泛化.類可以由層次繼承結(jié)構(gòu)所組織。在該結(jié)構(gòu)中,子類將從位于層次結(jié)構(gòu)高層的父類中繼承屬性、操作和關(guān)系。

抽象的父類是指僅用來定義子類的超類。這樣,抽象類就沒有直接的實(shí)例。有多態(tài)的泛化.可以使用層次繼承結(jié)構(gòu)組織類,子類可以繼承位于層次結(jié)構(gòu)的高層的父類的屬性、操作和關(guān)系。然而,子類可以定義它自己的操作來代替其任何超類的同名操作。(7/14)多態(tài)是指同一個(gè)命名可具有不同的語義。OO方法中,常指在一般類中定義的屬性或操作被特殊類繼承之后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。用途:把具有共同基類的對(duì)象組成一組,并對(duì)它們進(jìn)行一致的處理。 例如,多邊形下的三角形、長方形、正多邊形。

多態(tài)(8/14)多態(tài):多邊形邊數(shù)頂點(diǎn)數(shù)據(jù)繪圖XY軸向矩形x邊數(shù)*頂點(diǎn)數(shù)據(jù)*繪圖正多邊形*頂點(diǎn)數(shù)據(jù)*繪圖例:(9/14)(6)消息通信

即要求對(duì)象之間只能通過消息進(jìn)行通訊。消息傳遞機(jī)制與函數(shù)調(diào)用機(jī)制的區(qū)別

第一,在消息傳遞機(jī)制中,每一個(gè)消息被發(fā)送給指定的接收者(對(duì)象)。在命令式編程范型中,函數(shù)調(diào)用機(jī)制沒有指定的接收者。第二,消息的解釋(用來完成操作請(qǐng)求的方法或操作/代碼集)依賴接收者,并且因接收者的不同而異。第三,在面向?qū)ο蟮姆缎椭?,通常在運(yùn)行時(shí)才能知道給定消息的特定的接收者。(10/14)(7)行為分析

行為分析是我們用來考察一個(gè)對(duì)象(類)是怎樣提供它的操作的過程。

從分析的視點(diǎn),有兩種類型的行為:靜態(tài)的動(dòng)態(tài)的(11/14)靜態(tài)行為在靜態(tài)行為中,實(shí)現(xiàn)操作的代碼不被任何外部或內(nèi)部的事件(動(dòng)作)所影響。示例:一個(gè)類中有一個(gè)“求平方根”的操作。如果對(duì)數(shù)碼4執(zhí)行“求平方根”操作,其結(jié)果總會(huì)是2。沒有外部的或內(nèi)部的動(dòng)作能夠引起該類的代碼改變計(jì)算平方根的結(jié)果。實(shí)際上,只要我們使用命令式編程(如用C編程)是容易做到這一點(diǎn)的。

(12/14)動(dòng)態(tài)行為

在行為中發(fā)生這些變化的原因可能是由于對(duì)象存在很多不同的狀態(tài)。隨后,對(duì)象根據(jù)它的狀態(tài)做出反映。使用命令式編程技術(shù)不能很好地處理這種類型的行為。使用另外的一種稱為有限狀態(tài)機(jī)的機(jī)制會(huì)更好地捕獲這樣的方法。

例子:航班訂票系統(tǒng)中的訂票過程 對(duì)象“機(jī)票”的狀態(tài):預(yù)定、等待、確認(rèn)、取消、使用、歸檔

系統(tǒng)中的對(duì)象是相互協(xié)作的,通過發(fā)消息共同完成某項(xiàng)功能。這種協(xié)作的交互性,可以用交互圖來進(jìn)行描述。有很多系統(tǒng)具有并發(fā)行為。從事物的并發(fā)行為的起因上看,每個(gè)并發(fā)行為都是主動(dòng)發(fā)生的。(13/14)(8)復(fù)雜性控制(14/14)

引入包(package)的概念,使模型具有大小不同的粒度層次,以利于控制復(fù)雜性。

如把分析和設(shè)計(jì)階段的模型分別用包進(jìn)行組織。從認(rèn)識(shí)論角度和軟件工程方法的角度看一下面向?qū)ο蠓椒◣淼暮锰帲痪唧w地描述面向?qū)ο蠓椒ǖ奶攸c(diǎn)。

1.4面向?qū)ο蠓椒ǖ奶攸c(diǎn)(1/11)對(duì)問題域的認(rèn)識(shí)(人)客觀世界(問題域)計(jì)算機(jī)自然語言語言的鴻溝編程語言語言的過渡(人)編程(人)程序的理解和執(zhí)行(機(jī)器)軟件開發(fā):從問題域出發(fā),對(duì)事物進(jìn)行認(rèn)識(shí)和描述問題——語言的鴻溝1、從認(rèn)識(shí)論的角度可以看出,面向?qū)ο蠓椒ǜ淖兞巳藗冋J(rèn)識(shí)世界的方式(2/11)計(jì)算機(jī)機(jī)器語言自然語言客觀世界(問題域)語言的鴻溝2、語言的發(fā)展——鴻溝變窄面向?qū)ο蟮恼Z言非OO的高級(jí)語言匯編語言程序的指令、數(shù)據(jù)、地址,都是由二進(jìn)制的“0”和“1”構(gòu)成的。離機(jī)器最近,能夠直接地執(zhí)行,然而沒有絲毫形象的意義,離人類的思維最遠(yuǎn)。以易理解的符號(hào)表示指令、數(shù)據(jù)以及寄存器、地址等物理概念。稍稍適合人類的形象思維,但仍然相差很遠(yuǎn)。因?yàn)槌橄髮哟翁?,仍需考慮大量的機(jī)器細(xì)節(jié)。高級(jí)語言隱蔽了機(jī)器細(xì)節(jié),使用有形象意義的數(shù)據(jù)命名和表達(dá)式,可以聯(lián)系到程序所描述的具體事物。特別是結(jié)構(gòu)化編程語言更便于體現(xiàn)客觀事物的結(jié)構(gòu)和邏輯涵義,與人類的自然語言更接近,但仍有不少差距。能比較直接地反映客觀世界的本來面目,并使軟件開發(fā)人員能夠運(yùn)用人類認(rèn)識(shí)事物所采用的一般思維方法來進(jìn)行軟件開發(fā)。(3/11)問題域測(cè)試編程計(jì)算機(jī)編程語言自然語言需求分析總體設(shè)計(jì)詳細(xì)設(shè)計(jì)3、面向?qū)ο蠓椒ㄊ沟脧膯栴}域到計(jì)算機(jī)間的鴻溝變窄

(4/11)分析與設(shè)計(jì)的鴻溝分析與設(shè)計(jì)概念及表示法的不一致軟件工程學(xué)的作用—結(jié)構(gòu)化的軟件工程方法問題域OOA計(jì)算機(jī)自然語言面向?qū)ο蟮木幊陶Z言O(shè)ODOOPOOT軟件工程學(xué)的作用——面向?qū)ο蟮能浖こ谭椒?5/11)面向?qū)ο蟪绦蛟O(shè)計(jì)把數(shù)據(jù)和處理數(shù)據(jù)的過程作為一個(gè)整體,即對(duì)象。算法+數(shù)據(jù)結(jié)構(gòu)算法+數(shù)據(jù)結(jié)構(gòu)算法+數(shù)據(jù)結(jié)構(gòu)算法+數(shù)據(jù)結(jié)構(gòu)對(duì)象算法+數(shù)據(jù)結(jié)構(gòu)對(duì)象對(duì)象對(duì)象對(duì)象關(guān)系程序=<對(duì)象,關(guān)系>對(duì)象=(算法)+(數(shù)據(jù)結(jié)構(gòu))4、面向?qū)ο蠓椒ㄓ兄谲浖木S護(hù)與復(fù)用

(6/11)結(jié)構(gòu)化程序設(shè)計(jì)程序=<關(guān)系,算法,數(shù)據(jù)結(jié)構(gòu)>數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)算法算法算法關(guān)系(7/11)

結(jié)構(gòu)化方法:從算法的角度進(jìn)行建模,所有的軟件都用過程或函數(shù)作為其主要構(gòu)造塊。人們把大量精力都集中在控制流程和大算法的分解上。這種建模的缺點(diǎn)是模型脆弱。需求變動(dòng)、維護(hù)困難。面向?qū)ο蠓椒ǎ阂员姸嗟念惣敖换ツJ剑愰g的協(xié)同工作)為中心。著重于數(shù)據(jù)的信息建模方法:以實(shí)體-關(guān)系模型為中心,該模型的行為放入觸發(fā)器和存儲(chǔ)過程中。幾種開發(fā)方法的特點(diǎn)(8/11)

對(duì)于一個(gè)給定的應(yīng)用系統(tǒng)和開發(fā)方法,上述的任何一種方法可能都是正確的。只是代價(jià)和受益是不同的。(1)把易變的數(shù)據(jù)結(jié)構(gòu)和部分功能封裝在對(duì)象內(nèi)并加以隱藏,

一是保證了對(duì)象行為的可靠性;二是對(duì)它們的修改并不會(huì)影響其他的對(duì)象,有利于維護(hù),對(duì)需求變化有較強(qiáng)的適應(yīng)性。(2)封裝性和繼承性有利于復(fù)用對(duì)象。把對(duì)象的屬性和操作捆綁在一起,提高了對(duì)象(作為模塊)的內(nèi)聚性,減少了與其他對(duì)象的耦合,這為復(fù)用對(duì)象提供了可能性和方便性。在繼承結(jié)構(gòu)中,特殊類對(duì)一般類的繼承,本身就是對(duì)一般類的屬性和操作的復(fù)用。與傳統(tǒng)方法相比,面向?qū)ο蠓椒ǖ闹饕獌?yōu)點(diǎn):(9/11)這主要體現(xiàn)在如下幾方面:

設(shè)計(jì)的投入在編程、測(cè)試時(shí)會(huì)得到回報(bào)

OO方法使系統(tǒng)更易于理解分析文檔、設(shè)計(jì)文檔、源代碼對(duì)應(yīng)良好功能變化引起的全局性修改較少有利于OOA結(jié)果的復(fù)用5、面向?qū)ο蠓椒ㄓ兄谔岣哕浖馁|(zhì)量和生產(chǎn)率(10/11)面向機(jī)器面向代數(shù)面向過程面向數(shù)據(jù)面向人面向文件面向信息面向應(yīng)用面向功能面向數(shù)據(jù)流

······面向?qū)ο笫擒浖椒▽W(xué)的返樸歸真軟件科學(xué)的發(fā)展歷程中出現(xiàn)過許多“面向”軟件開發(fā)從過分專業(yè)化的方法、規(guī)則和技巧中回到了客觀世界,回到了人們的日常思維,是軟件理論的返樸歸真。面向?qū)ο?11/11)OOPL面向?qū)ο蟛⒎敲嫦驅(qū)ο蟮娜客ㄟ^面向?qū)ο缶幊陶Z言(OOPL)認(rèn)識(shí)到的面向?qū)ο?,并不是面向?qū)ο蟮娜?,甚至只是淺陋的面向?qū)ο?。OOPL的三大機(jī)制“封裝、繼承、多態(tài)”可以表達(dá)面向?qū)ο蟮乃懈拍?,但這三大機(jī)制本身并沒有刻畫出面向?qū)ο蟮暮诵木瘛?封裝,隱藏內(nèi)部實(shí)現(xiàn)-繼承,復(fù)用現(xiàn)有代碼-多態(tài),改寫對(duì)象行為換句話說既可以用這三大機(jī)制做出“好的面向?qū)ο笤O(shè)計(jì)”,可以滿足“應(yīng)對(duì)變化,提高復(fù)用”的設(shè)計(jì),也可以用這三大機(jī)制做出“差的面向?qū)ο笤O(shè)計(jì)”。不是使用了面向?qū)ο笳Z言,就實(shí)現(xiàn)了面向?qū)ο蟮脑O(shè)計(jì)與開發(fā)。OOPL沒有回答為什么用面向?qū)ο??面向?qū)ο蠓治雠c設(shè)計(jì)描述的是類和對(duì)象之間的組織,獨(dú)立于編程語言。面向?qū)ο蟮睦щy哪些困難?對(duì)象是怎樣提?。ǔ橄螅┏鰜淼模楷F(xiàn)實(shí)世界和對(duì)象世界差別這么大,為什么要這么抽取對(duì)象,而不那么抽取對(duì)象?(Why)對(duì)象世界由于靈活,可以任意組合,可我怎么知道某個(gè)組合就正好滿足了現(xiàn)實(shí)世界的需求?什么樣的組合是好的?什么樣的組合是差的?(How)如果只給我一個(gè)對(duì)象組合,我怎樣才能理解它表達(dá)怎樣的含義?(What)為什么會(huì)出現(xiàn)這些問題?難道是面向?qū)ο箦e(cuò)了?現(xiàn)實(shí)世界和對(duì)象世界之間存在一道鴻溝抽象-面向?qū)ο蟮木枰彩敲嫦驅(qū)ο蟮睦щy所在跨越這條鴻溝需要一種把現(xiàn)實(shí)世界映射到對(duì)象世界的方法一種從對(duì)象世界描述現(xiàn)實(shí)世界的方法一種驗(yàn)證對(duì)象世界行為是否正確反映了現(xiàn)實(shí)世界的方法UML-正好架起跨越這一到鴻溝的橋梁UML的優(yōu)勢(shì)可視化:通過文字或其他方法很難表達(dá)清楚的,用簡(jiǎn)單直觀的圖形表達(dá)和暴露出來可以從現(xiàn)實(shí)世界建立業(yè)務(wù)模型,概念模型,設(shè)計(jì)模型造一輛車身是紅色金屬漆的小轎車,裝備四個(gè)普利斯通輪胎,四車門,車門加厚,前后玻璃貼上黑色的膜。前后擋風(fēng)玻璃里都裝有電熱絲,后視鏡是電動(dòng)可調(diào)的。?????可視化的結(jié)果可以將現(xiàn)實(shí)世界轉(zhuǎn)化為業(yè)務(wù)模型將業(yè)務(wù)模型轉(zhuǎn)化為概念模型將概念模型轉(zhuǎn)化為設(shè)計(jì)模型統(tǒng)一過程簡(jiǎn)介核心思想:面向?qū)ο?,迭代增量開發(fā),擁抱需求變化定義了軟件開發(fā)過程中最重要階段工作。四個(gè)階段:先啟、精化、構(gòu)建、產(chǎn)品化九個(gè)核心工作流:業(yè)務(wù)建模、需求、分析設(shè)計(jì)、實(shí)施、測(cè)試、部署(6個(gè)核心過程工作流);配置與變更管理、項(xiàng)目管理、環(huán)境(3個(gè)核心支持工作流)發(fā)展歷程統(tǒng)一過程統(tǒng)一過程的最佳實(shí)踐小結(jié)介紹面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο蟠嬖诘睦щy面向?qū)ο罄щy的解決方式掌握面向?qū)ο蟮幕靖拍罴皟?yōu)點(diǎn)軟件建?;A(chǔ)計(jì)算機(jī)系統(tǒng)輸入裝置輸出裝置運(yùn)算器控制器存儲(chǔ)器計(jì)算機(jī)系統(tǒng)模型Intel某芯片模型軟件建模基礎(chǔ)什么是系統(tǒng)建模?(SystemModeling)通過對(duì)客觀事物建立一種抽象的方法用以表征事物并獲得對(duì)事物本身的理解,同時(shí)把這種理解概念化,并將這些邏輯概念組織起來,構(gòu)成一種對(duì)所觀察的對(duì)象的內(nèi)部結(jié)構(gòu)和工作原理的便于理解的表示。(????)去掉可能引起混淆的信息,是真實(shí)系統(tǒng)的簡(jiǎn)化軟件項(xiàng)目中是不是一定要建模?模(Pattern)是什么?“人”、“事”、“物”、“規(guī)則”建模就是將“人”、“事”、“物”、“規(guī)則”進(jìn)行有機(jī)組合成有意義的一個(gè)整體(????)誰發(fā)出什么動(dòng)作?作用于什么事物?產(chǎn)生什么樣的結(jié)果?(業(yè)務(wù)場(chǎng)景描述)軟件建模:人=業(yè)務(wù)主角、業(yè)務(wù)工人、參與者;事=業(yè)務(wù)用例、系統(tǒng)用例等,物=業(yè)務(wù)實(shí)體;規(guī)則=事件為什么要建模開發(fā)人員如何與用戶進(jìn)行溝通,以了解系統(tǒng)的需求?開發(fā)人員之間如何溝通以確保各個(gè)部分能夠無縫地進(jìn)行協(xié)作?軟件系統(tǒng)設(shè)計(jì)的復(fù)雜性幫助用戶更高層次了解系統(tǒng),讓用戶專注于系統(tǒng)設(shè)計(jì)中的重要部分,忽略無關(guān)緊要的部分。軟件建模的目的向軟件項(xiàng)目干系人展示將要開發(fā)的軟件產(chǎn)品。干系人:客戶、系統(tǒng)分析員、架構(gòu)師、設(shè)計(jì)師、開發(fā)人員、測(cè)試人員、項(xiàng)目經(jīng)理等用視圖來展示軟件產(chǎn)品的不同方面建模的主要工作是繪制那些表達(dá)軟件含義的視圖表達(dá)軟件的含義;為不同干系人展示他們關(guān)心的部分視圖比如向客戶展示用例圖軟件建?;A(chǔ)需求分析時(shí),面對(duì)大量需求資料時(shí),是否有時(shí)候感覺力不從心?當(dāng)你試圖去做一設(shè)計(jì)時(shí),是否有時(shí)候感覺無從下手?一個(gè)是怎么建?模是什么?同樣的事物在不同的人眼中有不同的結(jié)果請(qǐng)?jiān)?0秒內(nèi)說出盡可能多的筷子、勺子、和盤子的相同點(diǎn)與不同點(diǎn)從用途角度抽象建立一個(gè)人或一伙人用餐的業(yè)務(wù)邏輯模型,這三中事物各司其責(zé),特性不一。軟件建模:首先要確定抽象的角度,即建立這個(gè)模型的目的是什么?另外一個(gè)例子:你怎么認(rèn)識(shí)武漢這做城市?從交通、從風(fēng)景、餐飲、文化…..怎么建明確建模的實(shí)際目的取決于現(xiàn)實(shí)世界的問題領(lǐng)域取決于你的抽象角度(還有抽象的層次和粒度問題)例子:公司內(nèi)部圖書館系統(tǒng)﹕公司每個(gè)成員通過局域網(wǎng)登錄圖書管理系統(tǒng)﹐然后預(yù)借書籍﹐圖書管理員收到預(yù)借信息后﹐核準(zhǔn)借閱﹐并通知借書人前來領(lǐng)書﹐告知相關(guān)事項(xiàng)。問題域建模-抽象角度的選擇圖書館書籍類別書籍預(yù)借記錄問題域(領(lǐng)域模型)建模關(guān)鍵是抽象出現(xiàn)實(shí)業(yè)務(wù)世界的概念(名詞)及相互關(guān)系。也就是找全抽象角度,最終選擇哪些抽象角度?可以初步了解系統(tǒng)應(yīng)該有哪些類。建模公式軟件建模內(nèi)容用例模型類圖模型次序模型活動(dòng)模型……根據(jù)項(xiàng)目的實(shí)際情況,確定需要建立哪些模型,也就是說,只需建立項(xiàng)目實(shí)際需要的模型即可,但最常見的需要建立用例和類圖模型模型的數(shù)量:可以多個(gè),也可以1個(gè),比如一個(gè)項(xiàng)目可以建立多個(gè)用例模型或多個(gè)類圖模型軟件建模工具RationalRose是面向?qū)ο蠓治雠c設(shè)計(jì)建模最好的工具,它的應(yīng)用領(lǐng)域?qū)挘瑧?yīng)用時(shí)間長,也較為成熟。當(dāng)前,它是IT企業(yè)常用的CASE工具之一,計(jì)算機(jī)及軟件專業(yè)方向的大學(xué)生、研究生和軟件工程師必須學(xué)會(huì)它,掌握它,并用它來解決面向?qū)ο蠓治雠c設(shè)計(jì)建模的實(shí)際問題。StartUMLRationalRose主要特點(diǎn)支持多種語言,如Ada、CORBA、VisualBasic、Java,C++等;支持模型的Internet發(fā)布;可以生成簡(jiǎn)單、清晰且定制靈活的文檔;雙向工程保證了模型和代碼高度一致(MDA);支持逆向工程,建立代碼框架;支持多種關(guān)系型數(shù)據(jù)庫的建模;從需求分析到測(cè)試,在整個(gè)軟件生命周期中,都為團(tuán)隊(duì)開發(fā)提供強(qiáng)有力的支持RationalRose的作用整個(gè)開發(fā)團(tuán)隊(duì)可以使用用例圖,來獲得一個(gè)系統(tǒng)高層次的視圖,并且可以協(xié)商項(xiàng)目的范疇;項(xiàng)目經(jīng)理可以使用用例圖和文檔,把項(xiàng)目分解成便于管理的多個(gè)模塊;系統(tǒng)分析員和客戶在看到用例規(guī)格描述文檔的時(shí)候,就可以明白系統(tǒng)將會(huì)提供什么樣的功能;技術(shù)編寫者在看到用例規(guī)格描述文檔時(shí),就可以著手編寫用戶手冊(cè)和培訓(xùn)計(jì)劃;系統(tǒng)分析員和軟件開發(fā)者在看到時(shí)序圖和協(xié)作圖時(shí),就可以明白整個(gè)系統(tǒng)的邏輯流程、對(duì)象以及對(duì)象之間的消息;RationalRose的作用測(cè)試人員可以使用用例文檔、時(shí)序圖、協(xié)作圖獲得測(cè)試腳本所需要的信息;軟件開發(fā)人員使用類圖和狀態(tài)圖,可以獲得系統(tǒng)模塊的詳細(xì)視圖以及模塊之間的關(guān)系;部署人員在使用組件圖和部署圖時(shí),就可以明白哪些是可執(zhí)行文件或DLL文件,以及其他的一些組件是如何創(chuàng)建的,這些組件該部署在網(wǎng)絡(luò)中哪些地方;整個(gè)團(tuán)隊(duì)使用Rose模型,就可以確定從需求到編碼的整個(gè)過程,并且從編碼到需求這個(gè)逆過程也是可以追蹤的。軟件建模工具用Rose建模實(shí)例簡(jiǎn)單介紹求職者領(lǐng)域模型建模求職者活動(dòng)圖網(wǎng)上求職招聘系統(tǒng)的登錄操作時(shí)序圖

對(duì)象分析方法一切皆對(duì)象對(duì)象間是獨(dú)立的對(duì)象都具有原子性(不能分割)對(duì)象都是可抽象的對(duì)象都有層次性(層次越高,描述越粗略,適應(yīng)能力越強(qiáng))對(duì)象分析方法面向?qū)ο蠓治鲈O(shè)計(jì)的完整過程本章小結(jié)建模的原因建模的目的建模的關(guān)鍵建模的內(nèi)容建模的工具UML基礎(chǔ)內(nèi)容UML的組成事物構(gòu)造塊關(guān)系構(gòu)造塊UML規(guī)則UML公共機(jī)制UML擴(kuò)展機(jī)制UML體系結(jié)構(gòu)與圖本章小結(jié)知識(shí)圖譜UML概述

統(tǒng)一建模語言(UnifiedModelingLanguage)是一個(gè)用于描述面向?qū)ο筌浖O(shè)計(jì)、可視化、構(gòu)造和文檔化軟件系統(tǒng)的建模語言。 它統(tǒng)一了GradyBooch、JimRumbangh和IvarJacobson三位大師的面向?qū)ο蠼C枋稣Z言(Booch,OMT、OOSE),并對(duì)其做了進(jìn)一步的發(fā)展,最終成為廣泛接受的面對(duì)象建模語言。UML已被OMG所采用,目前成為業(yè)界的標(biāo)準(zhǔn)。UML概述適用于描述以用例為驅(qū)動(dòng),以體系結(jié)構(gòu)為中心的軟件設(shè)計(jì)的全過程。

UML的定義包括UML語義和UML表示法兩個(gè)部分。

(1)UML語義:UML對(duì)語義的描述使開發(fā)者能在語義上取得一致認(rèn)識(shí),消除了因人而異的表達(dá)方法所造成的影響。

(2)UML表示法:UML表示法定義UML符號(hào)的表示法,為開發(fā)者或開發(fā)工具使用這些圖形符號(hào)和文本語法為系統(tǒng)建模提供了標(biāo)準(zhǔn)。認(rèn)識(shí)UMLuml是一種標(biāo)準(zhǔn)的圖形化建模語言。它是面向?qū)ο蠓治雠c設(shè)計(jì)的一種標(biāo)準(zhǔn)表示。它不是一種可視化的程序設(shè)計(jì)語言,而是一種可視化的建模語言。不是工具或知識(shí)庫的規(guī)格說明,而是一種建模語言規(guī)格說明,是一種表示的標(biāo)準(zhǔn)。不是過程也不是方法,但允許任何一種過程和方法使用它。

UML的目標(biāo)易于使用、表達(dá)能力強(qiáng)、進(jìn)行可視化建模。與具體的實(shí)現(xiàn)無關(guān),可應(yīng)用于任何語言平臺(tái)和工具平臺(tái)。與具體的過程無關(guān),可應(yīng)用于任何軟件開發(fā)的過程。簡(jiǎn)單并且可擴(kuò)展,具有擴(kuò)展和專有化機(jī)制,便于擴(kuò)展無需對(duì)核心概念進(jìn)行修改。

為面向?qū)ο蟮脑O(shè)計(jì)與開發(fā)中涌現(xiàn)出的高級(jí)概念,例如協(xié)作框架模式和組件提供支持,強(qiáng)調(diào)在軟件開發(fā)中對(duì)架構(gòu)框架模式和組件的重用。與最好的軟件工程實(shí)踐經(jīng)驗(yàn)集成??缮?jí),具有廣闊的適用性和可用性。有利于面對(duì)對(duì)象工具的市場(chǎng)成長。UML的體系結(jié)構(gòu)uml是由圖和元模型組成的。圖是uml的語法。而元模型則給出的圖的意思,是uml的語義。uml的語義是定義在一個(gè)四層或四個(gè)抽象級(jí)建模概念框架中的。這四層分別是:元元模型(meta-metamodel)層組成uml最基本的元素事物(thing),代表要定義的所有事物。元模型(metamodel)層組成了uml的基本元素,包括面向?qū)ο蠛兔嫦蚪M件的概念。這一層的每個(gè)概念都是元元模型中事物概念的實(shí)例。模型(model)層組成了uml的模型。這一層中的每個(gè)概念都是元模型層中概念的一個(gè)實(shí)例。用戶模型(usermodel)層。這層中的所有元素都是uml模型的例子。這一層中的每個(gè)概念都是模型層的一個(gè)實(shí)例。元模型(meta-model)當(dāng)然也是模型,他描述的對(duì)象是“模型中的元素、元素間關(guān)系以及表示法”,或者說它是一種語言,人們使用這種語言來描述模型。使用同樣元模型的人,可以互相理解彼此所建立的模型。我們的每一句話,每篇文章都是一個(gè)模型中文是我們的建模語言。掌握中文的人,可以通過理解對(duì)方的句子和文章。中文、英文、德文、法文都是自然語言,也都是元模型。如果你要發(fā)明一種新的自然語言,你需要發(fā)明哪些要素呢?例如:你是否需要發(fā)明相關(guān)的詞匯和語法?詞匯是否需要分成名詞、動(dòng)詞、形容詞等等?每一個(gè)詞匯是否都應(yīng)該有讀音和寫法?(ps,《指環(huán)王》的作者托爾金大叔就發(fā)明了一種新的語言,名曰精靈語,而且居然還有個(gè)女人把它學(xué)會(huì)了。)或者,你發(fā)明了一種新的“自然語言”,但是它是不是真正意義上的自然語言呢?顯然,要回答這個(gè)問題,我們需要先搞清楚什么是“自然語言”。怎么才能精確的說清楚?最好是建立一個(gè)模型,用這個(gè)模型來闡明“自然語言”的要素和結(jié)構(gòu)。使用這個(gè)模型,我們可以定義自己的“自然語言”。這個(gè)模型對(duì)于任何一種自然語言(例如中文),就是元模型;而相對(duì)于一個(gè)句子或者一篇文章則是元元模型。如此類推,我們還可以建立元元元模型,元元元元模型,等等。但是,陷于人類的思維能力和實(shí)際的需要,4層可能就足夠了。AgendaUML的組成事物構(gòu)造塊關(guān)系構(gòu)造塊UML規(guī)則UML公共機(jī)制UML擴(kuò)展機(jī)制UML體系結(jié)構(gòu)與圖本章小結(jié)UML組成基本構(gòu)造塊:也就是建模

元素,是模型的主體UML規(guī)則:也就是支配基

本構(gòu)造塊如何放在一起的

規(guī)則公共機(jī)制:運(yùn)用于整個(gè)

UML模型中的公共機(jī)制、

擴(kuò)展機(jī)制UML模型圖的構(gòu)成事物(Things):UML模型中最基本的構(gòu)成元素,是具有代表性的成分的抽象關(guān)系(Relationships):關(guān)系把事物緊密聯(lián)系在一起圖(Diagrams):圖是事物和關(guān)系的可視化表示AgendaUML的組成事物構(gòu)造塊關(guān)系構(gòu)造塊UML規(guī)則UML公共機(jī)制UML擴(kuò)展機(jī)制UML體系結(jié)構(gòu)與圖本章小結(jié)事物構(gòu)造塊事物構(gòu)造塊是對(duì)模型中最具有代表性的成分的抽象結(jié)構(gòu)事物:UML中的名詞,它是模型的靜態(tài)部分,描述概念或物理元素。行為事物:UML中的動(dòng)詞,它是模型中的動(dòng)態(tài)部分,是一種跨越時(shí)間、空間的行為。分組事物:UML中的容器,用來組織模型,使模型更加的結(jié)構(gòu)化。注釋事務(wù):UML中的解釋部分,和代碼中的注釋語句一樣,是用來描述模型的。面向?qū)ο笠暯窍碌氖澜缡紫冉⒎磻?yīng)現(xiàn)實(shí)世界中不同事物的“構(gòu)造塊”,然后確定“構(gòu)造塊”之間的“關(guān)系”,再確定各個(gè)構(gòu)造塊的屬性和“行為”。這樣,在軟件系統(tǒng)中就可以模擬現(xiàn)實(shí)世界的“構(gòu)造塊”之間的交互與協(xié)作面向?qū)ο筌浖_發(fā)的核心思想就是高內(nèi)聚(封裝)、低耦合(消息驅(qū)動(dòng)),使用簡(jiǎn)潔的接口拼合簡(jiǎn)單的部件結(jié)構(gòu)事物類(class)和對(duì)象(object)接口(interface)主動(dòng)類(activeclass)用例(usecase)協(xié)作(collaboration)構(gòu)件(component)節(jié)點(diǎn)(node)類和對(duì)象類是對(duì)一組具有相同屬性、相同操作、相同關(guān)系和相同語義的對(duì)象的抽象UML中類是用一個(gè)矩形表示的,它包含三個(gè)區(qū)域,最上面是類名、中間是類的屬性、最下面是類的方法對(duì)象則是類的一個(gè)實(shí)例UML將類分為哪三個(gè)類1.邊界類(BoundryClass);2.實(shí)體類(EntityClass);3.控制類(ControlClass);邊界類1.用來描述什么問題?邊界類用于描述外部參與者與系統(tǒng)之間的交互。邊界類是一種用于對(duì)系統(tǒng)外部環(huán)境與其內(nèi)部運(yùn)作之間的交互進(jìn)行建模的類。這種交互包括轉(zhuǎn)換事件,并記錄系統(tǒng)表示方式(例如接口)中的變更。2.可以帶來什么好處?識(shí)別邊界類可以幫助開發(fā)人員識(shí)別出用戶對(duì)界面的需求。3.如何理解邊界類邊界類位于系統(tǒng)與外界的交界處,窗體、報(bào)表、以及表示通訊協(xié)議的類、直接與外部設(shè)備交互的類、直接與外部系統(tǒng)交互的類等都是邊界類。通過用例圖可以確定需要的邊界類,每個(gè)Actor/UseCase對(duì)至少要一個(gè)邊界類,但并非每個(gè)Actor/UseCase對(duì)要唯一的邊界類。用戶界面類-幫助與系統(tǒng)用戶進(jìn)行通信的類系統(tǒng)接口類-幫助與其他系統(tǒng)進(jìn)行通信的類設(shè)備接口類-為用來監(jiān)測(cè)外部事件的設(shè)備(如傳感器)提供接口的類

實(shí)體類實(shí)體類主要是作為數(shù)據(jù)管理和業(yè)務(wù)邏輯處理層面上存在的類別。實(shí)體類的主要職責(zé)是存儲(chǔ)和管理系統(tǒng)內(nèi)部的信息,它也可以有行為,甚至很復(fù)雜的行為,但這些行為必須與它所代表的實(shí)體對(duì)象密切相關(guān)。實(shí)體類保存要放進(jìn)持久存儲(chǔ)體的信息。持久存儲(chǔ)體就是數(shù)據(jù)庫、文件等可以永久存儲(chǔ)數(shù)據(jù)的介質(zhì)。實(shí)體類可以通過事件流和交互圖發(fā)現(xiàn)。通常每個(gè)實(shí)體類在數(shù)據(jù)庫中有相應(yīng)的表,實(shí)體類中的屬性對(duì)應(yīng)數(shù)據(jù)庫表中的字段。實(shí)體類是用于對(duì)必須存儲(chǔ)的信息和相關(guān)行為建模的類。實(shí)體對(duì)象(實(shí)體類的實(shí)例)用于保存和更新一些現(xiàn)象的有關(guān)信息,例如:事件、人員或者一些現(xiàn)實(shí)生活中的對(duì)象??刂祁?.用來描述什么問題?控制類用于描述一個(gè)用例所具有的事件流控制行為,控制一個(gè)用例中的事件順序。2.如何理解控制類?控制類是控制其他類工作的類。每個(gè)用例通常有一個(gè)控制類,控制用例中的事件順序,控制類也可以在多個(gè)用例間共用。其他類并不向控制類發(fā)送很多消息,而是由控制類發(fā)出很多消息??刂祁?.用來描述什么問題?控制類用于描述一個(gè)用例所具有的事件流控制行為,控制一個(gè)用例中的事件順序。2.如何理解控制類?控制類是控制其他類工作的類。每個(gè)用例通常有一個(gè)控制類,控制用例中的事件順序,控制類也可以在多個(gè)用例間共用。其他類并不向控制類發(fā)送很多消息,而是由控制類發(fā)出很多消息。應(yīng)用舉例考試系統(tǒng)中當(dāng)學(xué)生在考試時(shí),學(xué)生與試卷交互,那么學(xué)生和試卷都是實(shí)體類;而考試時(shí)間,規(guī)則,分?jǐn)?shù)都是控制類當(dāng)考試完了將試卷提交給試卷保管者,則試卷則成了邊界類。UML類總結(jié)1.邊界類,描述外部與系統(tǒng)內(nèi)部交互的類;2.控制類,控制其他類;3.實(shí)體類,存儲(chǔ)信息(持久化)和相關(guān)行為的類;接口接口是描述某個(gè)類或構(gòu)件的一個(gè)服務(wù)操作集主動(dòng)類主動(dòng)類實(shí)際上是一種特殊的類。引用它的原因,實(shí)際上是在開發(fā)中需要有一些類能夠起到

啟動(dòng)控制活動(dòng)的作用主動(dòng)類是指其對(duì)象至少擁有一個(gè)進(jìn)

程或線程,能夠啟動(dòng)控制活動(dòng)的類用例與協(xié)作用例是著名的大師IvarJacobson首先提出的,現(xiàn)已經(jīng)成為了面向?qū)ο筌浖_發(fā)中一個(gè)需求分析的最常用工具用例實(shí)例是在系統(tǒng)中執(zhí)行的一系列動(dòng)作,這些動(dòng)作將生成特定執(zhí)行者可見的價(jià)值結(jié)果。一個(gè)

用例定義一組用例實(shí)例。協(xié)作定義了一個(gè)交互,它是由一組共同工作以提供某協(xié)作行為的角色和其他元素構(gòu)

成的一個(gè)群體。對(duì)于某個(gè)用例的實(shí)現(xiàn)就可

以表示為一個(gè)協(xié)作構(gòu)件在實(shí)際的軟件系統(tǒng)中,有許多要比“類”更大的實(shí)體,例如一個(gè)COM組件、一個(gè)DLL文件、一個(gè)JavaBeans、一個(gè)執(zhí)行文件等等。為了更好地對(duì)在UML模型中對(duì)它們進(jìn)行表示,就引入了構(gòu)件(也譯為組件)構(gòu)件是系統(tǒng)設(shè)計(jì)的一個(gè)模塊化部分,它隱藏了內(nèi)部的實(shí)現(xiàn),對(duì)外提供了一組外部接口。在系統(tǒng)中滿足相同接口的組件可以自由地替換節(jié)點(diǎn)為了能夠有效地對(duì)部署的結(jié)構(gòu)進(jìn)行建模,UML引入了節(jié)點(diǎn)這一概念,它可以用來描述實(shí)際的PC機(jī)、打印機(jī)、服務(wù)器等軟件運(yùn)行的基礎(chǔ)硬件節(jié)點(diǎn)是運(yùn)行時(shí)存在的物理元素,它表示了一種可計(jì)算的資源,通常至少有存儲(chǔ)空間和處理能力行為事物交互(interaction): 是在特定語境中,共同完成某個(gè)任務(wù)的一組對(duì)象之間交換的信息集合交互的表示法很簡(jiǎn)單,就是一條有向直線,并在上面標(biāo)有操作名狀態(tài)機(jī)(statemachine):是一個(gè)對(duì)象或交互在生命周期內(nèi)響應(yīng)事件所經(jīng)歷的狀態(tài)序列在UML模型中將狀態(tài)畫為一個(gè)圓

角矩形,并在矩形內(nèi)寫出狀態(tài)名

稱及其子狀態(tài)分組事物對(duì)于一個(gè)中大型的軟件系統(tǒng)而言,通常會(huì)包含大量的類,因此也就會(huì)存在大量的結(jié)構(gòu)事物、行為事物,為了能夠更加有效地對(duì)其進(jìn)行整合,生成或簡(jiǎn)或繁、或宏觀或微觀的模型,就需要對(duì)其進(jìn)行分組。在UML中,提供了“包(Package)”來完成這一目標(biāo)注釋事物結(jié)構(gòu)事物是模型的主要構(gòu)造塊,行為事物則是補(bǔ)充了模型中的動(dòng)態(tài)部分,分組事物而是用來更好地組織模型,似乎已經(jīng)很完整了。而注釋事物則是用來錦上添花的,它是用來在UML模型上添加適當(dāng)?shù)慕忉尣糠?/p>

AgendaUML的組成事物構(gòu)造塊關(guān)系構(gòu)造塊UML規(guī)則UML公共機(jī)制UML擴(kuò)展機(jī)制UML體系結(jié)構(gòu)與圖本章小結(jié)UML關(guān)系依賴依賴(dependency)是兩個(gè)事物之間的語義關(guān)系,其中一個(gè)事物(獨(dú)立事物)發(fā)生變化,會(huì)影響到另一個(gè)事物(依賴事物)的語義關(guān)聯(lián)關(guān)聯(lián)(association)是一種結(jié)構(gòu)關(guān)系,它指明一個(gè)事物的對(duì)象與另一個(gè)事物的對(duì)象間的聯(lián)系泛化泛化(generalization)是一種特殊/一般的關(guān)系。也可以看作是常說的繼承關(guān)系實(shí)現(xiàn)實(shí)現(xiàn)(realization)是類元之間的語義關(guān)系,其中的一個(gè)類元指定了由另一個(gè)類元保證執(zhí)行的契約UML模型關(guān)系的種類種類變種表示法關(guān)鍵字或符號(hào)種類變種表示法關(guān)鍵字或符號(hào)抽象派生依賴關(guān)系《derive》導(dǎo)入私有依賴關(guān)系《access》顯現(xiàn)《manifest》公有《import》實(shí)現(xiàn)實(shí)現(xiàn)關(guān)系虛線加空心三角信息流《flow》精化依賴關(guān)系《refine》包含并《merge》跟蹤《trace》許可《permit》關(guān)聯(lián)關(guān)聯(lián)關(guān)系實(shí)線協(xié)議符合未指定綁定依賴關(guān)系《bind》(參數(shù)表)替換依賴關(guān)系《substitute》部署《deploy》使用調(diào)用《call》擴(kuò)展Extend《extend》(擴(kuò)展點(diǎn))創(chuàng)建《create》擴(kuò)展extension擴(kuò)展關(guān)系實(shí)線加實(shí)心三角實(shí)例化《instantiate》泛化泛化關(guān)系實(shí)線加空間三角職責(zé)《responsibility》包含依賴關(guān)系《include》發(fā)送《send》關(guān)聯(lián)關(guān)系關(guān)聯(lián)(Association)表示兩個(gè)類之間存在某種語義上的聯(lián)系。關(guān)聯(lián)關(guān)系提供了通信的路徑,它是所有關(guān)系中最通用、語義最弱的。在UML中,使用一條實(shí)線來表示關(guān)聯(lián)關(guān)系在關(guān)聯(lián)關(guān)系中,有兩種比較特殊的關(guān)系:聚合和組合聚合關(guān)系:聚合(Aggregation)是一種特殊形式的關(guān)聯(lián)。聚合表示類之間的關(guān)系是整體與部分的關(guān)系如果發(fā)現(xiàn)“部分”類的存在,是完全依賴于“整體”類的,那么就應(yīng)該使用“組合”關(guān)系來描述泛化、實(shí)現(xiàn)、擴(kuò)展與依賴泛化關(guān)系描述了一般事物與該事物中的特殊種類之間的關(guān)系,也就是父類與子類之間的關(guān)系。實(shí)現(xiàn)關(guān)系是用來規(guī)定接口和實(shí)現(xiàn)接口的類或組件之間的關(guān)系。接口是操作的集合,這些操作用于規(guī)定類或組件的服務(wù)。擴(kuò)展表示將一個(gè)構(gòu)造型附加到一個(gè)元類(metaclass)上,使得元類的定義中包括這個(gè)構(gòu)造型。有兩個(gè)元素X、Y,如果修改元素X的定義可能會(huì)引起對(duì)另一個(gè)元素Y的定義的修改,則稱元素Y依賴(Dependency)于元素X。AgendaUML的組成事物構(gòu)造塊關(guān)系構(gòu)造塊UML規(guī)則UML公共機(jī)制UML擴(kuò)展機(jī)制UML體系結(jié)構(gòu)與圖本章小結(jié)UML規(guī)則命名:也就是為事物、關(guān)系和圖起名字。和任何語言一樣,名字都是一個(gè)標(biāo)識(shí)符范圍:與類的作用域相似,包括所有者作用域(ownerscope)和目標(biāo)作用域(targetscope)兩類可見性:可見性規(guī)則標(biāo)準(zhǔn)表示法Rose屬性Rose方法public任一元素,若能訪問包容器,就可以訪問它+

protected只有包容器中的元素或包容器的后代才能夠看到它#

private只有包容器中的元素才能夠看得到它-

package只有聲明在同一個(gè)包中的元素才能夠看到該元素~AgendaUML的組成事物構(gòu)造塊關(guān)系構(gòu)造塊UML規(guī)則UML公共機(jī)制UML擴(kuò)展機(jī)制UML體系結(jié)構(gòu)與圖本章小結(jié)規(guī)格描述在圖形表示法的每個(gè)部分后面都有一個(gè)規(guī)格描述(也稱為詳述),它用來對(duì)構(gòu)造塊的語法和語義進(jìn)行文字?jǐn)⑹?。這種構(gòu)思,也就使可視化視圖和文字視圖的分離:UML修飾與通用劃分在為了更好的表示這些細(xì)節(jié),UML中還提供了一些修飾符號(hào),例如不同可視性的符號(hào)、用斜體字表示抽象類UML通用劃分:

1)類與對(duì)象的劃分:類是一種抽象,對(duì)象是一個(gè)具體

的實(shí)例

2)接口與實(shí)現(xiàn)的分離:接口是一種聲明、是一個(gè)契

約,也是服務(wù)的入口;實(shí)現(xiàn)則是負(fù)責(zé)實(shí)施接口提供

的契約AgendaUML的組成事物構(gòu)造塊關(guān)系構(gòu)造塊UML規(guī)則UML公共機(jī)制UML擴(kuò)展機(jī)制UML體系結(jié)構(gòu)與圖本章小結(jié)UML擴(kuò)展機(jī)制構(gòu)造型:在實(shí)際的建模過程中,可能會(huì)需要定義一些特定于某個(gè)領(lǐng)域或某個(gè)系統(tǒng)的構(gòu)造塊標(biāo)記值則是用來為事物添加新特性的。標(biāo)記值的表示方法是用形如“{標(biāo)記信息}”的字符串約束是用來增加新的語義或改變已存在規(guī)則的一種機(jī)制(自由文本和OCL兩種表示法)。約束的表示法和標(biāo)記值法類似,都是使用花括號(hào)括起來的串來表示,不過它是不能夠放在元素中的,而是放在相關(guān)的元素附近AgendaUML的組成事物構(gòu)造塊關(guān)系構(gòu)造塊UML規(guī)則UML公共機(jī)制UML擴(kuò)展機(jī)制UML體系結(jié)構(gòu)與圖本章小結(jié)UML定義的圖圖名功能備注類圖描述類、類的特性以及類之間的關(guān)系UML1原有對(duì)象圖描述一個(gè)時(shí)間點(diǎn)上系統(tǒng)中各個(gè)對(duì)象的一個(gè)快照UML1非正式圖復(fù)合結(jié)構(gòu)圖描述類的運(yùn)行時(shí)刻的分解UML2.0新增構(gòu)件圖描述構(gòu)件的結(jié)構(gòu)與連接UML1原有部署圖描述在各個(gè)節(jié)點(diǎn)上的部署UML1原有包圖描述編譯時(shí)的層次結(jié)構(gòu)UML中非正式圖用例圖描述用戶與系統(tǒng)如何交互UML1原有活動(dòng)圖描述過程行為與并行行為UML1原有狀態(tài)機(jī)圖描述事件如何改變對(duì)象生命周期UML1原有順序圖描述對(duì)象之間的交互,重點(diǎn)在強(qiáng)調(diào)順序UML1原有通信圖描述對(duì)象之間的交互,重點(diǎn)在于連接UML1中的協(xié)作圖定時(shí)圖描述對(duì)象之間的交互,重點(diǎn)在于定時(shí)UML2.0新增交互概觀圖是一種順序圖與活動(dòng)圖的混合UML2.0新增UML視圖和圖主要領(lǐng)域視圖圖結(jié)構(gòu)靜態(tài)視圖類圖設(shè)計(jì)視圖復(fù)合結(jié)構(gòu)圖、協(xié)作圖、構(gòu)件圖用例視圖用例圖動(dòng)態(tài)狀態(tài)視圖狀態(tài)機(jī)圖活動(dòng)視圖活動(dòng)圖交互視圖順序圖、通信圖物理部署視圖部署圖模型管理模型管理視圖包圖特性描述包圖UML圖形分類各UML圖及特征用例圖(

UseCaseDiagram)用例圖是從用戶角度描述系統(tǒng)功能,是用戶所能觀察到的系統(tǒng)功能的模型圖,用例是系統(tǒng)中的一個(gè)功能單元類圖描述系統(tǒng)中類的靜態(tài)結(jié)構(gòu)。不僅定義系統(tǒng)中的類,表示類之間的聯(lián)系如關(guān)聯(lián)、依賴、聚合等,也包括類的內(nèi)部結(jié)構(gòu)(類的屬性和操作)類圖是以類為中心來組織的,類圖中的其他元素或?qū)儆谀硞€(gè)類或與類相關(guān)聯(lián)

類圖(ClassDiagram)各UML圖及特征對(duì)象圖(

ObjectDiagram

)對(duì)象圖是類圖的實(shí)例,幾乎使用與類圖完全相同的標(biāo)識(shí)。他們的不同點(diǎn)在于對(duì)象圖顯示類的多個(gè)對(duì)象實(shí)例,而不是實(shí)際的類

順序圖(SequenceDiagram)順序圖顯示對(duì)象之間的動(dòng)態(tài)合作關(guān)系,它強(qiáng)調(diào)對(duì)象之間消息發(fā)送的順序,同時(shí)顯示對(duì)象之間的交互

順序圖的一個(gè)用途是用來表示用例中的行為順序。當(dāng)執(zhí)行一個(gè)用例行為時(shí),順序圖中的每條消息對(duì)應(yīng)了一個(gè)類操作或引起狀態(tài)轉(zhuǎn)換的觸發(fā)事件

各UML圖及特征協(xié)作圖(CollaborationDiagram)協(xié)作圖描述對(duì)象間的協(xié)作關(guān)系,協(xié)作圖跟順序圖相似,顯示對(duì)象間的動(dòng)態(tài)合作關(guān)系。除顯示信息交換外,協(xié)作圖還顯示對(duì)象以及它們之間的關(guān)系.協(xié)作圖的一個(gè)用途是表示一個(gè)類操作的實(shí)現(xiàn)

狀態(tài)圖(StateChartDiagram)狀態(tài)圖是一個(gè)類對(duì)象所可能經(jīng)歷的所有歷程的模型圖。狀態(tài)圖由對(duì)象的各個(gè)狀態(tài)和連接這些狀態(tài)的轉(zhuǎn)換組成

各UML圖及特征活動(dòng)圖(ActivityDiagram)活動(dòng)圖是狀態(tài)圖的一個(gè)變體,用來描述執(zhí)行算法的工作流程中涉及的活動(dòng)活動(dòng)圖描述了一組順序的或并發(fā)的活動(dòng)

構(gòu)件圖(ComponentDiagram)構(gòu)件圖為系統(tǒng)的構(gòu)件建模型—構(gòu)件即構(gòu)造應(yīng)用的軟件單元—還包括各構(gòu)件之間的依賴關(guān)系,以便通過這些依賴關(guān)系來估計(jì)對(duì)系統(tǒng)構(gòu)件的修改給系統(tǒng)可能帶來的影響

各UML圖及特征部署圖(DeploymentDiagram)部署視圖描述位于節(jié)點(diǎn)實(shí)例上的運(yùn)行構(gòu)件實(shí)例的安排。節(jié)點(diǎn)是一組運(yùn)行資源,如計(jì)算機(jī)、設(shè)備或存儲(chǔ)器。這個(gè)視圖允許評(píng)估分配結(jié)果和資源分配類圖順序圖需求分析BD(BaseDesign)FD/DD類圖順序圖用例圖用例文檔用例圖順序圖主要圖之間的關(guān)系各UML圖的關(guān)系(FunctionalDesign/DetailedDesign)類是對(duì)一組具有相同屬性、相同操作、相同關(guān)系和相同語義的對(duì)象的描述對(duì)象接口是描述了一個(gè)類或構(gòu)件的一個(gè)服務(wù)的操作集協(xié)作定義了一個(gè)交互,它是由一組共同工作以提供某種協(xié)作行為的角色和其他元素構(gòu)成的一個(gè)群體用例是對(duì)一組動(dòng)作序列的描述主動(dòng)類對(duì)象至少擁有一個(gè)進(jìn)程或線程的類構(gòu)件是系統(tǒng)中物理的、可替代的部件參與者在系統(tǒng)外部與系統(tǒng)直接交互的人或事物節(jié)點(diǎn)是在運(yùn)行時(shí)存在的物理元素交互它由在特定語境中共同完成一定任務(wù)的一組對(duì)象間交換的消息組成狀態(tài)機(jī)它描述了一個(gè)對(duì)象或一個(gè)交互在生命期內(nèi)響應(yīng)事件所經(jīng)歷的狀態(tài)序列包把元素組織成組的機(jī)制注釋事物是UML模型的解釋部分依賴一條可能有方向的虛線關(guān)聯(lián)一條實(shí)線,可能有方向泛化一條帶有空心箭頭的實(shí)線實(shí)現(xiàn)一條帶有空心箭頭的虛線UML語法描述4+1視圖邏輯視圖并發(fā)視圖組件視圖用例視圖:用戶和開發(fā)人員,是其他視圖的基礎(chǔ),描述用戶的功能需求邏輯視圖:設(shè)計(jì)和開發(fā)人員,描述用例視圖中的系統(tǒng)功能的實(shí)現(xiàn),主要關(guān)注系統(tǒng)內(nèi)部。主要由類圖和對(duì)象圖,狀態(tài)圖,時(shí)序圖,協(xié)作圖,活動(dòng)圖來描述類和對(duì)象之間的關(guān)系。并發(fā)視圖:開發(fā)和系統(tǒng)集成人員,描述系統(tǒng)資源的有效利用,代碼并發(fā)控制、系統(tǒng)異步事件處理、線程的通信和同步。主要使用狀態(tài)圖、協(xié)作圖、活動(dòng)圖。組件視圖:開發(fā)人員使用,用來描述系統(tǒng)實(shí)現(xiàn)模塊的以及它們之間的依賴關(guān)系。用組件圖來描述。部署視圖:開發(fā)、系統(tǒng)集成和測(cè)試人員,用來描述系統(tǒng)的物理部署,節(jié)點(diǎn)上的運(yùn)行實(shí)例的部署情況。如一個(gè)程序或?qū)ο笤谀桥_(tái)計(jì)算機(jī)上運(yùn)行,執(zhí)行程序的各節(jié)點(diǎn)設(shè)備之間是如何連接的。用部署視圖來描述部署視圖開發(fā)過程AgendaUML的組成事物構(gòu)造塊關(guān)系構(gòu)造塊UML規(guī)則UML公共機(jī)制UML擴(kuò)展機(jī)制UML體系結(jié)構(gòu)與圖本章小結(jié)習(xí)題判斷題1、UML中一共有九種圖:它們是用例圖、類圖、對(duì)象圖、順序圖、協(xié)作圖、狀態(tài)圖、活動(dòng)圖、構(gòu)件圖、部署圖2、用例圖是從程序員角度來描述系統(tǒng)的功能3、類圖是描述系統(tǒng)中類的靜態(tài)結(jié)構(gòu),對(duì)象圖是描述系統(tǒng)中類的動(dòng)態(tài)結(jié)構(gòu)4、活動(dòng)圖和狀態(tài)圖用來描述系統(tǒng)的動(dòng)態(tài)行為5、協(xié)作圖的一個(gè)用途是表示一個(gè)類操作的實(shí)現(xiàn)選擇題6、請(qǐng)?jiān)谙旅孢x項(xiàng)目中選出兩種可以互相轉(zhuǎn)換的圖(a)順序圖(b)協(xié)作圖(c)活動(dòng)圖(d)狀態(tài)圖7、下面哪些圖可用于需求分析階段(a)用例圖(b)構(gòu)件圖(c)類圖(d)順序圖習(xí)題

簡(jiǎn)答題8、什么是UML模型元素?9、簡(jiǎn)要介紹UML通用機(jī)制。10、UML中提供了多少種模型圖,分別是什么?11、簡(jiǎn)要介紹UML的四層體系機(jī)構(gòu)。12、簡(jiǎn)要說明UML中視圖和圖的關(guān)系。本章小結(jié)首先闡述了事物構(gòu)造塊、關(guān)系構(gòu)造塊,它們是UML建模元素的主體。事務(wù)構(gòu)造塊包括結(jié)構(gòu)、行為、分組和注釋四種類型;關(guān)系構(gòu)造塊主要包括關(guān)聯(lián)、泛化、依賴、實(shí)現(xiàn)接著簡(jiǎn)要闡述了UML中公共的規(guī)則然后,系統(tǒng)地介紹了規(guī)格說明、修飾和通用劃分三種公共機(jī)制;并對(duì)擴(kuò)展機(jī)制進(jìn)行了更深入的講解在本章的最后又將讀者的目光轉(zhuǎn)回到“圖”這個(gè)最重要的構(gòu)造塊中,簡(jiǎn)要地闡述了UML2.0中定義的13種圖,以及不同圖的劃分和類別UML基礎(chǔ)UML走向UML太多的OO術(shù)語令人迷惑Wirfs-Brock——ResponsibilityBooch——OperationCoad/Yourdon——ServiceStroustrup——Function…Method走向UML沒有統(tǒng)一的符號(hào),科學(xué)很難發(fā)展內(nèi)容UML的組成事物構(gòu)造塊關(guān)系構(gòu)造塊UML規(guī)則UML公共機(jī)制UML擴(kuò)展機(jī)制UML體系結(jié)構(gòu)與圖本章小結(jié)知識(shí)圖譜UML概述

統(tǒng)一建模語言(UnifiedModelingLanguage)是一個(gè)用于描述面向?qū)ο筌浖O(shè)計(jì)、可視化、構(gòu)造和文檔化軟件系統(tǒng)的建模語言。 它統(tǒng)一了GradyBooch、JimRumbangh和IvarJacobson三

溫馨提示

  • 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)論