C 事件 綜合案例分析

2021-08-25 13:04:22 字數 849 閱讀 4774

面試題:晚上貓大叫一聲,主人被驚醒,老鼠被下跑。用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...