面向對象復習提綱_第1頁
面向對象復習提綱_第2頁
面向對象復習提綱_第3頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、c 一、復習提綱(填空,判斷,選擇)1. UML的基本概念、名稱、歷史、和UML2.0規(guī)范的結構和13種圖以及所屬類型。以及每種圖的所屬描述軟件特征的類型。名稱:Unified Modeling Language,統(tǒng)一建模語言基本概念:用圖形符號來表達面向對象設計歷史:UML的發(fā)展歷史20072TJML2丄 120052006 L N1L 2.019972003 UML Lx 其中包括 13、1.4和 版公眾反饋1997.9公布UML 14 199? 11*17 UML 1-1 被OMG采納為標準1997.1公布1996.6和 1996J0 UML 0+9&0.91合作伙伴意見一一 U

2、ML三友提出OOPSLAS Unified Method 0+8面向對象分析設計 /方法學之戰(zhàn)Booch93 OMT 22009Boo"91 OMT-1其他方法 OOSE丿17private:Brain b;這是組合public:void fun 1()b.fu n1();這是委托;組合和私有繼承實現(xiàn)的是has-a關系(A包含/私有繼承B ,則B是A的成員/基類子對象)公有繼承實現(xiàn)的是is-a關系(A公有繼承B,則A是B的子類型)5. 抽象類的作用在C+中,含有純虛擬函數(shù)的類稱為抽象類,它不能生成對象。抽象類的主要作用是通過 它為一個類族建立一個公共的接口,使它們能夠更有效地發(fā)揮多態(tài)

3、特性。6. 支持多視感標準的抽象工廠( Abstract Factory )模式,GUIFactory的創(chuàng)建特點,以及 如何根據(jù)用戶輸入不同,建立多視感標準。 GUIFactory的創(chuàng)建特點:1. GuiFactory實例可以是全局變量、一個眾所周知的類的靜態(tài)成員,或者如果整個用戶界面 是在一個類或一個函數(shù)中創(chuàng)建的,則可以是局部變量,此時一般用Singleton來創(chuàng)建。2. GUIFactory實例在用來創(chuàng)建窗口組件之前、所需視感標準確定之后創(chuàng)建。 依據(jù)用戶輸入不同,建立多視感標準:GUIFactoryProxy代理:為其他對象提供一個代理以控制對這個對象的訪問。 guiFactory;con

