一道面试题

wo554006164 2012-02-17 09:36:39
现在要设计一个热水器,当热水器温度超过50度就报警。
有个热水器类Heater,有一个加热的方法 heating(),有一个属性temperature 表示当前热水器温度
报警器类Alarm类,有个方法ring()

现在把下面main补充完整,实现当温度超过50度就报警(即调用Alarm类的ring()方法)


class Demo
{
public static void Main()
{
Heater heater=new Heater();
Alarm alarm=new Alarm();
//补充代码 实现方法注册


heater.heating();//加热

}
}


求把代码补充完整
...全文
152 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
youzelin 2012-02-18
  • 打赏
  • 举报
回复
结贴吧
youzelin 2012-02-17
  • 打赏
  • 举报
回复
1. Heater 类添加 Boil 事件,heating 方法插入代码:

if (temperature >= 100)
{
if (Boil != null) Boil(this, EventArgs.Empty);
}

2. Alarm 注册该事件:

heater.Boil += alarm.OnHeaterBoil; // OnHeaterBoil 自己定义


3. 定义OnHeaterBoil处理内容
WAN 2012-02-17
  • 打赏
  • 举报
回复
使用属性
class Demo
{
class Alarm
{
public void ring()
{
Console.WriteLine("Alarm");
}
}

class Heater
{
private Alarm _alarm;

private int _temperature;
public int temperature
{
get { return _temperature; }
set
{
_temperature = value;
if (_temperature > 50 && _alarm != null)
{
_alarm.ring();
}
}
}

public void SetAlarm(Alarm alarm)
{
_alarm = alarm;
}

public void heating()
{
while (temperature < 100)
{
System.Threading.Thread.Sleep(100);
temperature++;
}
}
}

public static void Main()
{
Heater heater = new Heater();
Alarm alarm = new Alarm();

heater.SetAlarm(alarm);

heater.heating();//加热

Console.ReadKey();

}
}
wo554006164 2012-02-17
  • 打赏
  • 举报
回复
他就是没写事件和委托,所以我不知道该怎么在Main里补充他的代码
wo554006164 2012-02-17
  • 打赏
  • 举报
回复
晕死,面试的时候,他的那个类里都没有事件和委托啊。
就直接让我在main里填,
EZIO 2012-02-17
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;
using System.Text;
namespace Delegate {
// 热水器
public class Heater {
private int temperature;
public delegate void BoilHandler(int param); //声明委托
public event BoilHandler BoilEvent; //声明事件

// 烧水
public void BoilWater() {
for (int i = 0; i <= 100; i++) {
temperature = i;

if (temperature > 95) {
if (BoilEvent != null) { //如果有对象注册
BoilEvent(temperature); //调用所有注册对象的方法
}
}
}
}
}

// 警报器
public class Alarm {
public void MakeAlert(int param) {
Console.WriteLine("Alarm:嘀嘀嘀,水已经 {0} 度了:", param);
}
}

// 显示器
public class Display {
public static void ShowMsg(int param) { //静态方法
Console.WriteLine("Display:水快烧开了,当前温度:{0}度。", param);
}
}

class Program {
static void Main() {
Heater heater = new Heater();
Alarm alarm = new Alarm();

heater.BoilEvent += alarm.MakeAlert; //注册方法
heater.BoilEvent += (new Alarm()).MakeAlert; //给匿名对象注册方法
heater.BoilEvent += Display.ShowMsg; //注册静态方法

heater.BoilWater(); //烧水,会自动调用注册过对象的方法
}
}
}
EZIO 2012-02-17
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;
using System.Text;
namespace Delegate {
// 热水器
public class Heater {
private int temperature;
public delegate void BoilHandler(int param); //声明委托
public event BoilHandler BoilEvent; //声明事件

// 烧水
public void BoilWater() {
for (int i = 0; i <= 100; i++) {
temperature = i;

if (temperature > 95) {
if (BoilEvent != null) { //如果有对象注册
BoilEvent(temperature); //调用所有注册对象的方法
}
}
}
}
}

// 警报器
public class Alarm {
public void MakeAlert(int param) {
Console.WriteLine("Alarm:嘀嘀嘀,水已经 {0} 度了:", param);
}
}

// 显示器
public class Display {
public static void ShowMsg(int param) { //静态方法
Console.WriteLine("Display:水快烧开了,当前温度:{0}度。", param);
}
}

class Program {
static void Main() {
Heater heater = new Heater();
Alarm alarm = new Alarm();

heater.BoilEvent += alarm.MakeAlert; //注册方法
heater.BoilEvent += (new Alarm()).MakeAlert; //给匿名对象注册方法
heater.BoilEvent += Display.ShowMsg; //注册静态方法

heater.BoilWater(); //烧水,会自动调用注册过对象的方法
}
}
}
EZIO 2012-02-17
  • 打赏
  • 举报
