一道面試題的解析
題目: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 遍歷這...