![標(biāo)準(zhǔn)實(shí)驗(yàn)報(bào)告(C++)-1(共8頁(yè))_第1頁(yè)](http://file4.renrendoc.com/view/0de67e58a4f14533bb89254d719f0c21/0de67e58a4f14533bb89254d719f0c211.gif)
![標(biāo)準(zhǔn)實(shí)驗(yàn)報(bào)告(C++)-1(共8頁(yè))_第2頁(yè)](http://file4.renrendoc.com/view/0de67e58a4f14533bb89254d719f0c21/0de67e58a4f14533bb89254d719f0c212.gif)
![標(biāo)準(zhǔn)實(shí)驗(yàn)報(bào)告(C++)-1(共8頁(yè))_第3頁(yè)](http://file4.renrendoc.com/view/0de67e58a4f14533bb89254d719f0c21/0de67e58a4f14533bb89254d719f0c213.gif)
![標(biāo)準(zhǔn)實(shí)驗(yàn)報(bào)告(C++)-1(共8頁(yè))_第4頁(yè)](http://file4.renrendoc.com/view/0de67e58a4f14533bb89254d719f0c21/0de67e58a4f14533bb89254d719f0c214.gif)
![標(biāo)準(zhǔn)實(shí)驗(yàn)報(bào)告(C++)-1(共8頁(yè))_第5頁(yè)](http://file4.renrendoc.com/view/0de67e58a4f14533bb89254d719f0c21/0de67e58a4f14533bb89254d719f0c215.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、電 子 科 技 大 學(xué)實(shí) 驗(yàn) 報(bào) 告學(xué)生(xu sheng)姓名: 學(xué) 號(hào): 指導(dǎo)(zhdo)教師:李巧勤實(shí)驗(yàn)(shyn)地點(diǎn):主樓A2-413 實(shí)驗(yàn)時(shí)間:一、實(shí)驗(yàn)室名稱:軟件實(shí)驗(yàn)室 二、實(shí)驗(yàn)項(xiàng)目名稱:面向?qū)ο蟪绦蛟O(shè)計(jì)數(shù)據(jù)封裝三、實(shí)驗(yàn)學(xué)時(shí):4四、實(shí)驗(yàn)原理:數(shù)據(jù)封裝將一組數(shù)據(jù)和這組數(shù)據(jù)有關(guān)的操作集合封裝在一起,形成一個(gè)能動(dòng)的實(shí)體,稱為對(duì)象。用戶不必知道對(duì)象行為的實(shí)現(xiàn)細(xì)節(jié),只需根據(jù)對(duì)象提供的外部特性接口訪問(wèn)對(duì)象。面向?qū)ο蠹夹g(shù)試圖通過(guò)建立一個(gè)合適的數(shù)據(jù)類型,將描述對(duì)象的屬性(數(shù)據(jù))和行為(函數(shù))結(jié)合在一起,形成一個(gè)新的抽象數(shù)據(jù)類型,稱為類類型(class)。類是C+的封裝機(jī)制,其中包括了數(shù)據(jù)成員和成
2、員函數(shù)。在C+類中,能確保數(shù)據(jù)只能由類中的成員函數(shù)進(jìn)行訪問(wèn)和處理。在任何時(shí)候,都可以自由地改變數(shù)據(jù)成員的組織形式,只需改變成員函數(shù)的實(shí)現(xiàn)細(xì)節(jié)。由于這些成員函數(shù)的接口不改變,系統(tǒng)其他部分的程序(及使用者)就不會(huì)由于改動(dòng)而受到影響。類的概念將數(shù)據(jù)和與這個(gè)數(shù)據(jù)有關(guān)的操作集合封裝在一起,建立了一個(gè)定義良好的接口,人們只關(guān)心其使用,不關(guān)心其實(shí)現(xiàn)細(xì)節(jié)。這反應(yīng)了抽象數(shù)據(jù)類型的思想。五、實(shí)驗(yàn)?zāi)康模罕緦?shí)驗(yàn)通過(guò)編寫(xiě)一些簡(jiǎn)單的程序,使學(xué)生掌握數(shù)據(jù)封裝的概念,并能熟練編寫(xiě)C+類,培養(yǎng)理論聯(lián)系實(shí)際和自主學(xué)習(xí)的能力,提高程序設(shè)計(jì)水平。六、實(shí)驗(yàn)內(nèi)容:小學(xué)教師Ken希望完成這樣的任務(wù):針對(duì)小學(xué)生正在學(xué)習(xí)四邊形(quadran
3、gle)的特性,編寫(xiě)一個(gè)小軟件,能夠隨機(jī)在屏幕上顯示矩形(rectangle)、正方形(square)、平行四邊形(parallelogram)、梯形(trapezoid)和菱形(diamond)五種形體之一,同時(shí)顯示該形體的特性和關(guān)鍵數(shù)據(jù)(隨機(jī)產(chǎn)生),學(xué)生復(fù)習(xí)形體的特性,然后根據(jù)給出的關(guān)鍵數(shù)據(jù)計(jì)算形體的面積,軟件判斷其結(jié)果的正確性。在學(xué)習(xí)過(guò)程中,軟件記錄產(chǎn)生的每一個(gè)形體,在學(xué)生選擇不再繼續(xù)后,將其學(xué)習(xí)的過(guò)程重放一遍,用以重溫,加深印象。根據(jù)Ken老師的要求(yoqi),需要至少(zhsho)編寫(xiě)(binxi)六個(gè)類:RectangleSquareParallelogramTrapezoidD
4、iamondList其中,前五個(gè)類分別用于描述五種形體。五種形體不用頂點(diǎn)坐標(biāo)的表示形式,而只是簡(jiǎn)單地用它們的特征值表示。例如:矩形、平行四邊形用長(zhǎng)和高表示;正方形用邊長(zhǎng)表示;梯形用兩條平行邊長(zhǎng)和高表示;菱形用兩條對(duì)象線長(zhǎng)表示。要求為這五種形體編寫(xiě)相應(yīng)的類,類中包括至少如下數(shù)據(jù)成員和成員函數(shù):特征值,例如長(zhǎng)和寬等;string name; 用于存儲(chǔ)形體的類別。類別的名字就是類的名字。例如:Rectangle類的類別名就是“Rectangle”;double area(); 用于求形體的面積;void draw(); 用于繪制形體。不要求用圖形的方式畫(huà)圖形,只需要簡(jiǎn)單地打印出形體的類別和特征值;構(gòu)
5、造(包括拷貝構(gòu)造)函數(shù)和析構(gòu)函數(shù)。構(gòu)造函數(shù)要帶有相應(yīng)的參數(shù)以能夠用指定特征值初始化形體對(duì)象。此外,List類用于存儲(chǔ)上述各種形體。形體的產(chǎn)生可以通過(guò)隨機(jī)的方式完成。重溫過(guò)程實(shí)際上就是遍歷List類對(duì)象的過(guò)程。七、實(shí)驗(yàn)器材(設(shè)備、元器件):PC機(jī)一臺(tái),裝有C/C+語(yǔ)言集成開(kāi)發(fā)環(huán)境。八、實(shí)驗(yàn)步驟:(自行填寫(xiě))九、實(shí)驗(yàn)數(shù)據(jù)及結(jié)果分析:(自行填寫(xiě))十、實(shí)驗(yàn)結(jié)論:(自行(zxng)填寫(xiě))十一(ShY)、總結(jié)及心得體會(huì):(自行(zxng)填寫(xiě))附:注:打印實(shí)驗(yàn)報(bào)告時(shí)不需要(xyo)打印此附件1. 解題(ji t)思路List類用鏈表的方式(fngsh)存儲(chǔ)對(duì)象。這產(chǎn)生了一個(gè)問(wèn)題:鏈表的節(jié)點(diǎn)中包含的數(shù)據(jù)域的
6、類型是一樣,而我們需要存儲(chǔ)五種不同的形體。顯然,節(jié)點(diǎn)中的數(shù)據(jù)域的類型不能是五種形體類中的任何一個(gè),只能用一種相對(duì)統(tǒng)一的方式來(lái)完成。這里給出一個(gè)簡(jiǎn)單的思路:編寫(xiě)一個(gè)與五種形體都很相似的類Quadrangle類,這個(gè)類至少包含了與其它五種形體類一樣的數(shù)據(jù)成員:name。這樣,節(jié)點(diǎn)的數(shù)據(jù)域的類型就是Quandrangle *。但在遍歷List類的對(duì)象時(shí),通過(guò)name成員獲得形體對(duì)象的標(biāo)識(shí),然后再通過(guò)類型強(qiáng)制轉(zhuǎn)換獲得正確的對(duì)象指針,最后在調(diào)用對(duì)象的相應(yīng)成員函數(shù)完成指定的操作。2. 示例代碼Quadrangle類/quad.h#ifndef _QUADRANGLE_#define _QUADRANGLE
7、_class Quadranglepublic:string name; /形體的標(biāo)識(shí);typedef Quadrangle * QUADPTR;#endif/end of quad.hRectangle類/rect.h#ifndef _RECT_#define _RECT_class Rectanglepublic:string name; /形體的標(biāo)識(shí)Rectangle(int w = 5, int h = 7);Rectangle();void draw();double area();string what();private:int width, height; /高和寬;#endi
8、f/end of rect.h/rect.cpp#include #include using namespace std;#include rect.hRectangle:Rectangle(int w, int h) : name(Rectangle), width(w), height(h) Rectangle:Rectangle() void Rectangle:draw()cout what() : width = width , height = height endl;double Rectangle:area()/返回(fnhu)形體的面積,請(qǐng)自行將代碼(di m)補(bǔ)充完整st
9、ring Rectangle:what()/返回(fnhu)形體的標(biāo)識(shí),請(qǐng)自行將代碼補(bǔ)充完整/請(qǐng)自行(zxng)補(bǔ)充(bchng)其他圖形(txng)類的定義及實(shí)現(xiàn)List類/list.h#ifndef _LIST_#define _LIST_#include quad.htypedef void (*ACCESSFUN)(QUADPTR); /定義遍歷時(shí)節(jié)點(diǎn)處理函數(shù)類型struct NodeQUADPTR data;Node *next;class Listprivate:Node *head, *tail;public:List();List(const List& l);List();v
10、oid push_back(const QUADPTR quad); /尾部添加void traverse(ACCESSFUN f); /遍歷;#endif/end of list.h/list.cpp#include #include using namespace std;#include list.hList:List() : head(NULL), tail(NULL) List:List(const List& l) : head(l.head ), tail(l.tail ) List:List()Node *p = head, *q;while (p != NULL)q = p;
11、p = p-next;delete q;/insert element into the tail of listvoid List:push_back(const QUADPTR quad)/請(qǐng)自行添加在鏈表尾部增加一個(gè)(y )節(jié)點(diǎn)的代碼。void List:traverse(ACCESSFUN f)Node *p = head;while (p != NULL)f(p-data);p = p-next;其它(qt)示例代碼#include #include using namespace std;#include quad.h#include rect.h#include list.hvoid access(QUADPTR quad)if (quad-name = Rectangle)Rectangle *p = reinterpret_cast(quad);p-draw();cout area = area() endl;/else if (.)/請(qǐng)自行將處理其它形體(xngt)的代碼補(bǔ)充完整int main()Rectangle rect(10, 15);/這里至少需要定義五種不同(b tn)的形體對(duì)象,并將它們添加到List對(duì)象中。List list;list.push_back(reinterpret_cast(&rect);
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO 9335:2025 EN Optics and photonics - Optical transfer function - Principles and procedures of measurement
- 【正版授權(quán)】 ISO/IEC 27562:2024 EN Information technology - Security techniques - Privacy guidelines for fintech services
- 【正版授權(quán)】 ISO 21068-3:2024 EN Chemical analysis of raw materials and refractory products containing silicon-carbide,silicon-nitride,silicon-oxynitride and sialon - Part 3: Determina
- 2025年度數(shù)據(jù)中心電路改造及智能監(jiān)控服務(wù)協(xié)議
- 2025年度金融機(jī)構(gòu)間同業(yè)拆借合同模板
- 2025年度辦公場(chǎng)地租賃及物業(yè)管理合同范本
- 2025年度城市綠化工程項(xiàng)目承包合同范本
- 2025年度城市燃?xì)夤艿腊惭b工程總承包合同范本
- 2025年度餐飲店鋪裝修設(shè)計(jì)與施工合同
- 2025年度戀愛(ài)雙方戀愛(ài)期間責(zé)任劃分合同模板
- 長(zhǎng)江委水文局2025年校園招聘17人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年湖南韶山干部學(xué)院公開(kāi)招聘15人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 廣東省廣州市番禺區(qū)2023-2024學(xué)年七年級(jí)上學(xué)期期末數(shù)學(xué)試題
- 健身新人直播流程
- 不可切除肺癌放療聯(lián)合免疫治療專家共識(shí)(2024年版)j解讀
- DB23/T 3657-2023醫(yī)養(yǎng)結(jié)合機(jī)構(gòu)服務(wù)質(zhì)量評(píng)價(jià)規(guī)范
- 教科版科學(xué)六年級(jí)下冊(cè)14《設(shè)計(jì)塔臺(tái)模型》課件
- 企業(yè)的生產(chǎn)過(guò)程課件
- 智研咨詢發(fā)布:2024年中國(guó)MVR蒸汽機(jī)械行業(yè)市場(chǎng)全景調(diào)查及投資前景預(yù)測(cè)報(bào)告
- 法規(guī)解讀丨2024新版《突發(fā)事件應(yīng)對(duì)法》及其應(yīng)用案例
- JGJ46-2024 建筑與市政工程施工現(xiàn)場(chǎng)臨時(shí)用電安全技術(shù)標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論