面試題:晚上貓大叫一聲,主人被驚醒,老鼠被下跑。用c#實現這個過程。
這個題目中一共有三個物件:貓、主人和老鼠。這三個物件之間即不屬於is a...的關係,也不屬於has a...的關係,但三者又有相互聯絡。
不能把主人和老鼠作為貓的成員變數出現,因為貓物件並不擁有主人和老鼠這兩個物件。
不能在貓任何方法中例項化主人和老鼠。因為貓的任何動作都不會動態產生主人和老鼠。
不能在貓的cry方法中傳入主人物件和老鼠物件,因為貓大叫不是為了叫醒主人或嚇跑老鼠,可能是貓正在說夢話。所以把主人和老鼠物件傳遞給貓的cry()方法也不合情理。
通過上面分析我們看到,即不能把主人和老鼠作為貓的成員變數,又不能動態產生或接收主人、老鼠物件,那這三者之間如何建立關係呢?
當然是是我們剛講過的事件。
主人類中有乙個「驚醒」的方法;貓的類中有乙個「大叫」的方法;老鼠類中有乙個「逃跑」方法。並且貓中還有乙個「大叫」事件,這個事件是多播**,它依次呼叫主人的「驚醒」方法和老鼠的「逃跑」方法。
下面是具體**:
using system;
//定義貓大叫事件的**
public delegate void alerthandler();
//主人類
class human
}//老鼠類
class mouse
}//貓類
class cat
//貓大叫事件執行的處理程式
public void alert()
//貓大叫的方法
public void cry()
}//房子類
class house
}//客戶程式
class program}
2 綜合案例
1.逆序對及應用 2.學會應用排序演算法 3.理解單調佇列及應用 4.理解二分法 1.逆序對 設 a 為乙個有 n 個數字的有序集 n 1 其中所有數字各不相同。如果存在正整數 i,j 使得 1 i j n 而且 a i a j 則 這個有序對稱為 a 的乙個逆序對,也稱作逆序數。使用歸併排序演算法...
ansible roles綜合案例
ansible自1.2版本引入的新特性,用於層次性,結構化地組織playbook。roles能夠根據層次結構自動裝載變數檔案 tasks以及handlers等。要使用roles只需要在playbook中使用include指令即可。簡單來講,roles就是通過分別將變數 檔案 任務 模板及處理器放置於...
JQuery綜合案例(六)
需求 當頁面載入完成,3秒後,自動顯示廣告 廣告顯示5秒後,自動消失 分析 使用定時器,settimeout 執行一次定時器 jquery的顯示和隱藏動畫就是控制display 使用show,hide完成廣告顯示和隱藏 實現 function function adshow function adh...