面向?qū)ο蟪绦蛟O(shè)計(jì)復(fù)習(xí)資料_第1頁(yè)
面向?qū)ο蟪绦蛟O(shè)計(jì)復(fù)習(xí)資料_第2頁(yè)
面向?qū)ο蟪绦蛟O(shè)計(jì)復(fù)習(xí)資料_第3頁(yè)
面向?qū)ο蟪绦蛟O(shè)計(jì)復(fù)習(xí)資料_第4頁(yè)
面向?qū)ο蟪绦蛟O(shè)計(jì)復(fù)習(xí)資料_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當(dāng)或者侵權(quán),請(qǐng)聯(lián)系改正或者刪除。1.對(duì)象(1)從概念層面講,對(duì)象是某種擁有責(zé)任的抽象。(2)從規(guī)格層面講,對(duì)象是一系列能夠被其它對(duì)象使用的公共接口。(3)從語(yǔ)言實(shí)現(xiàn)層面講,對(duì)象封裝了代碼和數(shù)據(jù)。2.軟件開發(fā)中的經(jīng)典階段:需求、分析、設(shè)計(jì)、規(guī)范、實(shí)現(xiàn)、測(cè)試、部署、維護(hù)。3.設(shè)計(jì)7原則:開閉原則、里氏代換原則、依賴倒轉(zhuǎn)原則、合成/聚合復(fù)用原則、迪米特原則、接口隔離原則、單一職責(zé)原則。4.面向?qū)ο蟮姆椒▽W(xué):UML(統(tǒng)一建模語(yǔ)言)、RUP(統(tǒng)一軟件開發(fā)過(guò)程)、XP(極限編程)。開發(fā)方法:Booch、Coad、OMT、UML、OOSE、Wirfs—Brock5.OOA——運(yùn)用面向?qū)ο蠓椒ㄟM(jìn)行需求分析。OOD——運(yùn)用面向?qū)ο蠓椒ㄟM(jìn)行系統(tǒng)設(shè)計(jì)。OOP——運(yùn)用面向?qū)ο蠓椒ㄟM(jìn)行程序設(shè)計(jì)。6.OOA的基本任務(wù):是運(yùn)用面向?qū)ο蟮姆椒?對(duì)問(wèn)題域和系統(tǒng)責(zé)任進(jìn)行分析和理解,對(duì)其中的事物和它們之間的關(guān)系產(chǎn)生正確的認(rèn)識(shí),找出描述問(wèn)題域及系統(tǒng)責(zé)任所需的類及對(duì)象,定義這些類和對(duì)象的屬性和操作,以及它們之間所形成的結(jié)構(gòu)、靜態(tài)聯(lián)系和動(dòng)態(tài)聯(lián)系。最終目的:是產(chǎn)生一個(gè)符合用戶需求,并能夠直接反映問(wèn)題域和系統(tǒng)責(zé)任的OOA模型及其詳細(xì)說(shuō)明。優(yōu)點(diǎn):(1)加強(qiáng)了對(duì)問(wèn)題域和系統(tǒng)責(zé)任的理解。(2)改進(jìn)與分析有關(guān)的各類人員之間的交流。(3)對(duì)需求的變化具有較強(qiáng)的適應(yīng)性。(4)支持軟件復(fù)用。OOA的三大策略是:屬性策略、方法策略、對(duì)象策略。7.(1)封裝:是指對(duì)象在其操作中隱藏屬性。它是一種信息隱蔽技術(shù),用戶只能看見對(duì)象封裝界面上的信息,對(duì)象的內(nèi)部實(shí)現(xiàn)對(duì)用戶是隱蔽的。封裝的目的是使對(duì)象的使用者和生產(chǎn)者分開,使對(duì)象的定義和實(shí)現(xiàn)分開。例如:要從同事那里借錢,在商店購(gòu)買食物,就不會(huì)搶奪同事的錢包,大翻一通,看看里面是否有足夠的錢。而應(yīng)該詢問(wèn)她們是否能夠借你一些錢,她們就會(huì)自己翻錢包。以表示圓的一個(gè)對(duì)象作為封裝的例子。圓的操作應(yīng)能計(jì)算出半徑、直徑、周長(zhǎng)和面積。假定選擇存儲(chǔ)直徑,要訪問(wèn)直徑的程序員都會(huì)選擇存儲(chǔ)直徑屬性,而不是經(jīng)過(guò)”獲取直徑”的操作來(lái)訪問(wèn)。如果在軟件的后續(xù)版本中要存儲(chǔ)的是半徑,就必須找出系統(tǒng)中直接訪問(wèn)直徑的所有代碼,并更正它們,有了封裝,就不會(huì)有問(wèn)題。(2)繼承:能夠指定類從父類中獲取一些特性,再添加它自己的獨(dú)特特性。繼承是類間的基本關(guān)系,它是基于層次關(guān)系的不同類共享數(shù)據(jù)和操作的一種機(jī)制。父類中定義了其所有子類的公共屬性和操作,在子類中除了定義自己特有的屬性和操作外,能夠繼承父類的屬性和操作,也能夠?qū)Ω割愔械牟僮髦匦露x其實(shí)現(xiàn)方法。例如:在面向?qū)ο笾?我們能夠把洗衣機(jī)、電冰箱、微波爐、收音機(jī)看成是家用電氣類的子類,也能夠說(shuō)家用電器類是這些類的超類。家用電器類具有的屬性O(shè)nOffSwitch和electricWire,具有turnOn()和turnOff()操作。因此,如果你知道某物是家用電器,那么就會(huì)立即知道它具有家用電器類的屬性和操作,這種關(guān)系就是繼承。每個(gè)家用電器類的子類都繼承了家用電器類的特征。同時(shí),每個(gè)子類都增加了自己的屬性和操作。(3)多態(tài):是指同一操作作用于不同的對(duì)象上能夠有不同的解釋,并產(chǎn)生不同的執(zhí)行結(jié)果。例如:”畫”操作,作用在”矩形”對(duì)象上,則在屏幕上畫一個(gè)矩形;作用在”圓”對(duì)象上,則在屏幕上畫一個(gè)圓。也就是說(shuō),相同操作的消息發(fā)送給不同對(duì)象時(shí),每個(gè)對(duì)象將根據(jù)自己所屬類中定義的這個(gè)操作方法去執(zhí)行,從而產(chǎn)生不同的結(jié)果。6.RUP(統(tǒng)一軟件開發(fā)過(guò)程):是一個(gè)面向?qū)ο笄一诰W(wǎng)絡(luò)的程序開發(fā)方法論。RUP仿佛一個(gè)在線的指導(dǎo)者,它能夠?yàn)樗蟹矫婧蛯哟蔚某绦蜷_發(fā)提供指導(dǎo)方針,模版以及事例支持。RUP是理解性的軟件工程工具,它把開發(fā)中面向過(guò)程的方面和其它開發(fā)的組件整合在一個(gè)統(tǒng)一的框架內(nèi)。RUP的本質(zhì):(1)RUP是風(fēng)險(xiǎn)驅(qū)動(dòng)的、基于UseCase技術(shù)的、以架構(gòu)為中心的、迭代的、可配置的軟件開發(fā)流程。(2)我們能夠針對(duì)RUP所規(guī)定出的流程,進(jìn)行客戶化定制,定制出適合自己組織的實(shí)用的軟件流程。因此RUP是一個(gè)流程定義平臺(tái),是一個(gè)流程框架。RUP中有9個(gè)核心工作流,分為6個(gè)核心過(guò)程工作流(商業(yè)建模、需求、分析和設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試、部署工作流)以及3個(gè)核心支持工作流(配置和變更管理、項(xiàng)目管理、環(huán)境工作流)。盡管6個(gè)核心過(guò)程工作流可能使人想起傳統(tǒng)瀑布模型中的幾個(gè)階段,但應(yīng)注意迭代過(guò)程中的階段是完全不同的,這些工作流在整個(gè)生命周期中一次又一次被訪問(wèn)。9個(gè)核心工作流在項(xiàng)目中輪流被使用,在每一次迭代中以不同的重點(diǎn)和強(qiáng)度重復(fù)。8.RUP是一個(gè)基于6個(gè)最佳開發(fā)實(shí)踐的流程定義產(chǎn)品:(1)迭代式開發(fā)(2)需求管理(3)基于組建的體系架構(gòu)(4)可視化建模(5)持續(xù)的質(zhì)量管理(6)配置管理。9.設(shè)計(jì)模式:是一套被重復(fù)使用、多數(shù)人知曉的、經(jīng)過(guò)分類編目的、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)。使用設(shè)計(jì)模式是為了可重用代碼、讓代碼更容易被她人理解、保證代碼可靠性。毫無(wú)疑問(wèn),設(shè)計(jì)模式于己于她人于系統(tǒng)都是多贏的,設(shè)計(jì)模式使代碼編制真正工程化,設(shè)計(jì)模式是軟件工程的基石,如同大廈的一塊塊磚石一樣。分類:創(chuàng)立型模式、行為型模式、結(jié)構(gòu)型模式、Singleton模式。1.使用簡(jiǎn)單工廠模式設(shè)計(jì)計(jì)算器程序//Computer.javapublicclassComputer{publicstaticvoidmain(String[]args)throwsIOException{ StringstrA; StringstrB; StringstrO; try{BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in)); System.out.print("請(qǐng)輸入數(shù)據(jù)A:"); strA=br.readLine(); System.out.print("請(qǐng)選擇運(yùn)算符號(hào)(+、-、*、/):"); strO=br.readLine(); System.out.print("請(qǐng)輸入數(shù)據(jù)B:"); strB=br.readLine(); StringstrResult=""; Operationoper=null; IFactoryoperFactory=null; if(strO.equals("+")){ operFactory=newAddFactory(); } if(strO.equals("-")){ operFactory=newSubFactory(); } oper=operFactory.createOperation(); oper.SetNumberA(Double.valueOf(strA).doubleValue()); oper.SetNumberB(Double.valueOf(strB).doubleValue()); strResult=Double.toString(oper.GetResult()); System.out.print(strResult); } catch(Exceptione){ }}}優(yōu)點(diǎn):簡(jiǎn)單工廠模式就是由一個(gè)工廠類根據(jù)參數(shù)來(lái)決定創(chuàng)立出哪一種產(chǎn)品類的實(shí)例。專門負(fù)責(zé)將大量有共同接口的類實(shí)例化,而且不必事先知道每次是要實(shí)例化哪一個(gè)類的模式。2.策略模式:商場(chǎng)促銷publicclassContext{publicStrategystrategy;publicContext(charname)throwsException{switch(name){case‘A’:strategy=newConcreteStrategyA();break;case‘B’:strategy=newConcreteStrategyB();break;case‘C’:strategy=newConcreteStrategyC();break;default:thrownewException(”沒(méi)有此類輸入”);}}publicvoidcontextInterface(){strategy.algorithInterface();}}publicabstractclassStrategy{publicabstractvoidalgorithInterface();}publicclassConcreteStrategyAextendsStrategy{publicabstractvoidalgorithInterface(){system.out.println(”打折算法”);}}publicclassConcreteStrategyBextendsStrategy{publicabstractvoidalgorithInterface(){system.out.println(”滿100送60算法”);}}publicclassConcreteStrategyCextendsStrategy{publicabstractvoidalgorithInterface(){system.out.println(”正常收費(fèi),不參加活動(dòng)!”);}}publicclassClient{publicstaticvoidmain(String[]args)throwsException{Contextcontext;context=newContext(‘A’);context.contextInterface();}}ContextContext+contextInterface():voidStrategy+algorithInterface():voidconcreteStrategyA+algorithInterface():voidconcreteStrategyBconcreteStrategyC+algorithInterface():void+algorithInterface():void特點(diǎn):(1)Strategy屬于設(shè)計(jì)模式中的對(duì)象行為型模式,主要是定義一系列的算法,把這些算法一個(gè)個(gè)封裝成單獨(dú)的類,使它們可相互替換。本模式使得算法可獨(dú)立于使用它的客戶而變化。(2)它提供了一種用多個(gè)行為中的一個(gè)行為來(lái)配置一個(gè)類的方法。(3)它需要使用一個(gè)算法的不同變體。(4)它以避免暴露復(fù)雜的、與算法相關(guān)的數(shù)據(jù)結(jié)構(gòu)。(5)一個(gè)類定義了多種行為,而且這些行為在這個(gè)類的操作中以多個(gè)條件語(yǔ)句的形式出現(xiàn)。將相關(guān)的條件分支移入它們各自的Strategy類中以代替這些條件語(yǔ)句。3.裝飾模式舉Adapter中的打樁示例,在Adapter中有兩種類:方形樁、圓形樁,Adapter模式展示如何綜合使用這兩個(gè)類,在Decorator模式中,我們是要在打樁時(shí)增加一些額外功能,比如:挖坑,在樁上釘木板等,不關(guān)心如何使用兩個(gè)不相關(guān)的類。publicinterfaceWork{publicvoidinsert();}publicclassSquarePegimplementsWork{publicvoidinsert(){System.out.println("方形樁插入");}}publicclassDecoratorimplementsWork{privateWorkwork;

