上次在这里看到一道面试题,是关于人,猫,老鼠的写一段代码的题目,不知道大家有没有看到过??在线等 就是老鼠看到猫有什么反应,之间的类与类的之间关系,我忘了题目,现在急用,谢谢大家了. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 观察者模式 和 事件模型 分别实现http://www.aspxboy.com/private/showthread.asp?threadid=939 事件嘛mouse m = new mouse()cat ca = new cat();m.run += new EventHandel(ca.DistanceChange)class cat(){void DistanceChange (){if ( getDistance(cat ,mouse) < cat.视力范围){ bite();}else{ sleeping()}}}//核心代码基本上这么多,能看懂就行 夜晚,一只猫大叫,所有的老鼠逃窜,主人被惊醒,起身........ 要求:画出UML图 2、根据以上编写一个程序。要点:1. 联动效果,运行代码只要执行Cat.Cryed()方法。2. 对老鼠和主人进行抽象 评分标准: <1> .构造出Cat、Mouse、Master三个类,并能使程序运行(2分) <2> 从Mouse和Master中提取抽象(5分) <3> 联动效应,只要执行Cat.Cryed()就可以使老鼠逃跑,主人惊醒。(3分) 程序代码 1using System; 2using System.Collections; 3 4namespace ConsoleApplication1 5{ 6 public interface Observer 7 { 8 void Response(); //观察者的响应,如是老鼠见到猫的反映 9 } 10 public interface Subject 11 { 12 void AimAt(Observer obs); //针对哪些观察者,这里指猫的要扑捉的对象---老鼠 13 } 14 15 public class Mouse : Observer 16 { 17 private string name; 18 public Mouse(string name, Subject subj) 19 { 20 this.name = name; 21 subj.AimAt(this); 22 } 23 24 public void Response() 25 { 26 Console.WriteLine(name + " attempt to escape! "); 27 } 28 } 29 30 public class Master : Observer 31 { 32 public Master(Subject subj) 33 { 34 subj.AimAt(this); 35 } 36 37 public void Response() 38 { 39 Console.WriteLine( "Host waken! "); 40 } 41 } 42 43 44 public class Cat : Subject 45 { 46 private ArrayList observers; 47 public Cat() 48 { 49 this.observers = new ArrayList(); 50 } 51 public void AimAt(Observer obs) 52 { 53 this.observers.Add(obs); 54 } 55 public void Cry() 56 { 57 Console.WriteLine( "Cat cryed! "); 58 foreach (Observer obs in this.observers) 59 { 60 obs.Response(); 61 } 62 } 63 } 64 65 class MainClass 66 { 67 /**//// <summary> 68 /// 应用程序的主入口点。 69 /// </summary> 70 [STAThread] 71 static void Main(string[] args) 72 { 73 Cat cat = new Cat(); 74 Mouse mouse1 = new Mouse( "mouse1 ", cat); 75 Mouse mouse2 = new Mouse( "mouse2 ", cat); 76 Master master = new Master(cat); 77 cat.Cry(); 78 } 79 } 80} 设计方法二: 使用event -- delegate设计.. 程序代码 1using System; 2using System.Collections; 3 4 5namespace ConsoleApplication1 6{ 7 public delegate void SubEventHandler(); 8 public abstract class Subject 9 { 10 public event SubEventHandler SubEvent; 11 protected void FireAway() 12 { 13 if (this.SubEvent != null) 14 this.SubEvent(); 15 } 16 } 17 public class Cat : Subject 18 { 19 public void Cry() 20 { 21 Console.WriteLine( "cat cryed. "); 22 this.FireAway(); 23 } 24 } 25 26 public abstract class Observer 27 { 28 public Observer(Subject sub) 29 { 30 sub.SubEvent += new SubEventHandler(Response); 31 } 32 public abstract void Response(); 33 } 34 public class Mouse : Observer 35 { 36 private string name; 37 public Mouse(string name, Subject sub) : base(sub) 38 { 39 this.name = name; 40 } 41 public override void Response() 42 { 43 Console.WriteLine(name + " attempt to escape! "); 44 } 45 } 46 public class Master : Observer 47 { 48 public Master(Subject sub) : base(sub){} 49 public override void Response() 50 { 51 Console.WriteLine( "host waken "); 52 } 53 } 54 55 class MainClass 56 { 57 /**//// <summary> 58 /// 应用程序的主入口点。 59 /// </summary> 60 [STAThread] 61 static void Main(string[] args) 62 { 63 Cat cat = new Cat(); 64 Mouse mouse1 = new Mouse( "mouse1 ", cat); 65 Mouse mouse2 = new Mouse( "mouse2 ", cat); 66 Master master = new Master(cat); 67 cat.Cry(); 68 } 69 } 70} updatepanel+gridview无刷新分页问题不起作用 谁的机器装有sql 2005 麻烦帮忙把两个sql 2005 数据库转成sql 2000 Gridview中加入CheckBox,造成CheckBox实效的问题 如果我只看一本ASP.NET的书,我应该看那本 Datalist的问题 如何用代码更改DataGrid控件的页眉文本? 怎样使DATAGRID的数据更新后返回数据库 DataList 怎么从后台设置显示的数据 求textbox得到失去焦点事件的写法 求这种效果, 关于CheckBox的隐藏问题! 关于报表文件*.rpt
mouse m = new mouse()
cat ca = new cat();
m.run += new EventHandel(ca.DistanceChange)
class cat()
{void DistanceChange ()
{
if ( getDistance(cat ,mouse) < cat.视力范围)
{
bite();
}
else
{
sleeping()
}
}
}//核心代码基本上这么多,能看懂就行
2、根据以上编写一个程序。
要点:1. 联动效果,运行代码只要执行Cat.Cryed()方法。2. 对老鼠和主人进行抽象
评分标准:
<1> .构造出Cat、Mouse、Master三个类,并能使程序运行(2分)
<2> 从Mouse和Master中提取抽象(5分)
<3> 联动效应,只要执行Cat.Cryed()就可以使老鼠逃跑,主人惊醒。(3分)
程序代码
1using System;
2using System.Collections;
3
4namespace ConsoleApplication1
5{
6 public interface Observer
7 {
8 void Response(); //观察者的响应,如是老鼠见到猫的反映
9 }
10 public interface Subject
11 {
12 void AimAt(Observer obs); //针对哪些观察者,这里指猫的要扑捉的对象---老鼠
13 } 14
15 public class Mouse : Observer
16 {
17 private string name;
18 public Mouse(string name, Subject subj)
19 {
20 this.name = name;
21 subj.AimAt(this);
22 }
23
24 public void Response()
25 {
26 Console.WriteLine(name + " attempt to escape! ");
27 }
28 }
29
30 public class Master : Observer
31 {
32 public Master(Subject subj)
33 {
34 subj.AimAt(this);
35 }
36
37 public void Response()
38 {
39 Console.WriteLine( "Host waken! ");
40 }
41 }
42
43
44 public class Cat : Subject
45 {
46 private ArrayList observers;
47 public Cat()
48 {
49 this.observers = new ArrayList();
50 }
51 public void AimAt(Observer obs)
52 {
53 this.observers.Add(obs);
54 }
55 public void Cry()
56 {
57 Console.WriteLine( "Cat cryed! ");
58 foreach (Observer obs in this.observers)
59 {
60 obs.Response();
61 }
62 }
63 }
64
65 class MainClass
66 {
67 /**//// <summary>
68 /// 应用程序的主入口点。
69 /// </summary>
70 [STAThread]
71 static void Main(string[] args)
72 {
73 Cat cat = new Cat();
74 Mouse mouse1 = new Mouse( "mouse1 ", cat);
75 Mouse mouse2 = new Mouse( "mouse2 ", cat);
76 Master master = new Master(cat);
77 cat.Cry();
78 }
79 }
80}
设计方法二: 使用event -- delegate设计..
程序代码
1using System;
2using System.Collections;
3
4
5namespace ConsoleApplication1
6{
7 public delegate void SubEventHandler();
8 public abstract class Subject
9 {
10 public event SubEventHandler SubEvent;
11 protected void FireAway()
12 {
13 if (this.SubEvent != null)
14 this.SubEvent();
15 }
16 }
17 public class Cat : Subject
18 {
19 public void Cry()
20 {
21 Console.WriteLine( "cat cryed. ");
22 this.FireAway();
23 }
24 }
25
26 public abstract class Observer
27 {
28 public Observer(Subject sub)
29 {
30 sub.SubEvent += new SubEventHandler(Response);
31 }
32 public abstract void Response();
33 }
34 public class Mouse : Observer
35 {
36 private string name;
37 public Mouse(string name, Subject sub) : base(sub)
38 {
39 this.name = name;
40 }
41 public override void Response()
42 {
43 Console.WriteLine(name + " attempt to escape! ");
44 }
45 }
46 public class Master : Observer
47 {
48 public Master(Subject sub) : base(sub){}
49 public override void Response()
50 {
51 Console.WriteLine( "host waken ");
52 }
53 }
54
55 class MainClass
56 {
57 /**//// <summary>
58 /// 应用程序的主入口点。
59 /// </summary>
60 [STAThread]
61 static void Main(string[] args)
62 {
63 Cat cat = new Cat();
64 Mouse mouse1 = new Mouse( "mouse1 ", cat);
65 Mouse mouse2 = new Mouse( "mouse2 ", cat);
66 Master master = new Master(cat);
67 cat.Cry();
68 }
69 }
70}