面向?qū)ο蟮募夹g(shù)與方法-答案_第1頁
面向?qū)ο蟮募夹g(shù)與方法-答案_第2頁
面向?qū)ο蟮募夹g(shù)與方法-答案_第3頁
面向?qū)ο蟮募夹g(shù)與方法-答案_第4頁
面向?qū)ο蟮募夹g(shù)與方法-答案_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、.四川大學(xué)計(jì)算機(jī)(軟件)學(xué)院工程碩士考試試題(20142015學(xué)年第 2學(xué)期)課程號(hào): 課序號(hào): 課程名稱: 面向?qū)ο蟮募夹g(shù)與方法 任課教師: 李征 適用專業(yè):軟件工程 適用年級(jí): 學(xué)生人數(shù): 印題份數(shù): 學(xué)號(hào): 姓名: 考 試 須 知四川大學(xué)學(xué)生參加由學(xué)校組織或由學(xué)校承辦的各級(jí)各類考試,必須嚴(yán)格執(zhí)行四川大學(xué)考試工作管理辦法和四川大學(xué)考場(chǎng)規(guī)則。有考試違紀(jì)作弊行為的,一律按照四川大學(xué)學(xué)生考試違紀(jì)作弊處罰條例進(jìn)行處理。四川大學(xué)各級(jí)各類考試的監(jiān)考人員,必須嚴(yán)格執(zhí)行四川大學(xué)考試工作管理辦法、四川大學(xué)考場(chǎng)規(guī)則和四川大學(xué)監(jiān)考人員職責(zé)。有違反學(xué)校有關(guān)規(guī)定的,嚴(yán)格按照四川大學(xué)教學(xué)事故認(rèn)定及處理辦法進(jìn)行處理。題

2、號(hào)一二三四五六七八九十平時(shí)總分得分考試時(shí)間年 月 日閱卷教師簽名一名詞解釋(共5小題,每題4分,共20分)1. 封裝把對(duì)象的屬性和服務(wù)結(jié)合成一個(gè)獨(dú)立的系統(tǒng)單元。盡可能隱蔽對(duì)象的內(nèi)部細(xì)節(jié)。對(duì)外形成一個(gè)邊界(或者說一道屏障),只保留有限的對(duì)外接口使之與外部發(fā)生聯(lián)系2. 繼承繼承對(duì)于軟件復(fù)用有著重要意義,是面向?qū)ο蠹夹g(shù)能夠提高軟件開發(fā)效率的重要原因之一。定義:特殊類的對(duì)象擁有其一般類的全部屬性與服務(wù),稱作特殊類對(duì)一般類的繼承。保持已有類的特性而構(gòu)造新類的過程稱為繼承3. 派生在已有類的基礎(chǔ)上新增自己的特性而產(chǎn)生新類的過程稱為派生被繼承的已有類稱為基類(或父類)。派生出的新類稱為派生類。4. 多態(tài)多態(tài)

3、是指在一般類中定義的屬性或行為,被特殊類繼承之后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。這使得同一個(gè)屬性或行為在一般類及其各個(gè)特殊類中具有不同的語義。5. 拷貝構(gòu)造函數(shù)拷貝構(gòu)造函數(shù)是一種特殊的構(gòu)造函數(shù),其形參為本類的對(duì)象引用。class 類名 public : 類名(形參);/構(gòu)造函數(shù) 類名(類名 &對(duì)象名);/拷貝構(gòu)造函數(shù) .;類名: 類名(類名 &對(duì)象名)/拷貝構(gòu)造函數(shù)的實(shí)現(xiàn) 函數(shù)體 二簡(jiǎn)答題(共4小題,每題5分,共20分)1. 簡(jiǎn)述相對(duì)于面向過程設(shè)計(jì)思想,面向?qū)ο蟪绦蛟O(shè)計(jì)思想所具有的優(yōu)勢(shì)。面向過程有效地將一個(gè)較復(fù)雜的程序系統(tǒng)設(shè)計(jì)任務(wù)分解成許多易于控制和處理的子任務(wù),便

