標(biāo)準(zhǔn)實(shí)驗(yàn)報(bào)告(C++)-1(共8頁)_第1頁
標(biāo)準(zhǔn)實(shí)驗(yàn)報(bào)告(C++)-1(共8頁)_第2頁
標(biāo)準(zhǔn)實(shí)驗(yàn)報(bào)告(C++)-1(共8頁)_第3頁
標(biāo)準(zhǔn)實(shí)驗(yàn)報(bào)告(C++)-1(共8頁)_第4頁
標(biāo)準(zhǔn)實(shí)驗(yàn)報(bào)告(C++)-1(共8頁)_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、電 子 科 技 大 學(xué)實(shí) 驗(yàn) 報(bào) 告學(xué)生(xu sheng)姓名: 學(xué) 號: 指導(dǎo)(zhdo)教師:李巧勤實(shí)驗(yàn)(shyn)地點(diǎn):主樓A2-413 實(shí)驗(yàn)時間:一、實(shí)驗(yàn)室名稱:軟件實(shí)驗(yàn)室 二、實(shí)驗(yàn)項(xiàng)目名稱:面向?qū)ο蟪绦蛟O(shè)計(jì)數(shù)據(jù)封裝三、實(shí)驗(yàn)學(xué)時:4四、實(shí)驗(yàn)原理:數(shù)據(jù)封裝將一組數(shù)據(jù)和這組數(shù)據(jù)有關(guān)的操作集合封裝在一起,形成一個能動的實(shí)體,稱為對象。用戶不必知道對象行為的實(shí)現(xiàn)細(xì)節(jié),只需根據(jù)對象提供的外部特性接口訪問對象。面向?qū)ο蠹夹g(shù)試圖通過建立一個合適的數(shù)據(jù)類型,將描述對象的屬性(數(shù)據(jù))和行為(函數(shù))結(jié)合在一起,形成一個新的抽象數(shù)據(jù)類型,稱為類類型(class)。類是C+的封裝機(jī)制,其中包括了數(shù)據(jù)成員和成

2、員函數(shù)。在C+類中,能確保數(shù)據(jù)只能由類中的成員函數(shù)進(jìn)行訪問和處理。在任何時候,都可以自由地改變數(shù)據(jù)成員的組織形式,只需改變成員函數(shù)的實(shí)現(xiàn)細(xì)節(jié)。由于這些成員函數(shù)的接口不改變,系統(tǒng)其他部分的程序(及使用者)就不會由于改動而受到影響。類的概念將數(shù)據(jù)和與這個數(shù)據(jù)有關(guān)的操作集合封裝在一起,建立了一個定義良好的接口,人們只關(guān)心其使用,不關(guān)心其實(shí)現(xiàn)細(xì)節(jié)。這反應(yīng)了抽象數(shù)據(jù)類型的思想。五、實(shí)驗(yàn)?zāi)康模罕緦?shí)驗(yàn)通過編寫一些簡單的程序,使學(xué)生掌握數(shù)據(jù)封裝的概念,并能熟練編寫C+類,培養(yǎng)理論聯(lián)系實(shí)際和自主學(xué)習(xí)的能力,提高程序設(shè)計(jì)水平。六、實(shí)驗(yàn)內(nèi)容:小學(xué)教師Ken希望完成這樣的任務(wù):針對小學(xué)生正在學(xué)習(xí)四邊形(quadran

3、gle)的特性,編寫一個小軟件,能夠隨機(jī)在屏幕上顯示矩形(rectangle)、正方形(square)、平行四邊形(parallelogram)、梯形(trapezoid)和菱形(diamond)五種形體之一,同時顯示該形體的特性和關(guān)鍵數(shù)據(jù)(隨機(jī)產(chǎn)生),學(xué)生復(fù)習(xí)形體的特性,然后根據(jù)給出的關(guān)鍵數(shù)據(jù)計(jì)算形體的面積,軟件判斷其結(jié)果的正確性。在學(xué)習(xí)過程中,軟件記錄產(chǎn)生的每一個形體,在學(xué)生選擇不再繼續(xù)后,將其學(xué)習(xí)的過程重放一遍,用以重溫,加深印象。根據(jù)Ken老師的要求(yoqi),需要至少(zhsho)編寫(binxi)六個類:RectangleSquareParallelogramTrapezoidD

