一道面試題的解析

2021-05-21 23:59:05 字數 1502 閱讀 2382

一道面試題的解析

題目:1.

畫三角形,四邊形,圓形,在視窗中移動,碰到視窗邊緣會自動彈回

2.通過選單,可以增加三角形,四邊形,圓形

3.對選中的圖形,可以設定填充顏色,線條寬度

4.畫三角形,四邊形,圓形,採用

bitmap

和位置兩種方式實現,位圖實現不設定填充顏色,線條寬度,隨機產生位置。

5.採用物件導向程式設計。

6.時間限制:1天

這道題目要求使用物件導向思想來實現,所以當我們看完題目之後,應該馬上想到定義乙個圖形的基類,它可能像下面這個樣子:

namespace draw;}

然後我們分別有

draw::crectangle

繼承自==

》cbaseshape

表示==

》矩形類

draw::c********

繼承自==

》cbaseshape

表示==

》三角形類

draw::ccircle

繼承自==

》cbaseshape

表示==

》圓形類……

現在我們的圖形類都擁有了顏色和線寬的屬性,不過光有了這些屬性還不夠,接下來我們還需要給它定義一些介面,才能支援我們用多型的形式來管理我們的圖形類,所以除了為圖形基類定義介面之外,我想我們還需要提供乙個管理類。

我們怎麼知道圖形類需要什麼樣的介面呢,在這裡,我們認為使用它的客戶類需要怎麼樣使用它,我們就為它提供什麼樣的介面。比如:

我們需要使用圖形類的繪圖的功能,我們想這樣使用它

std::listm_listshapes; //

裡面儲存各種各樣的圖形

。。。list::iterator iter = m_listshapes.begin();

list::iterator end = m_listshapes.end();

for(;iter!=end;iter++)

再比如,我們想讓我們的圖形可以移動,我們想在

ontimer

函式中這樣用。

std::listm_listshapes; //

裡面儲存各種各樣的圖形

。。。list::iterator iter = m_listshapes.begin();

list::iterator end = m_listshapes.end();

for(;iter!=end;iter++)

為了方便對圖形類進行管理,比如圖形類的建立,繪圖,移動,刪除,設定屬性,我們可以定義乙個管理類來進行管理。

class cshapemanager

在實現這個程式的時候,我們始終都要記住一點:

讓我們的圖形類的客戶,即

cshapemanager

,盡可能的只關心

cbaseshape

類,而不去了解它的子類。

cshapemanager ::createshape

這個函式,有個很通俗的叫法,工廠方法。

一道新浪面試題的解析

li x 100 for x in range 10 if x 6 li1 x 100 for x in range 10 print li print li1 執行結果 107,108,109 100,101,102,103,104,105,106,107,108,109 li lambda x ...

一道面試題

一道面試題 射擊運動員10發打中90環有多少種可能,請編寫程式計算出來,並列印出結果,0環和10環均有效。打中90環就是沒打中10環,所以打中90環跟打中10環的可能性是一樣的。然後開始遞迴狂打槍,一到10就記錄 if params i 10 在迴圈的控制中已經排除了大於10的可能性 i 10 pa...

一道面試題

前些時候在找工作,就在準備結束此次找工作歷程的時候,去了一家公司面試,去了之後技術經理直接帶到一台電腦旁,給了一張紙條,上面是這樣的題目 用c或c 來實現 1 建立一棵樹,該樹的深度是隨機的,每個節點的位元組點數是隨機的。2 給每個節點分配一段隨機大小的記憶體空間,給每個節點賦乙個隨機數。3 遍歷這...