4、于開發(fā)和維護(hù)。面向?qū)ο蟪绦蚴钩绦蚰軌虮容^直接地反問題域的本來面目,軟件開發(fā)人員能夠利用人類認(rèn)識(shí)事物所采用的一般思維方法來進(jìn)行軟件開發(fā)。程序模塊間的關(guān)系更為簡(jiǎn)單,程序模塊的獨(dú)立性、數(shù)據(jù)的安全性就有了良好的保障。通過繼承與多態(tài)性,可以大大提高程序的可重用性,使得軟件的開發(fā)和維護(hù)都更為方便。2. 簡(jiǎn)述前置+運(yùn)算符與后置+運(yùn)算符的重載原理。假設(shè)關(guān)于ClassA進(jìn)行前置和后置+的重載,則其重載函數(shù)大概形式應(yīng)如下:ClassA&ClassA:operator+() /前置+itsVal+; return *this; const ClassA ClassA:operator+(int) /后置+C

5、lassA temp(*this);itsVal+; return temp; 為區(qū)別前置和后置運(yùn)算符,需要在后置運(yùn)算符重載函數(shù)中加參數(shù)“int”,雖然這個(gè)類型在此除了以示區(qū)別之外并不代表任何實(shí)際含義;如果要重載 +為類成員函數(shù),使之能夠?qū)崿F(xiàn)表達(dá)式 oprd+,其中 oprd 為A類對(duì)象,則 +應(yīng)被重載為 A 類的成員函數(shù),且具有一個(gè) int 類型形參。經(jīng)重載后,表達(dá)式 oprd+ 相當(dāng)于 oprd.operator +(0)3. 簡(jiǎn)述私有繼承與公有繼承之間的區(qū)別。不同繼承方式的影響主要體現(xiàn)在:派生類成員對(duì)基類成員的訪問權(quán)限通過派生類對(duì)象對(duì)基類成員的訪問權(quán)限公有繼承:基類的public和pro

6、tected成員的訪問屬性在派生類中保持不變,但基類的private成員不可直接訪問。派生類中的成員函數(shù)可以直接訪問基類中的public和protected成員,但不能直接訪問基類的private成員。通過派生類的對(duì)象只能訪問基類的public成員。私有繼承基類的public和protected成員都以private身份出現(xiàn)在派生類中,但基類的private成員不可直接訪問。派生類中的成員函數(shù)可以直接訪問基類中的public和protected成員,但不能直接訪問基類的private成員。通過派生類的對(duì)象不能直接訪問基類中的任何成員。4. 簡(jiǎn)述虛函數(shù)與抽象類的概念與聯(lián)系。虛函數(shù)虛函數(shù)是動(dòng)態(tài)綁定

7、的基礎(chǔ)。是非靜態(tài)的成員函數(shù)。在類的聲明中,在函數(shù)原型之前寫virtual。virtual 只用來說明類聲明中的原型,不能用在函數(shù)實(shí)現(xiàn)時(shí)。具有繼承性,基類中聲明了虛函數(shù),派生類中無論是否說明,同原型函數(shù)都自動(dòng)為虛函數(shù)。本質(zhì):不是重載聲明而是覆蓋。調(diào)用方式:通過基類指針或引用,執(zhí)行時(shí)會(huì)根據(jù)指針指向的對(duì)象的類,決定調(diào)用哪個(gè)函數(shù)。抽象類帶有純虛函數(shù)的類稱為抽象類:class 類名 virtual 類型 函數(shù)名(參數(shù)表)=0; /純虛函數(shù) .作用抽象類為抽象和設(shè)計(jì)的目的而聲明,將有關(guān)的數(shù)據(jù)和行為組織在一個(gè)繼承層次結(jié)構(gòu)中,保證派生類具有要求的行為。對(duì)于暫時(shí)無法實(shí)現(xiàn)的函數(shù),可以聲明為純虛函數(shù),留給派生類去實(shí)

8、現(xiàn)。注意抽象類只能作為基類來使用。不能聲明抽象類的對(duì)象。構(gòu)造函數(shù)不能是虛函數(shù),析構(gòu)函數(shù)可以是虛函數(shù)。三程序分析(共4小題,每題10分,共40分,說明:閱讀并分析各小題中的源程序,按要求寫出程序執(zhí)行結(jié)果。)1. 源程序如下:#include<iostream>using namespace std;int i; int main() i=9; int i; i=32; cout<<"i="<<i<<endl; cout<<"i="<<i; return 0;請(qǐng)寫出程序的顯示輸出:I =

9、 32I = 92. 源程序如下:#include<iostream>using namespace std;void fun();void main() fun(); fun();void fun() static int a=6; int i=3; a+; i+; cout<<"i="<<i<<",a="<<a<<endl;請(qǐng)寫出程序的顯示輸出:i=4,a=7i=4,a=83. 源程序如下:#include<iostream>using namespace std;c