4、iamondList其中,前五個類分別用于描述五種形體。五種形體不用頂點(diǎn)坐標(biāo)的表示形式,而只是簡單地用它們的特征值表示。例如:矩形、平行四邊形用長和高表示;正方形用邊長表示;梯形用兩條平行邊長和高表示;菱形用兩條對象線長表示。要求為這五種形體編寫相應(yīng)的類,類中包括至少如下數(shù)據(jù)成員和成員函數(shù):特征值,例如長和寬等;string name; 用于存儲形體的類別。類別的名字就是類的名字。例如:Rectangle類的類別名就是“Rectangle”;double area(); 用于求形體的面積;void draw(); 用于繪制形體。不要求用圖形的方式畫圖形,只需要簡單地打印出形體的類別和特征值;構(gòu)

5、造(包括拷貝構(gòu)造)函數(shù)和析構(gòu)函數(shù)。構(gòu)造函數(shù)要帶有相應(yīng)的參數(shù)以能夠用指定特征值初始化形體對象。此外,List類用于存儲上述各種形體。形體的產(chǎn)生可以通過隨機(jī)的方式完成。重溫過程實(shí)際上就是遍歷List類對象的過程。七、實(shí)驗(yàn)器材(設(shè)備、元器件):PC機(jī)一臺,裝有C/C+語言集成開發(fā)環(huán)境。八、實(shí)驗(yàn)步驟:(自行填寫)九、實(shí)驗(yàn)數(shù)據(jù)及結(jié)果分析:(自行填寫)十、實(shí)驗(yàn)結(jié)論:(自行(zxng)填寫)十一(ShY)、總結(jié)及心得體會:(自行(zxng)填寫)附:注:打印實(shí)驗(yàn)報(bào)告時不需要(xyo)打印此附件1. 解題(ji t)思路List類用鏈表的方式(fngsh)存儲對象。這產(chǎn)生了一個問題:鏈表的節(jié)點(diǎn)中包含的數(shù)據(jù)域的

6、類型是一樣,而我們需要存儲五種不同的形體。顯然,節(jié)點(diǎn)中的數(shù)據(jù)域的類型不能是五種形體類中的任何一個,只能用一種相對統(tǒng)一的方式來完成。這里給出一個簡單的思路:編寫一個與五種形體都很相似的類Quadrangle類,這個類至少包含了與其它五種形體類一樣的數(shù)據(jù)成員:name。這樣,節(jié)點(diǎn)的數(shù)據(jù)域的類型就是Quandrangle *。但在遍歷List類的對象時,通過name成員獲得形體對象的標(biāo)識,然后再通過類型強(qiáng)制轉(zhuǎn)換獲得正確的對象指針,最后在調(diào)用對象的相應(yīng)成員函數(shù)完成指定的操作。2. 示例代碼Quadrangle類/quad.h#ifndef _QUADRANGLE_#define _QUADRANGLE

7、_class Quadranglepublic:string name; /形體的標(biāo)識;typedef Quadrangle * QUADPTR;#endif/end of quad.hRectangle類/rect.h#ifndef _RECT_#define _RECT_class Rectanglepublic:string name; /形體的標(biāo)識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)形體的面積,請自行將代碼(di m)補(bǔ)充完整st

9、ring Rectangle:what()/返回(fnhu)形體的標(biāo)識,請自行將代碼補(bǔ)充完整/請自行(zxng)補(bǔ)充(bchng)其他圖形(txng)類的定義及實(shí)現(xiàn)List類/list.h#ifndef _LIST_#define _LIST_#include quad.htypedef void (*ACCESSFUN)(QUADPTR); /定義遍歷時節(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)/請自行添加在鏈表尾部增加一個(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 (.)/請自行將處理其它形體(xngt)的代碼補(bǔ)充完整int main()Rectangle rect(10, 15);/這里至少需要定義五種不同(b tn)的形體對象,并將它們添加到List對象中。List list;list.push_back(reinterpret_cast(&rect);

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論