//額外增加的功能被打包在這個(gè)List中privateArrayListothers=newArrayList();//在構(gòu)造器中使用組合new方式,引入Work對(duì)象;publicDecorator(Workwork){this.work=work;

others.add("挖坑");others.add("釘木板");

}publicvoidinsert(){newMethod();}publicvoidnewMethod(){otherMethod();

work.insert();}publicvoidotherMethod(){ListIteratorlistIterator=others.listIterator();

while(listIterator.hasNext())

{System.out.println(((String) (listIterator.next()))+"正在進(jìn)行");}}特點(diǎn):動(dòng)態(tài)地給一個(gè)對(duì)象添加一些額外的職責(zé)。就增加功能來(lái)說(shuō),使用裝飾模式相比用生成子類方式達(dá)到功能的擴(kuò)充顯得更為靈活。我們一般能夠使用繼承來(lái)實(shí)現(xiàn)功能的拓展,如果這些需要拓展的功能種類很繁多,那么勢(shì)必生成很多子類,增加系統(tǒng)的復(fù)雜性,同時(shí),使用繼承實(shí)現(xiàn)功能拓展,我們必須可預(yù)見這些拓展功能,這些功能是編譯時(shí)就確定了,是靜態(tài)的。使用Decorator時(shí)這些功能需要由用戶動(dòng)態(tài)決定加入的方式和時(shí)機(jī).裝飾模式提供

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論