4、 st char* styleName = gete nv(“ LOOK_AND_FE/E用戶;的輸入,比如環(huán)境變量之類的if(strcmp(styleN ame, “ Motif ” ) = 0)guiFactory = new MotifFactory;else if (strcmp(styleName,“ Presentation_Manager” ) = 0)guiFactory = new PMFactory;else guiFactory = new DefaultGUIFactory;7. 框架和設計模式的關系相同點:都是對已有的代碼或者模式的重用不同點:1設計模式比框架更抽象。

5、框架可以用代碼來表示,而設計模式只有其實例才能表示為代碼。 框架能夠被直接執(zhí)行和復用,設計模式復用時,需要被實現(xiàn)。2設計模式是比框架更小的體系結構元素。一個典型的框架包含了多個設計模式。3框架比模式更加特征化,框架總是針對一個特定的應用領域,而模式主要用于解決某一類 問題。8. Decorator模式下圖元和邊框,滑動條的關系9.我們講的幾個典型模式的意圖 Adapter適配器:將一個類的接口轉換成客戶希望的另外一個接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。 Fa? ade外觀:為子系統(tǒng)中的一組接口提供一個一致的界面,F(xiàn) a c a d e 模式定義了一

6、個高層接口,這個接口使得這一子系統(tǒng)更加容易使用。 Flyweight享元:運用共享技術有效地支持大量細粒度的對象。 Chain of Respo nsibility職責鏈:為解除請求的發(fā)送者和接收者之間耦合,而使多個對象都有機會處理這個請求。將這些對象連成一條鏈,并沿著這條鏈傳遞該請求,直到有一個對象處理它。10.幾個典型模式的實現(xiàn)方式-Fa?ade 外觀:-Flyweight 享元:-Cha in of Resp on sibility 職責鏈:-Adapter中的類適配器:-Adapter中的對象適配器:-Proxy 代理:11. 動態(tài)綁定和多態(tài)-多態(tài):同樣的消息被不同類型的對象接收時導致

7、不同的行為。動態(tài)綁定:C+中的虛函數(shù)(用 virtual聲明),將函數(shù)調(diào)用綁定到具體函數(shù)的過程是在程 序運行階段動態(tài)確定的,叫做動態(tài)綁定。12. 設計模式中,繼承和組合與復用的關系繼承的優(yōu)點:新類易實現(xiàn)、易修改或擴展。繼承的缺點:繼承復用破環(huán)包裝,白箱復用;超類發(fā)生變化,子類不得不改變;繼承的實 現(xiàn)是靜態(tài)的,不能在運行時改變。組合的優(yōu)點:新對象存取成分對象的唯一方法是通過成分對象的接口;黑箱復用,因為成 分對象的內(nèi)部細節(jié)是新對象所看不見的;支持包裝;所需的依賴較少;每一個新的類可以將焦點集中在一個任務上; 這種復用可以在運行時間內(nèi)動態(tài)進行,新對象可以動態(tài)的引用與成分對象類型相同的對象;作為復用

8、手段可以應用到幾乎任何環(huán)境中去。組合的缺點:系統(tǒng)中會有較多的對象需要管理。優(yōu)先采取組合復用的方式,可以在運行時動態(tài)配置組件的功能,并防止類層次規(guī)模的爆炸性增長。13. 設計模式的概念、要素、實現(xiàn)方式概念:設計模式是用來在特定場景下解決一般設計問題的類和相互通信的對象的描述。要素:模式名稱、問題、解決方案、效果實現(xiàn)方式:基于面向對象的語言實現(xiàn)14.設計模式中Lexi文本編輯器中文檔結構和Composite模式的概念Gtyph工ChernctAr1ik1interswtsfPciinil pji QDraw(.)Jchareip bH1kRawPoFygonrwtum UU9 丙Draw(_)-W

9、inctow wj A!iit>r50cts(Poirii 加&口心1,甘 g,冊用children*Orncl*rirvgd g into61 略刊 ctt p<mrrinii ilex c in ch母加riIf G->lrTtwerelB(p) reaim tnu9toral c ine c 15 poiitrwd cony 肌部分-整體”的層次結構。它使得客Composite (組合)模式:將對象組合成樹形結構以表示 戶對單個對象和復合對象的使用具有一致性。15. 各種設計模式的分類創(chuàng)建型:Abstract Factory抽象工廠、Builder生成器、Fac

10、tory Method工廠方法(或稱Simple Factory 簡單工廠)、Prototype 原型、Singleton 單體結構型:Adapter 適配器、Bridge 橋接、Composite 組合、Decorator 裝飾、Fa?ade 外觀、 Flyweight 享元、Proxy 代理行為型:Cha in of Resp on sibility 職責鏈、Comma nd 命令、In terpreter 解釋器、Iterator 迭代、 Mediator 中介者、Memento 備忘錄、Observer 觀察者、State狀態(tài)、Strategy 策略、Template Method模版

11、方法、Visitor訪問者16. 看圖識別模式,一些經(jīng)典課程講義中的圖片例子 設計模式的典型圖片見10,以下舉幾個書上的典型例子 Composite 例子:見 14 的 Glyph 類-Strategy 例子:-Decorator 例子:見 8 的 Mono Glyph 類-Abstract Factory 例子:見 6 的 GUIFactory 類-Bridge 例子:-Comma nd 例子:CommandP吉冷坤Comm合ndFontCommndlSaveCommand 哺ExecuieO <p burfwExeculeO £EeculeO 9QuilConiimandE

12、xecirteO 9paste bufferinto ckKXKnefifinewForrtmake selectedpod up m dial box that tats text appear in newFontuser name ffte docuimenh and llien save iheII (dOcumen! Is modieiJ) 卜 save->ExecuteQquit tfirQ apphcalioridocLimerrt under thal nam$Iterator 例子:-Proxy 例子:-Fa?ade 例子:CompileStream1II1IIii!

13、'*Tgk-eivi1ibil>iiiIH1I*1li1pi!ii .ParserSymbolBytecocteSlresimL*iProgpramNodeBui Icter i' 丁一Cwgnww 心statcmeulNodcStackMachjncfkidfiini&ratOF1RISCCodcG&rberatorVa riabloNodkEi17. 鏈表的插入內(nèi)容單鏈表的插入:Node<int>* q=new Node<int>(27,p->Next(); p_>Next()=q;雙向鏈表的插入:在g燈所指結點之后

14、插入一個新結點9指向 該結點)如右下圖,操作代碼如下:p->prev = cun:p->nest= curr->tiext: cuir- > next->prev=p ;在3燈所指結點之前插入P所指結點的操作如 右下圖(b),操作代碼為tp->next=curr;p->prev = cu£i->prev;cun->prev->next=p:CUEITcurr->prev=p;(b)在cun之前楠入注意:其中有些步驟可以交換次序,由于情況多樣,無法一一列舉,考試時視具體情況而 定。原則是不能出現(xiàn)節(jié)點自己到自己的自循環(huán)。二

15、、復習提綱(分析、程序填空、問答、編程)1. UML的用例圖要會畫自動售貨機的 UML用例圖:2. Singleton模式要會class Sin glet onpublic:static Sin glet on* In sta nce()if(_in sta nce=0) _in sta nce=new Sin glet on(); retur n _in sta nee; protected:Sin gleto n()private:Sin glet on* _in sta nee;;3. 私有繼承和對象組合的異同(舉例說明)在Adapter模式中,私有繼承可以形成類適配器,組合可以形成對象

16、適配器。無論何種適 配器,Adaptee都是Adapter的子對象,Adapter都實現(xiàn)了接口轉換,并都可以添加新功能。類適配器:1匹配一個類及所有它的子類時,類Adapter將不能勝任工作。2. Adapter可以重定義 Adaptee的部分行為。3. 不需要額外的指針間接得到Adaptee對象適配器:1. 允許Adapter與Adaptee本身及其所有子類同時工作。2. 重定義Adaptee的行為比較困難。4. 代理模式、適配器模式,組合模式要會實現(xiàn)。代理模式:class Graphicpublic:virtual Graphic();virtual void Draw(c onst Po

17、int& at) = 0;virtual void Han dleMouse(Eve nt& event) = 0;virtual con st Poi nt& GetExte nt() = 0;virtual void Load(istream& from) = 0;virtual void Save(ostrea m& to) = 0; protected:Graphic();class Image : public Graphicpublic:lmage(c onst char* file);/loads image from a filevirt

18、ual lmage();virtual void Draw(c onst Point& at);virtual void Han dleMouse(Eve nt& even t);virtual const Point& GetExtent();virtual void Load(istream& from);virtual void Save(ostrea m& to);private:/ .;class ImageProxy : public Graphicpublic:lmageProxy(c onst char* imageFile);virtu

19、al ImageProxy();virtual void Draw(c onst Point& at);virtual void Han dleMouse(Eve nt& even t);virtual const Point& GetExtent();virtual void Load(istream& from);virtual void Save(ostrea m& to);protected:Image* GetImage();private:Image* _image;Point _exte nt; char* _fileName;ImageP

20、roxy:ImageProxy (const char* fileName)_fileName = strdup(fileName);_exte nt = Poi nt:Zero;/ don't know exte nt yetm age = 0;Image* lmageProxy:Getlmage()if (_image = 0)m age = new lmage(_fileName);returnm age;const Point& ImageProxy:GetExte nt ()if (_exte nt = Poi nt:Zero)_exte nt = Getlmage(

21、)->GetExte nt();return _exte nt;void lmageProxy:Draw (const Point& at)GetImage()->Draw(at);void lmageProxy:Ha ndleMouse (Eve nt& event)GetImage()->Ha ndleMouse(eve nt);void lmageProxy:Save (ostrea m& to)to << _exte nt << _fileName;void lmageProxy:Load (istream& f

22、rom)from >> _exte nt >> _fileName;適配器:(上次說的必考的FixedStack、Array和Stack)template<type name T>class Stack/Targetprivate:int size;public:Stack():size(O)int Size()return size; bool isEmpty()retur n size=0; virtual void push(T& elem)=0; virtual T pop()=0;template<type name T> cl

23、ass Array/Adapteeprivate:int size;T* _array;public:Array(i nt sz):size(sz)_array=new Tsz; Array()delete _array; int Size()return size;T& ElementAt(int i)return _arrayi;template<typen ame T>class FixedStack1:public Stack,private Array/ 類適配器public:FixedStack1(i nt size):Array(size)virtual vo

24、id push(T& elem)Array:Eleme ntAt(size+)=elem;實現(xiàn)virtual T pop()retur n Array:Eleme ntAt(-size); bool isFull()retur n size=Array:Size(); int Capacityretur n Array:Size();template<type name T>class FixedStack2:public Stack private:Array<T>* array;public:FixedStack2(i nt size)array=new A

25、rray<T>size;FixedStack2(Array<T>* a):array(a)實現(xiàn)新方法新方法,并且是轉發(fā)請求/對象適配器構造方法1:聚合(內(nèi)部對象)構造方法2:適配外部對象實現(xiàn)實現(xiàn)新方法新方法,并且是轉發(fā)請求virtual void push(T& elem)array->Eleme ntAt(size+)=elem; virtual T pop()return array->ElementAt(-size); bool isFull()retur n size=array->Size(); int Capacityretur n

26、 array->Size();-組合模式:Gtyphg劇Wnd如 他 MG如h rrtf.pRawchildren*Oi1p i iH IPolygoni iinr54fi Ti intf1rtturrH point p4:Dr之刪di禍卻 ctt pcnfitinri jinfersHKls ttiis dmract«r1I?OrawWndlnw 柚 intorswtsf Point p| Q1ex aft C m chddrenIf c-j-tnterwO54:p) reaim tmDra-Winctow wj A lnl«inHC:MP0Mt p)Draw(.)

27、toral c in chudrn e c 15 poiitrwd cony 肌 dD出何class Glyphpublic:virtual void Draw(Wi ndow* w)=0;virtual bool In tersects(Po int p)=0;virtual void In sert(Glyph g,i nt i)=0;class Character:public Glyphprivate:char c;public:void Draw(Wi ndow* w)w->DrawCharacter(c);bool In tersects(Po int p)if(.)/ 判斷條件:p in tersects this characterreturn true;elsereturn false;class Recta ngle:public Glyphpublic:void Draw(Wi ndow* w)bool In tersects(Po int p)if(.)/ 判斷條件:p in tersects this rectan glereturn true;elsereturn false;class

溫馨提示

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

評論

0/150

提交評論