10、lass Clockpublic:Clock();void SetTime(int NewH, int NewM, int NewS); void ShowTime();Clock()private:int Hour,Minute,Second;Clock:Clock()Hour=0;Minute=0;Second=0;void Clock:SetTime(int NewH, int NewM, int NewS)Hour=NewH;Minute=NewM;Second=NewS;void Clock:ShowTime()cout<<Hour<<":"

11、;<<Minute<<":"<<Second<<endl;Clock globClock;void main()cout<<"First time output:"<<endl;globClock.ShowTime();globClock.SetTime(8,30,30);Clock myClock(globClock); cout<<"Second time output:"<<endl;myClock.ShowTime();請(qǐng)寫出程序的

12、顯示輸出:First time output:0:0:0Second time output:8:30:304. 源程序如下:# include <iostream.h>class vehicleint wheels;float weight;public:virtual void message()cout<<”vehicle messagen”;class car:public vehicleint passengers;public:void message()cout<<”car messagen”;class truck:public vehicl

13、eint goods;public:void message()cout<<”truck messagen”;void main()vehicle obj,*ptr;car obj1;truck obj2;ptr=&obj;prt->message();ptr=&obj1;ptr->message();ptr=&obj2;ptr->message()請(qǐng)寫出程序的顯示輸出:vehicle messagecar messagetruck message四程序設(shè)計(jì)(共1題,共20分)一個(gè)“8”字形花園如下圖所示,該花園由兩個(gè)圓形區(qū)域拼接而成,兩個(gè)

14、圓形區(qū)域的中心區(qū)域(圓形)為種植花草的兩個(gè)花臺(tái),外圍區(qū)域(圓環(huán))則為過道,現(xiàn)在需要鋪設(shè)過道,并在花臺(tái)周圍建造柵欄,過道造價(jià)為50元 / 平方米,柵欄價(jià)格為30元 / 米?;▓@中兩個(gè)圓形區(qū)域的半徑、兩個(gè)花臺(tái)的半徑由鍵盤輸入,要求編程求解過道與柵欄的造價(jià)。在程序設(shè)計(jì)中,要求設(shè)計(jì)Circle類,該類中的成員函數(shù)可完成圓面積、圓周長(zhǎng)的計(jì)算,其余功能應(yīng)在此類的基礎(chǔ)上給予設(shè)計(jì)。過道過道花臺(tái)花臺(tái)#include <iostream>using namespace std;const float PI = 3.14159;const float FencePrice = 30;/ 柵欄價(jià)格cons

15、t float ConcretePrice = 50;/過道造價(jià)/聲明類Circle 及其數(shù)據(jù)和方法class Circle private: float radius; public: Circle(float r); /構(gòu)造函數(shù) float Circumference() const; /圓周長(zhǎng) float Area() const; /圓面積;/ 類的實(shí)現(xiàn)/ 構(gòu)造函數(shù)初始化數(shù)據(jù)成員radiusCircle:Circle(float r)radius=r/ 計(jì)算圓的周長(zhǎng)float Circle:Circumference() const return 2 * PI * radius; /

16、計(jì)算圓的面積 float Circle:Area() const return PI * radius * radius;void main () float radius1, radius2, radius3, radius4; /4個(gè)圓的周長(zhǎng) float FenceCost, ConcreteCost; / 提示用戶輸入半徑 cout<<"請(qǐng)輸入左邊花臺(tái)內(nèi)圓的半徑: " cin>>radius1; cout<<"請(qǐng)輸入左邊花臺(tái)外圓的半徑: " cin>>radius2; cout<<&quo

17、t;請(qǐng)輸入右邊花臺(tái)內(nèi)圓的半徑: " cin>>radius3; cout<<"請(qǐng)輸入右邊花臺(tái)外圓的半徑: " cin>>radius4; / 聲明 Circle 對(duì)象 Circle Pool1(radius1); Circle PoolRim1(radius2); Circle Pool2(radius3); Circle PoolRim2(radius4);/ 計(jì)算柵欄造價(jià)并輸出 FenceCost = ( Pool1.Circumference() + Pool2.Circumference() )* FencePrice; cout << "Fencing Cost is ¥" << FenceCost << endl; / 計(jì)算過道造價(jià)并輸出 ConcreteCost = (

溫馨提示

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