版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、書山有路勤為徑,學(xué)海無涯苦作舟。祝愿天下莘莘學(xué)子:學(xué)業(yè)有成,金榜題名!語言類考試復(fù)習(xí)資料大全中級(jí)軟件設(shè)計(jì)師下午試題分類模擬21中級(jí)軟件設(shè)計(jì)師下午試題分類模擬21試題一問題:1. 閱讀以下說明和Java代碼,將應(yīng)填入 (n) 處的字句寫在對(duì)應(yīng)欄內(nèi)。 【說明】 任何一種程序都是為了解決問題而撰寫的,解決問題時(shí)需要實(shí)現(xiàn)一些特定的運(yùn)算法則。在策略(Strategy)模式下,可以更換實(shí)現(xiàn)算法的部分而不留痕跡,切換整個(gè)算法,簡(jiǎn)化改為采用其他方法來解決同樣問題。 以下是一個(gè)“剪刀石頭布”游戲。猜拳時(shí)的“策略”有2種方法:第一種是“猜贏后繼續(xù)出同樣的招式”(WinningStrategy),第二種是“從上一次
2、出的招式種,以概率分配方式求出下一個(gè)招式的幾率”(ProbStrategy)。程序中定義了Hand類表示猜拳時(shí)的“手勢(shì)”,類內(nèi)部以0(石頭)、1(剪刀)、2(布)來表示。Hand類的實(shí)例只會(huì)產(chǎn)生3個(gè)。 以下是Java語言實(shí)現(xiàn),省略了不相關(guān)屬性及方法,方法實(shí)現(xiàn)體亦有所省略,能夠正確編譯通過。 【Java代碼】 /Hand.java文件 public class Hand public static final int HANDVALUE_GUU=0; /石頭 public static final int HANDVALUE_CHO=1; /剪刀 public static final int
3、HANDVALUE_PAA=2; /布 public static final Hand hand= new Hand (HANDVALUE_GUU), new Hand (HANDVALUE_CHO), new Hand (HANDVALUE_PAA), ; private int handvalue; (1) Hand (int handvalue) this.handvalue=handvalue; public (2) Hand getHand(int handvalue) /從值取得對(duì)象實(shí)例 return hand handvalue; /Strategy.java文件 public
4、 interface Strategy public (3) Hand nextHand(); /ProbStrategy.java文件 import java.util.Random; public class ProbStrategy implements Strategy public Hand nextHand () int handvalue=0; /*省略具體實(shí)現(xiàn)*/ return Hand.getHand (handvalue); /WinningStrategy.java文件 import java.util.Random; public class WinningStrate
5、gy implements Strategy /*省略了不相關(guān)屬性*/ public Hand nextHand() if(!won) prevHand=Hand.getHand(random.nextInt(3); return prevHand; /Player.java文件 public class Player private String name; private Strategy strategy; public Player(String name, (4) strategy) =name; this.strategy=strategy; public Han
6、d nextHand()/向戰(zhàn)略請(qǐng)示手勢(shì) return (5) ; 答案:(1)private (2)static (3)abstract (4)Strategy (5)strategy.nextHand()解析 Hand類要保證只產(chǎn)生3個(gè)實(shí)例,就要求不能隨便生成Hand類,因此其構(gòu)造方法需要是private型的,故空(1)填private。 先看空(3),nexthand()是接口Strategy的方法,應(yīng)為抽象方法,故空(3)應(yīng)填abstract。 再來看空(2),由對(duì)getHand()方法的調(diào)用方式Hand.getHand(handvalue)及Hand.getHand(random.n
7、extInt(3),可知該方法是類Hand的靜態(tài)方法,故空(2)應(yīng)填static。 由語句this.strategy=strategy;可知:this.strategy與strategy是同數(shù)據(jù)類型,this表示自身引用,而this.strategy是Strategy類型,故空(4)應(yīng)填Strategy。 方法nextHand()是“向戰(zhàn)略請(qǐng)示手勢(shì)”,取得手勢(shì)是通過其所采用的“策略”實(shí)現(xiàn)的,故空(5)應(yīng)填strategy.nextHand()。 試題二問題:1. 請(qǐng)閱讀以下技術(shù)說明、類圖及C+代碼,將應(yīng)填入 (n) 處的字句填寫完整。 【說明】 已知某企業(yè)欲開發(fā)一家用電器遙控系統(tǒng),即用戶使用一
8、個(gè)遙控器即可控制某些家用電器的開與關(guān)。遙控器面板如圖1所示。該遙控器共有4個(gè)按鈕,編號(hào)分別是03,按鈕0和按鈕2能夠遙控打開電器1和電器2,按鈕1和按鈕3則能遙控關(guān)閉電器1和電器2。由于遙控系統(tǒng)需要支持形式多樣的電器,因此,該系統(tǒng)的設(shè)計(jì)要求具有較高的擴(kuò)展性?,F(xiàn)假設(shè)需要控制客廳電視和臥室電燈,對(duì)該遙控系統(tǒng)進(jìn)行設(shè)計(jì)所得類圖如圖2所示。 圖1 某家用電器遙控器面板 圖2 某遙控器系統(tǒng)類圖 在圖2中,類RomoteController的方法onPressButton(int button)表示當(dāng)遙控器按鍵按下時(shí)調(diào)用的方法,參數(shù)為按鍵的編號(hào);Command接口中on和off方法分別用于控制電器的開與關(guān);
9、Light中tumLight(int degree)方法用于調(diào)整電燈燈光的強(qiáng)弱,參數(shù)degree值為0時(shí)表示關(guān)燈,值為100時(shí)表示開燈并且將燈光亮度調(diào)整到最大;TV中setChannel(int channel)方法表示設(shè)置電視播放的頻道,參數(shù)channel值為0時(shí)表示關(guān)閉電視,為1時(shí)表示開機(jī)并將頻道切換為第1頻道。 【C+代碼】 class Light/電燈類 public: void trunLight(int degree)/調(diào)整燈光亮度,0表示關(guān)燈,100表示亮度最大; ; class TV/電視機(jī)類 public: void setChannel(int channel)/調(diào)整電視頻
10、道,0表示關(guān)機(jī),1表示開機(jī)并切換到1頻道; ; class Command/抽象命令類 public: virtual void on()=0; virtual void off()=0; ; class Remotecontroller /遙控器類 protected: Command*commands4;/遙控器有4個(gè)按鈕,按照編號(hào)分別對(duì)應(yīng)4個(gè)Command對(duì)象 public: void onPressButton(int button) /按鈕被按下時(shí)執(zhí)行命令對(duì)象中的命令 if(button%2=0)commandsbutton-on(); else commandsbutton-off
11、(); void SetCommand(int button,Command*command) (1) =command;/設(shè)置每個(gè)按鈕對(duì)應(yīng)的命令對(duì)象 ; class LightCommand: public Command/電燈命令類 protected: Light*light; /指向要控制的電燈對(duì)象 public: void on()light-trunLight(100);); void off()(light- (2) ; LightCommand(Light*light)this-light=light; ; class TVCommand:public Command/電視機(jī)命
12、令類 protected: TV*tv; /指向要控制的電視機(jī)對(duì)象 publlc: void on()tv- (3) ; void off()tv-setChannel(0); TVCommand(TV*tv)(this-tv=tv; ; void main() Light light; TV tv;/創(chuàng)建電燈和電視對(duì)象 LightCommand lightCommand( TVCommand tvCommand(tv); RemoteController remoteController; remoteController. setCommand(0, (4) ); /設(shè)置按鈕0的命令對(duì)象
13、/此處省略設(shè)置按鈕1、按鈕2和按鈕3的命令對(duì)象代碼 本試題應(yīng)用命令模式能夠有效讓類 (5) 和類 (6) 、類 (7) 之間的耦合性降至最小。 答案:(1)commandsbutton (2)trunLight(0) (3)setChannel(1) (4) class DP2 public: static void drawline (double x1, double x2, double y1, double y2) /省略具體實(shí)現(xiàn) ; class Drawing public: _ void drawLine (double x1, double y1, double x2, doub
14、le y2)=0; ; class V1Drawing:public Drawing public: void drawLine (double x1, double y1, double x2, double y2) DP1:draw_a_line (x1, y1, x2, y2); ; class V2Drawing:public Drawing public: void drawLine (double x1, double y1, double x2, double y2) _; ; class Shape private: _ _dp; public: Shape (Drawing
15、*dp); virtual void draw( ) = 0; void drawLine (double x1, double y1, double x2, double y2); ; Shape:Shape (Drawing *dp) dp = dp; void Shape:drawLine (double x1, double y1, double x2, double y2) /畫一條直線 _; class Rectangle:public Shape private: double _x1 _y1, _x2, _y2; public: Rectangle (Drawing *dp,
16、double x1, double y1, double x2, double y2); void draw( ); ; Rectangle:Rectangle (Drawing *dp, double x1, double y1, double x2, double y2) : _ _x1 = x1; _y1 = y1; _x2 = x2; _y2 = y2; void Rectangle:draw( ) /省略具體實(shí)現(xiàn) 答案:virtual DP2:drawline(x1, x2, y1, y2) Drawing* _dpdrawLine(x1, y1, x2, y2) Shape(dp)解析 由函數(shù)drawLine( )尾的“=0”易知,第一個(gè)空處應(yīng)填virtual。
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024至2030年中國(guó)微波/紅外雙鑒探測(cè)器數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2024-2030年中國(guó)建筑勞務(wù)行業(yè)前景預(yù)測(cè)及發(fā)展規(guī)模分析報(bào)告
- 2024至2030年消防中心聯(lián)動(dòng)控制柜項(xiàng)目投資價(jià)值分析報(bào)告
- 2024-2030年中國(guó)干衣機(jī)市場(chǎng)銷售狀況及盈利模式研究報(bào)告
- 2024至2030年中國(guó)小白沙數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2024-2030年中國(guó)川味火鍋行業(yè)經(jīng)營(yíng)狀況及投資競(jìng)爭(zhēng)力分析報(bào)告
- 2024-2030年中國(guó)家居日化行業(yè)競(jìng)爭(zhēng)格局及投資前景展望報(bào)告
- 2024至2030年微機(jī)控溫紅外燒結(jié)爐項(xiàng)目投資價(jià)值分析報(bào)告
- 2024-2030年中國(guó)安全氣囊行業(yè)競(jìng)爭(zhēng)對(duì)手經(jīng)營(yíng)狀況分析及發(fā)展?jié)摿ρ芯繄?bào)告
- 2024年散熱器雙面弧扣蓋項(xiàng)目可行性研究報(bào)告
- 醫(yī)院醫(yī)療不良事件上報(bào)登記本
- 貴州省普通話考試說話題目30篇經(jīng)典范文
- 最新RBT214-2017檢驗(yàn)檢測(cè)機(jī)構(gòu)資質(zhì)認(rèn)定全套體系文件匯編(質(zhì)量手冊(cè)+程序文件)
- 《水產(chǎn)動(dòng)物營(yíng)養(yǎng)與飼料學(xué)》課件第6課-能量營(yíng)養(yǎng)
- 班主任先進(jìn)工作經(jīng)驗(yàn)交流分享班主任工作經(jīng)驗(yàn)交流稿
- 第四章離心鑄造
- 朗讀技巧—停連、重音、語氣(課堂PPT)
- 西亞教學(xué)設(shè)計(jì)與反思
- 乙酸乙酯的反應(yīng)器設(shè)計(jì)流程圖
- EM277的DP通訊使用詳解
- 耐壓絕緣測(cè)試報(bào)告
評(píng)論
0/150
提交評(píng)論