回复
namespace Demo {
class Heater {
private int temperature; // 水温
// 烧水
public void BoilWater() {
for (int i = 0; i <= 100; i++) {
temperature = i;

if (temperature > 95) {
MakeAlert(temperature);
ShowMsg(temperature);
}
}
}

// 发出语音警报
private void MakeAlert(int param) {
Console.WriteLine("Alarm:嘀嘀嘀,水已经 {0} 度了:" , param);
}

// 显示水温
private void ShowMsg(int param) {
Console.WriteLine("Display:水快开了,当前温度:{0}度。" , param);
}
}

class Program {
static void Main() {
Heater ht = new Heater();
ht.BoilWater();
}
}
}
wo554006164 2012-02-17
  • 打赏
  • 举报
回复
能帮补充完整吗
amandag 2012-02-17
  • 打赏
  • 举报
回复
这种就是考事件机制的
zhu_mingcheng 2012-02-17
  • 打赏
  • 举报
回复
<大话设计模式>这本书里面有
liuyuainil 2012-02-17
  • 打赏
  • 举报
回复
这个你就一直监测看温度是否达到50°,然后就调用报警事件。程序不难,楼主自己动手把。
  • 打赏
  • 举报
回复
这个应该是考观察者吧??
小童 2012-02-17
  • 打赏
  • 举报
