




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
一、 實(shí)驗(yàn)?zāi)康氖褂媒M合模式實(shí)現(xiàn)一個圖形界面,其中包括:文本(Line),矩形(Rectangle),點(diǎn)(Dot),線(Line),圖形(Picture)。二、 實(shí)現(xiàn)方法1、 采用VC++環(huán)境2、 采用迭代器來存儲葉子節(jié)點(diǎn)三、 組合模式的思想對彖組合成樹形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu)。用戶使用Component類接II與組合結(jié)構(gòu)中的對彖進(jìn)行交互。如呆接收者是一個葉節(jié)點(diǎn),則直接處理請求。如果接收者是Composite,它通常將請求發(fā)送給它的子部件,在轉(zhuǎn)發(fā)請求之前與/或之后可能執(zhí)行一些輔助操作。Composite使得用戶對單個對彖和組合對象的使用具有一致性。四、 模式設(shè)計的UML類圖的繪制制作者:王婷婷2011年11月25日五、程序源代碼iiiclude<iostieam>iiiclude<list>//組合類中的抽象基類classGraphic{public:GraphicQ{}virtual?G【aphic(){}virmalvoidDraw()=0;//i^虛函數(shù),提供接II沒有默認(rèn)的實(shí)現(xiàn)vntualvoidAdd(Grapluc*pCluld);//J^函數(shù),提供接II沒有默認(rèn)的實(shí)現(xiàn)virtualvoidRemove(Grapliic*pChild);virtualGraphic*GetChild(iiitliliidex);};classLiiie:publicGrapluc{public:Lme(){}virtual^Liiie(){}virtualvoidDiaw();};classDot:publicGraphic{public:Dot(){}virtual~Dot(){}virtualvoidDiaw();};classText:publicGraphic{public:Text(){}virtual-TextQ{}virtualvoidDiaw();};classRectangle:publicGraphic{public:Rectangle(){}virtual^Rectangle(){}virtualvoidDiaw();};〃派生自Component,是其中的含有子件的組件的基類classPicture:publicGraphic{public:Picture(){}virtual-PictuieO;virtualvoidDrawQ;virtualvoidAdd(Grapliic*pCliild);virtualvoidRemove(Grapliic*pChild);virtualGraphic*GetChild(iiitlihidex);private:〃采用list容器去保存子組件std::list<Graphic*>m_ListOfGraphic;};/^Graphic成員函數(shù)的實(shí)現(xiàn)*/voidGraphic::Add(Graphic*pChild){}voidGraphic::Remove(Graphic*pCluld){}Giapluc*Grapluc::GetCluld(intliliidex){return0;}嚴(yán)Line成員函數(shù)的實(shí)現(xiàn)*/voidLiiie::Draw(){pnntfC,Line\nM);}/*Dot成員函數(shù)的實(shí)現(xiàn)*/voidDot::Draw(){pnntfC,Dot\nH);}/^Rectangle成員函數(shù)的實(shí)現(xiàn)*/voidRectangle::Draw()pnntf(MRectaiigle\nH);}/*Text成員函數(shù)的實(shí)現(xiàn)*/voidText::Draw(){pnntf(,,Text\nn);}/^Picture成員函數(shù)的實(shí)現(xiàn)*/Pictuie:>Picture(){std::list<Graphic*>::iteratoriterljter2,temp;fdi(iteil=m_ListOfGraphic.begm(),iter2=m_ListOfGrapliic.end();iterl!=iter2;){temp=iterl;++iterl;delete(*temp);}}voidPicture::Add(Grapliic*pCluld){m_ListOfGraphic.push_back(pChild);}voidPicture::Remove(Grapliic*pChild){std::list<Grapliic*>::iteratoriter;fdi(itei-m_ListOfGrapliic.beginQ;itei!=m_ListOfGiaphic.end();iter-H-){m_ListOfGraphic.erase(iter);}//iter=fiiid(m_ListOfGraphic.begm(),m_ListOf<jraphic.end().pChild);//查找pChild所在的位置if(m_ListOfGraphic.end()!=itei){m_ListOfGiaphic.erase(iter);}}Grapliic*Picture::GetCluld(intlihidex)if(iiIndex<=0||nIndex>m_ListOfGraphic.sizeQ)ireturnNULL;}std::list<Graphic*>::iteratoriterl,iter2;inti;for(i=1,iterl=m_ListOfGrapluc.begiii()jter2=m_ListOfGraphic.end();iter1!=iter2;++iterl、++i)Iif(i==iiliidex)break;}return*iterl;}voidPicture::DrawQ{std::cout?HDrawbypicture\nH;std::list<Graphic*>::iteratoriterl,iter2;fbi(iterl=m_ListOfGraphic.begm(),iter2=m_ListOfGiapliic.end();iterl?=iter2;++iteil){(*iterl)->DiawQ;}}iiitmain(){Graphic*pTextl=newTextQ;Graphic*pLmel=newLiiie();Graphic*pDotl=newDot();Graphic*pRectanglel=newRectangleQ;Graphic*pPictuie=newPictuieQ;pPicture->Add(pLine1);pPicture->Add(pDotl);pPicture->Add(pText1);pPictuie->Add(pRectaiigle1);//pPicture->GetChild(4)->Draw();pPicture->Draw();deletepPicture;system(npausen);return0;}六運(yùn)行結(jié)果七、實(shí)驗(yàn)中的問題與總結(jié)1實(shí)驗(yàn)中遇到的問題:在用迭代器存儲節(jié)點(diǎn)時,getcluldO中的循壞每進(jìn)行一次,都要返回一個迭代器的值,但是利用氏tum語句只能返回一個,就退出到了調(diào)用函數(shù)。解決辦法:2實(shí)驗(yàn)總結(jié)(1) 通過本次實(shí)驗(yàn),加深了對組合模式的理解。實(shí)現(xiàn)了用戶對葉子和組合的平等操作。對
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 第10課 我能行 (教學(xué)設(shè)計)-蘇教版心理健康四年級上冊
- 2025年春初中道德與法治七年級下冊教案設(shè)計 第十一課 第3框 嚴(yán)于律己
- 六年級信息技術(shù)下冊 第四單元 第21課《多變的天氣》教學(xué)設(shè)計 冀教版
- 2025至2030年中國高速數(shù)控雕銑機(jī)行業(yè)發(fā)展研究報告
- 三年級體育上冊 割麥子迎面接力跑教學(xué)設(shè)計
- 2025至2030年中國筆筒式老花鏡行業(yè)發(fā)展研究報告001
- 無縫軌道施工方案
- python練手的小項目
- 安全運(yùn)營體系建設(shè)
- 七年級道德與法治下冊 第三單元 在集體中成長 第七課 共奏和諧樂章 第1框 單音與和聲教學(xué)設(shè)計 新人教版
- 年會頒獎晚會頒獎盛典簡約PPT模板
- 綏江縣農(nóng)村飲水安全工程水質(zhì)檢測中心建設(shè)方案
- 鉗工-實(shí)操技能試題
- 中國傳統(tǒng)故事英文花木蘭二篇
- GB/T 3091-2008低壓流體輸送用焊接鋼管
- GB/T 22004-2007食品安全管理體系GB/T 22000-2006的應(yīng)用指南
- 上消化道早癌篩查須知
- 永大新梯種Y15電梯調(diào)試手順及故障碼
- DB32-T 4416-2022《高延性纖維增強(qiáng)水泥基復(fù)合材料加固砌體結(jié)構(gòu)應(yīng)用技術(shù)規(guī)程》
- 第5課《孔乙己》課件(共19張ppt) 部編版語文九年級下冊
- 4.1《廚房里的物質(zhì)與變化》課件
評論
0/150
提交評論