一道有趣的C#考试题目
题目:猫叫,老鼠逃跑,主人惊醒。(10分)
要点:1. 联动效果,运行代码只要执行Cat.Cryed()方法。2. 对老鼠和主人进行抽象
评分标准: <1>.构造出Cat、Mouse、Master三个类,并能使程序运行(2分)
<2>从Mouse和Master中提取抽象(5分)
<3>联动效应,只要执行Cat.Cryed()就可以使老鼠逃跑,主人惊醒。(3分)
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}
81
82
设计方法二: 使用event -- delegate设计..
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}
转载于:https://www.cnblogs.com/CrazyWill/archive/2005/11/07/270819.html
一道有趣的C#考试题目相关推荐
- 一道有趣的大厂测试面试题,你能用 Python or Shell 解答吗?
本文是测试开发工程师 Venn 同学面试某互联网名企遇到的一道面试题目,首发于 Testerhome 社区,引发了有趣的讨论和解答,供各位测试同学参考.链接:https://testerhome.co ...
- python—成绩管理系统考试题目:小学五年级学生小明、小王、小丽、小花的语文、英语、数学成绩如……
python-成绩管理系统考试题目:小学五年级学生小明.小王.小丽.小花的语文.英语.数学成绩如-- 最近在做人工智能微专业时发现了一道特别有趣的题目,原谅作者才疏学浅,花费了将近一下午的时间才写出正 ...
- 四川话四级考试题目答案及详解(一)
四川话四级考试题目答案及详解(一) --阿风 一年一度的高考又开始了,全社会的人都在为考生紧张,都要尽量为考生提供方便,甚至暂时牺牲自己的方便.在这特殊的日子,阿风在网上看到一份有趣的试题:<四 ...
- 2评分标准多少分_突发!财政部刚刚通知!2020年中级考试题目分值及评分标准大变!...
突发!财政部刚刚通知!2020年中级考试题目分值及评分标准大变!其中: 1.三科多选题的评分标准由多选.少选.错选.不选均不得分变为少选得相应分值,多选.错选.不选均不得分. 2.三科判断题的评分标准 ...
- 历年CCF-CSP认证考试题目解法/思想
每年的题难度都不太一样,这一点在16.17年上尤其明显,难度低的时候前两道题就是送分题,加一起15分钟解决,得分样例水的不行.难度高的时候第二题就让你模拟半天,且测试样例诡异无比,测试样例通过可能只= ...
- 全面分析RHCE7(红帽认证工程师)考试题目之 ----SSH篇
管理SSH服务(远程连接服务) 一,ssh服务常用配置参数 /etc/ssh/sshd_config 注意:修改端口时要确保SELinux 不是 Enforcing [root@test13 ~]# ...
- 全面分析RHCE7(红帽认证工程师)考试题目之 ----邮件篇
基础邮件服务 电子邮件服务器的基本功能 为用户提供电子邮箱存储空间(用户名@邮件域名) 处理用户发出的邮件-------传递给收件服务器 处理用户收到的邮件-------投递到邮箱 配置前提 虚拟机s ...
- 全面分析RHCE7(红帽认证工程师)考试题目之 ---Firewall(防火墙)篇
防火墙策略管理(firewall) 作用:隔离 局域网和外网之间 阻止入站,允许出站 软件防火墙 系统服务:firewalld 管理工具:firewall-cmd(命令工具. Linux7),fire ...
- CCF- CSP历年认证考试题目链接+题解总结(持续更新)
CCF- CSP历年认证考试题目链接+题解总结(持续更新ing) 目录 CCF- CSP历年认证考试题目链接+题解总结(持续更新ing) 202206第26次CCF计算机软件能力认证 202203第2 ...
最新文章
- 【机器学习入门】(5) 决策树算法实战:sklearn实现决策树,实例应用(沉船幸存者预测)附python完整代码及数据集
- 接受java的返回值_java怎样接受 到return的值的?
- 获取class的名字
- 冬季防御抗疫情宣传插画素材,时刻提醒大家注意
- 介绍一个基于ASP.NET MVC的框架Catharsis
- Linux(Ubuntu)使用日记------自定义命令的使用
- 计算机内存外存共同点,存储器:内存和外存
- 浅谈Http协议、TCP协议
- Could not find artfact com.oracle:ojdbc7:jar:12.1.0.2.0 in nexus-aliyun
- 微信小程序php后台实现
- Aras innovator: 怎样把excel文件导入到Aras数据库
- 微信公众号实现带图卡片分享链接
- 美国的互联网上网费现状
- 大于4GB镜像文件刻录方法
- BOSS直聘上市背后:招聘新人与行业老炮的终极对决
- 11月第3周新闻回顾:难忘的光棍节 辛劳的IT人
- windows安装torch_sparse\torch_geometric\torch_cluster
- web3j监听合约logs事件
- Android逐帧动画和补间动画
- 八一农垦大学计算机科学与技术专业好不好,黑龙江八一农垦大学最好的专业(什么专业最好)...
热门文章
- python绘制条形图-python3使用matplotlib绘制条形图
- python编程零基础-如何零基础入门Python编程?
- python变量类型-python变量的数据类型有哪些?
- python乘法口诀代码-浅析一句python代码成生九九乘法表
- php python-浅谈php调用python文件
- python程序员工作怎样-怎样才能成为一名Python程序员
- python中怎么输出中文-python中使用print输出中文的方法
- python项目归纳总结-【第108期】总结最近项目中常用的几个Python库
- python开发软件行么-python适合开发桌面软件吗?
- 给想学python-零基础的小白,如何学Python才能更快就业?