回复
这个不难吧
昨日,11.19,最新整理了,第61-80,现在公布上传。 另加上之前公布的第1-60 ,在此做一次汇总上传,以飨各位。 可以这么说,绝大部分的面试,都是这100 道系列的翻版, 此微软等公司数据结构+算法面试100 系列,是极具代表性的经典面试。 而,对你更重要的是,我自个还提供了答案下载,提供思路,呵。 所以,这份资料+答案,在网上是独一无二的。 ------------------------------------ 整理资源,下载地址: 答案系列: 1.[最新答案V0.3 版]微软等数据结构+算法面试100 [第21-40 答案] http://download.csdn.net/source/2832862 2.[答案V0.2 版]精选微软数据结构+算法面试100 [前20 ]--修正 http://download.csdn.net/source/2813890 //此份答案是针对最初的V0.1 版本,进行的校正与修正。 3.[答案V0.1 版]精选微软数据结构+算法面试100 [前25 ] http://download.csdn.net/source/2796735 目系列: 4.[第一部分]精选微软等公司数据结构+算法经典面试100 [1-40 ] http://download.csdn.net/source/2778852 5.[第1 -60 汇总]微软等数据结构+算法面试100 http://download.csdn.net/source/2826690 更多资源,下载地址: http://v_july_v.download.csdn.net/ 若你对以上任何目或任何答案,有任何问,欢迎联系我: My E-mail: zhoulei0907@yahoo.cn ------------- 作者声明: 本人July 对以上公布的所有任何目或资源享有版权。转载以上公布的任何一, 或上传百度文库资源,请注明出处,及作者我本人。 向你的厚道致敬。谢谢。 ---July、2010 年11 月20 日。 ------------------------------------------------------ 各位,若对以上100任何一道,或对已上传的任何一的答案, 有任何问,请把你的思路、想法,回复到此帖子上, 微软等100系列,永久维护地址(2010年11.26日): http://topic.csdn.net/u/20101126/10/b4f12a00-6280-492f-b785-cb6835a63dc9.html
此为我个人搜集整理的, 精选微软等公司,有关 数据结构和算法的面试100[前40], 此绝对值得你下载收藏。 网友yui评论,真是够多的了,从此,不用再看其它面试.... 一句话,请享用。 其它资源,下载地址: 1.[最新答案V0.3版]微软等数据结构+算法面试100[第21-40答案] http://download.csdn.net/source/2832862 2.[第1-60汇总]微软等数据结构+算法面试100 http://download.csdn.net/source/2826690 3.[答案V0.2版]精选微软数据结构+算法面试100[前20]--修正 http://download.csdn.net/source/2813890 //此份答案是针对最初的V0.1版本,进行的校正与修正。 4.[答案V0.1版]精选微软数据结构+算法面试100[前25] http://download.csdn.net/source/2796735 5.[第二部分]精选微软等公司结构+算法面试100[前41-60]: http://download.csdn.net/source/2811703 6.[第一部分]精选微软等公司数据结构+算法经典面试100[1-40] http://download.csdn.net/source/2778852 更多资源,下载地址: http://v_july_v.download.csdn.net/ //请继续期待,后续内容。 ------------------------------------------------------ 各位,若对以上100任何一道,或对已上传的任何一的答案, 有任何问,请把你的思路、想法,回复到此帖子上, 微软等100系列,永久维护地址(2010年11.26日): http://topic.csdn.net/u/20101126/10/b4f12a00-6280-492f-b785-cb6835a63dc9.html -------July、2010年12月2日。
精选微软等数据结构+算法面试100答案修正V0.2版本 -------------------- 此份答案是针对,前期已公布的最初的那份答案的,初步校正与修正。 http://download.csdn.net/source/2796735(V0.1版) 相比第一份V0.1版答案,此份答案V0.2版更加准确,亦修正了不少目的答案。 此份20的答案,思路更加清晰易懂,简介明了。 请享用。July、2010/11/06。 其它资源,下载地址: 1.[最新答案V0.3版]微软等数据结构+算法面试100[第21-40答案] http://download.csdn.net/source/2832862 2.[第1-60汇总]微软等数据结构+算法面试100 http://download.csdn.net/source/2826690 3.[答案V0.2版]精选微软数据结构+算法面试100[前20]--修正 http://download.csdn.net/source/2813890 //此份答案是针对最初的V0.1版本,进行的校正与修正。 4.[答案V0.1版]精选微软数据结构+算法面试100[前25] http://download.csdn.net/source/2796735 5.[第二部分]精选微软等公司结构+算法面试100[前41-60]: http://download.csdn.net/source/2811703 6.[第一部分]精选微软等公司数据结构+算法经典面试100[1-40] http://download.csdn.net/source/2778852 更多资源,下载地址: http://v_july_v.download.csdn.net/ ------------------------------------------------------ 各位,若对以上100任何一道,或对已上传的任何一的答案, 有任何问,请把你的思路、想法,回复到此帖子上, 微软等100系列,永久维护地址(2010年11.26日): http://topic.csdn.net/u/20101126/10/b4f12a00-6280-492f-b785-cb6835a63dc9.html
火爆出炉:微软等数据结构+算法面试100首次完整亮相 ---100V0.1版最终完成 作者:July 2010年12月6日 微软等100系列V0.1版终于结束了。 从2010年10月11日当天最初发表前40以来,直至此刻,整理这100,已有近2个月。 2个月,因为要整理这100,很多很多其它的事都被我强迫性的搁置一旁, 如今,要好好专心去做因这100而被耽误的、其它的事了。 这微软等数据结构+算法面试100系列(目+答案),到底现在、或此刻、或未来, 对初学者有多大的意义,在此,我就不给予评说了。 由他们自己来认定。所谓,公道自在人心,我相信这句话。 任何人,对以下任何资料、目、或答案,有任何问,欢迎联系我。 作者邮箱: zhoulei0907@yahoo.cn 作者声明: 转载或引用以下任何资料、或目,请注明作者本人July及出处。 向您的厚道致敬,谢谢。 好了,请享受这完完整整的100吧,这可是首次完整亮相哦。:D。 ............ ............ 答案系列: 5.[最新答案V0.3版]微软等数据结构+算法面试100[第21-40答案] http://download.csdn.net/source/2832862 6.[答案V0.2版]精选微软数据结构+算法面试100[前20]--修正 http://download.csdn.net/source/2813890 //此份答案是针对最初的V0.1版本,进行的校正与修正。 7.[答案V0.1版]精选微软数据结构+算法面试100[前25] http://download.csdn.net/source/2796735 剩下的第41-100答案,正在整理中。预计明年整理公布。 请各位,细心的等待。谢谢。 更多资源,下载地址: http://v_july_v.download.csdn.net/ ================================== 更多详情,请参见本人博客: My Blog: http://blog.csdn.net/v_JULY_v --------------------------------------------------------------------------------------- 各位,若对以上100任何一道,或对已上传的任何一的答案, 有任何问,请把你的思路、想法,回复到此帖子上, 微软等100系列,永久维护地址(2010年11.26日): http://topic.csdn.net/u/20101126/10/b4f12a00-6280-492f-b785-cb6835a63dc9.html

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