UML項(xiàng)目實(shí)訓(xùn)ppt課件
Click to edit Master title style,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,二級(jí),三級(jí),四級(jí),五級(jí),2020/3/26,#,面向?qū)ο蠹夹g(shù)及,UML,教程,第,13,章,UML,面向?qū)ο蠹夹g(shù)及UML教程第13章 UML,第,13,章,UML,項(xiàng)目實(shí)訓(xùn),前面章節(jié)介紹了面向?qū)ο蟮幕靖拍?、軟件開(kāi)發(fā)過(guò)程和,UML,。介紹了,UML,的主要圖符、模型圖以及這些模型圖的應(yīng)用。,在學(xué)習(xí)了這些知識(shí)、方法和技能后可能還不清楚如何在一個(gè)實(shí)際項(xiàng)目中應(yīng)用,UML,。,本章將給出一個(gè)具體的實(shí)例,“,打擊游戲”,應(yīng)用,UML,完成項(xiàng)目開(kāi)發(fā)的全過(guò)程。,第13章 UML項(xiàng)目實(shí)訓(xùn) 前面章節(jié)介紹了面向?qū)ο蟮幕?13.1,項(xiàng)目啟動(dòng),在實(shí)際的軟件公司中,軟件項(xiàng)目一般都是由軟件項(xiàng)目組開(kāi)發(fā)的,在軟件項(xiàng)目組中每個(gè)項(xiàng)目組的成員都有自己明確的分工,他們相互合作完成項(xiàng)目開(kāi)發(fā),項(xiàng)目啟動(dòng)就是參照軟件公司的軟件項(xiàng)目開(kāi)發(fā)方式,先組建項(xiàng)目組,確定項(xiàng)目的目標(biāo),制定項(xiàng)目開(kāi)發(fā)計(jì)劃,為實(shí)際的項(xiàng)目開(kāi)發(fā)做好準(zhǔn)備。,13.1 項(xiàng)目啟動(dòng) 在實(shí)際的軟件公司中,軟件項(xiàng)目一般都,13.1,項(xiàng)目啟動(dòng),項(xiàng)目組一般由,4,到,5,人組成,采用自由結(jié)組的方式,定義四個(gè)角色:,項(xiàng)目經(jīng)理,系統(tǒng)分析員,程序員,測(cè)試員,13.1.1,建立項(xiàng)目組,13.1 項(xiàng)目啟動(dòng) 項(xiàng)目組一般由4到5人組成,采用自由,13.1,項(xiàng)目啟動(dòng),明確開(kāi)發(fā)目標(biāo),打擊游戲的項(xiàng)目目標(biāo)可以確定為:開(kāi)發(fā)一個(gè)簡(jiǎn)單的小娛樂(lè)游戲,通過(guò)點(diǎn)擊游戲窗口中的圖片,可以贏得游戲分?jǐn)?shù),隨著分?jǐn)?shù)的積累能夠升級(jí)。,制定開(kāi)發(fā)計(jì)劃(詳細(xì)內(nèi)容見(jiàn)教材),為什么先制定開(kāi)發(fā)計(jì)劃?一般在軟件項(xiàng)目開(kāi)發(fā)之初會(huì)根據(jù)項(xiàng)目開(kāi)發(fā)的合同時(shí)間確定一個(gè)項(xiàng)目計(jì)劃。,13.1.2,制定開(kāi)發(fā)計(jì)劃,13.1 項(xiàng)目啟動(dòng)明確開(kāi)發(fā)目標(biāo) 13.1.2 制定開(kāi)發(fā)計(jì),13.2,項(xiàng)目需求分析,這里要開(kāi)發(fā)的打擊游戲?qū)儆谧约洪_(kāi)發(fā)產(chǎn)品,因此需要系統(tǒng)分析員組織項(xiàng)目組成員進(jìn)行系統(tǒng)的需求分析,具體的需求可以參考市面上流行的這些小游戲,根據(jù)它們提供的功能特點(diǎn),游戲特色,吸引玩家的地方等等,在項(xiàng)目組全體成員的共同努力下,盡量多的挖掘出系統(tǒng)的需求,13.2.1,需求獲取,13.2 項(xiàng)目需求分析 這里要開(kāi)發(fā)的打擊游戲?qū)儆谧约洪_(kāi),13.2,項(xiàng)目需求分析,打擊游戲的需求分析是從功能描述、界面描述兩個(gè)方面著手的,游戲提供一個(gè)界面,隨機(jī)在某個(gè)位置上放置一幅圖片。玩家可以點(diǎn)擊該幅圖片,當(dāng)圖片被點(diǎn)中時(shí),圖片消失,在窗口上別的位置上再出現(xiàn)一幅圖片,游戲繼續(xù);如果在規(guī)定的時(shí)間內(nèi)玩家沒(méi)有點(diǎn)中圖片,游戲結(jié)束。,玩家每次點(diǎn)中圖片后,給玩家加分,將分?jǐn)?shù)顯示在界面上。當(dāng)玩家的分?jǐn)?shù)達(dá)到一定數(shù)值后,游戲晉級(jí),表現(xiàn)為圖片停留的最長(zhǎng)時(shí)間減少。,13.2.2,需求描述,13.2 項(xiàng)目需求分析 打擊游戲的需求分析是從功能描,13.2,項(xiàng)目需求分析,用例圖,13.2.2,需求描述,13.2 項(xiàng)目需求分析用例圖13.2.2 需求描述,13.2,項(xiàng)目需求分析,用例說(shuō)明:,玩家:實(shí)際游戲的軟件使用者,通過(guò)點(diǎn)擊圖片,獲取分?jǐn)?shù)。,Timer,:計(jì)算機(jī)系統(tǒng)的定時(shí)器,負(fù)責(zé)放置圖片,記錄圖片顯示時(shí)間。,打擊游戲:玩家點(diǎn)擊圖片,贏得分?jǐn)?shù)。,記錄分?jǐn)?shù):系統(tǒng)記錄玩家的分?jǐn)?shù),顯示玩家的最后得分。,晉級(jí):當(dāng)玩家得到的分?jǐn)?shù)達(dá)到某個(gè)規(guī)定的限值時(shí)游戲晉升到下一個(gè)級(jí)別。,13.2.2,需求描述,13.2 項(xiàng)目需求分析用例說(shuō)明:13.2.2 需求描述,13.2,項(xiàng)目需求分析,事件流:,1,玩家啟動(dòng)游戲,進(jìn)入游戲界面;,2,玩家點(diǎn)擊開(kāi)始按鈕,游戲開(kāi)始;,3,定時(shí)器在界面的某個(gè)位置放置一張圖片,4,規(guī)定時(shí)間內(nèi),點(diǎn)擊圖片,圖片消失,玩家得分;,5,系統(tǒng)顯示玩家的分?jǐn)?shù);,6,循環(huán),34,;,7,當(dāng)玩家分?jǐn)?shù)達(dá)到一個(gè)規(guī)定的值時(shí),玩家晉級(jí),顯示玩家的級(jí)別。,8,如果玩家已經(jīng)通關(guān),游戲結(jié)束;,9,循環(huán),38,;,13.2.2,需求描述,13.2 項(xiàng)目需求分析事件流:13.2.2 需求描述,13.2,項(xiàng)目需求分析,備選事件流:,3.a,玩家沒(méi)有點(diǎn)擊到圖片,并且時(shí)間片結(jié)束,游戲結(jié)束,顯示對(duì)話(huà)框“游戲結(jié)束,您的得分為,XXX,,是否重新開(kāi)始游戲!”;,8.a,玩家通關(guān)后,顯示對(duì)話(huà)框“您已經(jīng)通關(guān),是否重新開(kāi)始游戲!”;,13.2.2,需求描述,13.2 項(xiàng)目需求分析備選事件流:13.2.2 需求描述,13.2,項(xiàng)目需求分析,13.2.3,軟件界面,13.2 項(xiàng)目需求分析13.2.3 軟件界面,13.2,項(xiàng)目需求分析,1,、加分規(guī)則:,2,、晉級(jí)規(guī)則:,3,、難度規(guī)則:,13.2.4,游戲規(guī)則定義,13.2 項(xiàng)目需求分析1、加分規(guī)則:13.2.4 游戲規(guī),13.2,項(xiàng)目需求分析,1,、啟動(dòng)游戲,2,、進(jìn)行游戲,3,、游戲晉級(jí),4,、游戲通關(guān),5,、游戲失敗,6,、暫停游戲,13.2.5,游戲說(shuō)明,13.2 項(xiàng)目需求分析1、啟動(dòng)游戲13.2.5 游戲說(shuō)明,13.3,使用,UML,進(jìn)行系統(tǒng)設(shè)計(jì),進(jìn)行系統(tǒng)設(shè)計(jì)主要步驟:,首先根據(jù)對(duì)需求用例的事件流進(jìn)行分析,找到系統(tǒng)中的備選對(duì)象。,其次分析系統(tǒng)中具體對(duì)象和對(duì)象之間的關(guān)系,也就是對(duì)象之間如何進(jìn)行消息傳遞。,再次根據(jù)上面的分析,設(shè)計(jì)出系統(tǒng)順序圖或協(xié)作圖。,最后,進(jìn)行抽象得到系統(tǒng)的靜態(tài)結(jié)構(gòu)圖,-,類(lèi)圖。,13.3 使用UML進(jìn)行系統(tǒng)設(shè)計(jì)進(jìn)行系統(tǒng)設(shè)計(jì)主要步驟:,13.3,使用,UML,進(jìn)行系統(tǒng)設(shè)計(jì),從事件流描述中找出所有可能的對(duì)象:,界面:游戲的界面,圖片:打擊游戲界面上顯示的圖片,分?jǐn)?shù):游戲玩家在玩游戲中贏得的分?jǐn)?shù),級(jí)別:游戲的難度等級(jí),玩家獲得的分?jǐn)?shù)達(dá)到一定值,游戲晉級(jí),定時(shí)器:控制游戲界面中圖片的顯示時(shí)間,13.3.1,系統(tǒng)備選對(duì)象,13.3 使用UML進(jìn)行系統(tǒng)設(shè)計(jì)從事件流描述中找出所有可能,13.3,使用,UML,進(jìn)行系統(tǒng)設(shè)計(jì),進(jìn)一步分析可能還有以下對(duì)象:,棋盤(pán):游戲界面中的顯示圖片的區(qū)域,被劃分成,3,行,4,列共,12,個(gè)單元格,每個(gè)單元格中可以顯示圖片,系統(tǒng):控制和管理游戲中的系統(tǒng)事件,13.3.1,系統(tǒng)備選對(duì)象,13.3 使用UML進(jìn)行系統(tǒng)設(shè)計(jì)進(jìn)一步分析可能還有以下對(duì)象,13.3,使用,UML,進(jìn)行系統(tǒng)設(shè)計(jì),被選對(duì)象:,系統(tǒng):,System,圖片:,Picture,棋盤(pán):,Board,定時(shí)器:,Timer,級(jí)別:,GameLevel,分?jǐn)?shù):,Score,13.3.2,系統(tǒng)對(duì)象分析,13.3 使用UML進(jìn)行系統(tǒng)設(shè)計(jì)被選對(duì)象:13.3.2,13.3,使用,UML,進(jìn)行系統(tǒng)設(shè)計(jì),玩家要想開(kāi)始游戲,就需要給發(fā)一個(gè)開(kāi)始消息,給系統(tǒng)對(duì)象,System,發(fā)送一個(gè)消息,start(),13.3.2,系統(tǒng)對(duì)象分析,Player,System,start(),13.3 使用UML進(jìn)行系統(tǒng)設(shè)計(jì)玩家要想開(kāi)始游戲,就需要給,13.3,使用,UML,進(jìn)行系統(tǒng)設(shè)計(jì),系統(tǒng)對(duì)象收到開(kāi)始游戲后,首先需要顯示游戲的棋盤(pán)。這時(shí)系統(tǒng)對(duì)象,System,需要給游戲盤(pán)對(duì)象,Board,發(fā)送一個(gè)顯示棋盤(pán)的消息,displayPic(),13.3.2,系統(tǒng)對(duì)象分析,System,Board,displayPic(),13.3 使用UML進(jìn)行系統(tǒng)設(shè)計(jì) 系統(tǒng)對(duì)象收到開(kāi)始游戲,13.3,使用,UML,進(jìn)行系統(tǒng)設(shè)計(jì),顯示棋盤(pán),同時(shí)還需要在棋盤(pán)上顯示一張圖片。這時(shí)需要棋盤(pán)對(duì)象,Board,給圖片對(duì)象,Picture,發(fā)送一個(gè)消息,show(),13.3.2,系統(tǒng)對(duì)象分析,Board,Picture,show(),13.3 使用UML進(jìn)行系統(tǒng)設(shè)計(jì) 顯示棋盤(pán),同時(shí)還需要,13.3,使用,UML,進(jìn)行系統(tǒng)設(shè)計(jì),顯示玩圖片后,需要開(kāi)始記錄圖片的顯示時(shí)間。這時(shí)需要系統(tǒng)對(duì)象,System,給定時(shí)器對(duì)象,Timer,發(fā)送一個(gè)消息,start(),13.3.2,系統(tǒng)對(duì)象分析,System,Timer,Start(),13.3 使用UML進(jìn)行系統(tǒng)設(shè)計(jì) 顯示玩圖片后,需要開(kāi),13.3,使用,UML,進(jìn)行系統(tǒng)設(shè)計(jì),匯總得到協(xié)作圖,13.3.2,系統(tǒng)對(duì)象分析,13.3 使用UML進(jìn)行系統(tǒng)設(shè)計(jì)匯總得到協(xié)作圖13.3.2,13.3,使用,UML,進(jìn)行系統(tǒng)設(shè)計(jì),點(diǎn)擊圖片后,隱藏圖片,增加分?jǐn)?shù),計(jì)算晉級(jí),按照前面過(guò)程可以得到協(xié)作圖,13.3.2,系統(tǒng)對(duì)象分析,13.3 使用UML進(jìn)行系統(tǒng)設(shè)計(jì) 點(diǎn)擊圖片后,隱藏圖片,13.3,使用,UML,進(jìn)行系統(tǒng)設(shè)計(jì),前面分析了系統(tǒng)中的對(duì)象,進(jìn)一步對(duì)這些對(duì)象進(jìn)行抽象可以得到類(lèi)和類(lèi)間關(guān)系,13.3.3,系統(tǒng)類(lèi)圖設(shè)計(jì),13.3 使用UML進(jìn)行系統(tǒng)設(shè)計(jì) 前面分析了系統(tǒng)中的對(duì),13.3,使用,UML,進(jìn)行系統(tǒng)設(shè)計(jì),完成系統(tǒng)類(lèi)圖設(shè)計(jì)后繼續(xù):,編寫(xiě)系統(tǒng)設(shè)計(jì)規(guī)格說(shuō)明書(shū),詳細(xì)記錄對(duì)象的分析和設(shè)計(jì)過(guò)程,給出系統(tǒng)順序圖或協(xié)作圖,并給出說(shuō)明,給出經(jīng)過(guò)抽象后得到的類(lèi)圖,給出類(lèi)的主要屬性和方法的描述,13.3.3,系統(tǒng)類(lèi)圖設(shè)計(jì),13.3 使用UML進(jìn)行系統(tǒng)設(shè)計(jì)完成系統(tǒng)類(lèi)圖設(shè)計(jì)后繼續(xù):1,13.4,使用,UML,進(jìn)行類(lèi)設(shè)計(jì),13.4.1,添加系統(tǒng)類(lèi),13.4 使用UML進(jìn)行類(lèi)設(shè)計(jì)13.4.1 添加系統(tǒng)類(lèi),13.4,使用,UML,進(jìn)行類(lèi)設(shè)計(jì),13.4.2,類(lèi)圖設(shè)計(jì),系統(tǒng)設(shè)計(jì)類(lèi)在具體實(shí)現(xiàn)時(shí)可能被轉(zhuǎn)化成一個(gè)包,13.4 使用UML進(jìn)行類(lèi)設(shè)計(jì)13.4.2 類(lèi)圖設(shè)計(jì),13.4,使用,UML,進(jìn)行類(lèi)設(shè)計(jì),13.4.2,類(lèi)圖設(shè)計(jì),系統(tǒng)設(shè)計(jì)中的類(lèi)在實(shí)現(xiàn)中也可能還映射成一個(gè)類(lèi),例如,System,類(lèi),有時(shí)系統(tǒng)設(shè)計(jì)中的類(lèi)在實(shí)現(xiàn)是可能消失或者變成了一個(gè)屬性或方法了,13.4 使用UML進(jìn)行類(lèi)設(shè)計(jì)13.4.2 類(lèi)圖設(shè)計(jì),13.4,使用,UML,進(jìn)行類(lèi)設(shè)計(jì),13.4.3,添加屬性,對(duì)設(shè)計(jì)類(lèi)進(jìn)行細(xì)化,增加屬性,類(lèi),Level,中需要增加一個(gè)屬性,gameLevel,類(lèi),Board,中需要增加一個(gè)圖片類(lèi)的引用屬性,pic,13.4 使用UML進(jìn)行類(lèi)設(shè)計(jì)13.4.3 添加屬性,13.4,使用,UML,進(jìn)行類(lèi)設(shè)計(jì),13.4.4,添加方法,對(duì)設(shè)計(jì)類(lèi)進(jìn)行細(xì)化,例如,System,類(lèi)增加方法:,start,():開(kāi)始游戲方法。,hit,():用戶(hù)點(diǎn)擊動(dòng)作處理方法。,System,():構(gòu)造系統(tǒng)中的主要對(duì)象。,init,():初始化重要對(duì)象的屬性。,stop,():結(jié)束游戲。,addScore,():游戲加分。,addLevel,():游戲晉級(jí)。,13.4 使用UML進(jìn)行類(lèi)設(shè)計(jì)13.4.4 添加方法,13.4,使用,UML,進(jìn)行類(lèi)設(shè)計(jì),13.4.4,添加方法,例如,System,類(lèi)增加方法后類(lèi)圖,13.4 使用UML進(jìn)行類(lèi)設(shè)計(jì)13.4.4 添加方法,13.4,使用,UML,進(jìn)行類(lèi)設(shè)計(jì),13.4.5,類(lèi)圖設(shè)計(jì),細(xì)化后實(shí)現(xiàn)類(lèi)圖,13.4 使用UML進(jìn)行類(lèi)設(shè)計(jì)13.4.5 類(lèi)圖設(shè)計(jì),13.4,使用,UML,進(jìn)行類(lèi)設(shè)計(jì),13.4.5,類(lèi)圖設(shè)計(jì),System,類(lèi)的主要方法:,init(),:初始化參數(shù);,start(),:?jiǎn)?dòng)計(jì)時(shí)器,并顯示圖片;,stop(),:游戲結(jié)束;,addScore(),:計(jì)算和增加玩家分?jǐn)?shù);,addLevel(),:計(jì)算和增加玩家級(jí)別;,13.4 使用UML進(jìn)行類(lèi)設(shè)計(jì)13.4.5 類(lèi)圖設(shè)計(jì),13.4,使用,UML,進(jìn)行類(lèi)設(shè)計(jì),13.4.5,類(lèi)圖設(shè)計(jì),Timer,類(lèi)的主要方法:,Star(),:?jiǎn)?dòng)計(jì)時(shí)器;,13.4 使用UML進(jìn)行類(lèi)設(shè)計(jì)13.4.5 類(lèi)圖設(shè)計(jì),13.4,使用,UML,進(jìn)行類(lèi)設(shè)計(jì),13.4.5,類(lèi)圖設(shè)計(jì),TimeLength,類(lèi)的主要屬性和方法:,INIT_TIME_LENGTH,:初始的時(shí)間片長(zhǎng)度屬性的值,getTimeLenth(),:獲取時(shí)間片長(zhǎng)度;,setTimeLenth(),:重新設(shè)置時(shí)間片長(zhǎng)度;,13.4 使用UML進(jìn)行類(lèi)設(shè)計(jì)13.4.5 類(lèi)圖設(shè)計(jì),13.4,使用,UML,進(jìn)行類(lèi)設(shè)計(jì),13.4.5,類(lèi)圖設(shè)計(jì),Board,類(lèi)的主要方法:,displayPic(),:顯示一張圖片;,hidePic(),:隱藏圖片;,13.4 使用UML進(jìn)行類(lèi)設(shè)計(jì)13.4.5 類(lèi)圖設(shè)計(jì),13.4,使用,UML,進(jìn)行類(lèi)設(shè)計(jì),13.4.5,類(lèi)圖設(shè)計(jì),Score,類(lèi)的主要方法:,addScore(),:點(diǎn)擊圖片正確后,玩家加分;,displayScor