关于猫叫、老鼠逃跑、人被惊醒的程序设计

要求:

1、要有联动性,老鼠和人的行为是被动的

2、考虑可扩展行,猫叫声可能会引起其他联动效应

看到这个程序设计题目,我的第一反应是用事件来解决,猫叫触发了事件,引起了老鼠的逃跑,老鼠逃跑又触发了事件导致主人被惊醒。所以按照这个思路,我做出了如下的解答。

首先,将猫、老鼠、和人分别抽象出来为三个类,分别为:Cat、Mouse、People。在Cat类中我们做如下处理:

?
Public class Cat
{
Public delegate void Crying( object sender,EventArgs e); //定义一个猫叫委托
Public Event Crying cry; //定义猫叫事件
Public void OnCry(EventArgs e)
{
If(cry!= null )
{
Cry( this ,e);
}
}
Public void StartCrying() //猫叫、触发cry事件
{
MessageBox.Show( "猫开始叫了......" );
EventArgs e= new EventArgs();
OnCry(e);
}
}

?
Public class Mouse
{
Public delegate void Runing(Object sender,EventArgs e);
Public evnet delegate run;
Public void OnRun(EventArgs e)
{
If(run!= null )
{
Run( this ,e);
}
}
Public void StartRuning(Cat c)
{
c.cry+= new Cat.Crying(c_Cry); //注册了猫叫事件,老鼠听到猫叫则开始逃跑
}
Public void c_Cry( object sender,EvnetArgs e) //老鼠在逃跑时又触发了人被惊醒事件
{
MessageBox.Show( "老鼠开始逃跑了........" );
EventArgs e= new EventArgs();
OnRun(e);
}
}
Public class Person
{
Public void Waking(Mouse m)
{
m.run+= new Mouse.Runing(m_run); //人注册了老鼠逃跑事件,老鼠逃跑时人被 惊醒
}
Public void m_run( object sender,EventArgs e)
{
MessageBox.Show( "人醒了,What's wrong?" );
}
}

?
BtnTest_Click( object sender, EventArgs e)
{
Cat c= new Cat();
Mouse m= new Mouse();
Person p= new Person();
c.StartCrying();
m.StartRunning(c);
p.Waking(m);
}

实验效果依次如下:

下面再通过另一个方式来解决这个问题。

Observer(观察者模式)

首先我们需要新建两个接口:

?
Public interface Observer
{
Void Response(); //对被观察对象的行为作出反应,这里是指猫叫
}
Public interface Subject
{
Void AddObserver(Observer obj); //添加所有的观察者,在发生动作时对他们进行通知
}

?
Public class Cat:Subject
{
ArrayList arrlyList;
Public Cat()
{
arrlyList= new ArrayList();
}
Void AddObserver(Observer obj) //实现添加观察着对象的方法
{
arrlyList.Add(obj);
}
Void Cry() //猫叫了,并通知所有的观察者,作出相应的反应
{
MessageBox.Show( "猫叫了......" );
Foreach(Observer obj in arrlyList)
{
obj.Response();
}
}
}

?
Public class Mouse:Observer
{
Public Mouse(Cat c) //将当前的观察着对象添加到观察者集合中
{
c.AddObserver( this );
}
Public void Response()
{
MessageBox.show( "老鼠开始逃跑了....." );
}
}

?
Public class People:Observer
{
Public People(Cat c) //将当前的观察着对象添加到观察者集合中
{
c.AddOberver( this );
}
Public Void Respone()
  {
MessageBox.Show( "人醒了,What's Wrong?" );
}
}

?
Btn_Click(Object sender,EventArgs e)
{
Cat c= new Cat();
Mouse m= new Mouse(c);
People p= new People(c);
c.Cry();
}
日常工作记录---在虚拟机中进行slam建图    今天是10月24号,首先祝各位程序员们节日快乐!!!    最近一周由于实习的原因,对ROS的探索学习,停滞了一段时间,所以今天也就没什么大的进展,本篇文章仅仅记录一下,我在虚拟机中进行slam建图可行性验证的过程,本篇文章同样使用古月学院《如何在Gazebo中实现阿克曼转向车的仿真》的课程资料来进行验证    下面各条之间并没有严格的顺序关系,每一条都是独立的,都是我在验证过程中的经验或者记录:    1、在运行roslaunch bringup racecar_gazebo_rviz.lau 阅读详情

相关推荐

模拟调制系统实战:从AM到FM的5种调制方式对比与选型指南

本文深度解析AM、DSB、SSB、VSB、FM五种经典模拟调制方式,从实现电路、频谱效率、抗噪性能及工程成本等维度进行实战对比。通过MATLAB/Simulink仿真案例,提供清晰的选型决策框架,帮助工程师在无人机图传、短波通信、广播系统等具体项目中,根据带宽、功耗和抗干扰需求选择最优方案。

study的专栏 935

c#经典面试题:猫叫,主人醒,老鼠跑

实现方法:分3个类实现,分别为猫类,老鼠类,主人类。 猫类:定义一个猫叫事件; 老鼠类:订阅猫叫事件,在猫发出叫声这个事件后,老鼠逃跑; 主人类:类似于老鼠类,在猫发出叫声这个事件后,主人醒来; 猫类实现如下: namespace CarCry{ /// <summary> /// 猫类的定义 /// </summary> ...

diaoshanwai2368的博客 345

【实战指南】从零构建UNet多分类分割数据集:标注、转换与训练全流程

本文提供了一份从零构建UNet多分类分割数据集的完整实战指南。详细介绍了使用Labelme进行图像标注的核心技巧与规范,并通过Python脚本将标注结果转换为模型可用的VOC格式。最后,指导如何修改经典的PyTorch版UNet代码,以适配自定义数据集并进行训练与测试,帮助读者完成从数据准备到模型训练的全流程。

arduino9maker的博客 289

事件模拟场景:猫叫->老鼠逃跑 & 主人惊醒

这是一个典型的观察者模式的应用场景,事件的发源在于猫叫这个动作,在猫叫之后,老鼠开始逃跑,而主人则会从睡梦中惊醒。可以发现,主人和老鼠这两个类型的动作相互之间没有联系,但都是由猫叫这一事件触发的。   设计的大致思路在于,猫类包含并维护一个猫叫的动作,主人和老鼠的对象实例需要订阅猫叫这一事件,保证猫叫这一事件发生时主人和老鼠可以执行相应的动作。   (1)设计猫类,为其定义一个猫叫的事件Cat

李赛赛的专栏 3033

使用 DEM 模拟金属烧结过程

了解离散元素法 (DEM) 如何彻底改变烧结工艺,提高制造业的效率和精度。

jkh920184196的博客 1129

KEPServerEX6教程:IoT Gateway与MQTT Client实现工业数据双向通信

工业物联网的核心挑战在于异构设备协议与云端平台之间的数据互通。Modbus、S7、OPC UA等现场协议纷繁复杂,而上层应用普遍偏好MQTT、REST等轻量接口,此时需要一个可靠的协议转换层。MQTT作为低带宽、高可靠的发布/订阅消息协议,天然适合工业数据采集与远程控制场景。KEPServerEX6作为工业网关软件,内置IoT Gateway与MQTT Client组件,分别承担数据上行发布与指令下行订阅的职责,形成完整的双向闭环。通过配置Modbus TCP设备驱动、创建Tag、设置MQTT Broker

weixin_33787529的博客 391

C#程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。

程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。(C#语言) 要求: 1.要有联动性,老鼠和主人的行为是被动的。 2.考虑可扩展性,猫的叫声可能引起其他联动效应。 要点:1. 联动效果,运行代码只要执行Cat.Cryed()方法。    2. 对老鼠和主人进行抽象 —————————————————————————————————— 看到这个程序设计题目,第一反...

2913

Python 爬虫进阶:淘宝热卖商品价格走势抓取、反爬与分析全流程

在大数据时代,数据是商业决策的重要依据。电商平台上的商品价格走势,对于商家调整经营策略、消费者选择购买时机都有着关键的参考价值。本篇文章将深入解析如何利用 Python 爬虫抓取淘宝热卖商品的价格走势数据,并应对其中的反爬机制,最后对数据进行分析,带领大家领略 Python 爬虫在电商领域的强大应用。

yansideyucsdn的博客 1060

观察者模式和委托实现 - 老鼠跑,猫叫,人醒

 老鼠跑,猫叫,人醒是典型的事件联动,解决此种情形,可以利用观察者模式或者事件委托来实现。利用设计模式时要考虑耦合,但利用事件委托的话,就不需要了。因为用委托的话,理解比较容易,这里没有单写,而是将委托的相关代码写到了观察者模式的类代码中。namespace ObserverCatMousePerson { public interface ISubject { void Attach(Observer o); void Detach(Observe

xrongzhen的专栏 4172

从重复劳动到智能闭环:OpenClaw实战搭建小红书&公众号全自动化运营体系

如果你有一定的代码开发能力,还可以为OpenClaw开发自定义插件,拓展更多的功能,比如对接更多的平台,实现图文+短视频的全平台自动化运营;对接视频剪辑工具,实现短视频脚本生成、剪辑、配音、发布的全流程自动化;对接私域运营工具,实现公域引流、私域承接、用户转化的全链路自动化;对接电商平台,实现内容种草、商品上架、订单管理的全流程自动化,打造完整的内容电商闭环。新媒体运营的本质,是内容价值的传递,而不是机械的重复劳动。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 312

图像处理系列——直方图之直方图规定化(Histogram Specification)

直方图规定化也叫直方图匹配(Histogram Matching),让原图像的像素分布与规定图像的像素分布保持一致。直方图规定化比直方图均衡化更加灵活,算是直方图均衡的变种。常用于图片风格一致性的自动处理,能有效的改善图像的整体或局部的特征,广泛运用在图像增强处理中。

nanke_yh的博客 4595

Java猫叫老鼠跑人惊醒_关于猫叫、老鼠逃跑、人被惊醒的程序设计

题目是这样的:猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。要求:1、要有联动性,老鼠和人的行为是被动的2、考虑可扩展行,猫叫声可能会引起其他联动效应看到这个程序设计题目,我的第一反应是用事件来解决,猫叫触发了事件,引起了老鼠的逃跑,老鼠逃跑又触发了事件导致主人被惊醒,或者是猫叫引起了老鼠逃跑、人醒。所以按照这个思路,我做出了如下的解答。第一种解决方案用事件来解决:是多级的联动:即:猫叫-》老鼠跑...

weixin_31596631的博客 1204

SpringBoot 系列教程(二):SpringBoot使用Devtools实现热部署

1.devtools   spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用。 2.项目搭建   本文是采用IDEA搭建的Spring Boot应用,通过spring-boot-devtools配置,可以支持修改java文件会自动重启程序,一些资源无需触发重启,...

Thinkingcao的专栏 1216

Java猫叫老鼠跑人惊醒_.net 程序设计:猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。...

展开全部这个问题用委32313133353236313431303231363533e4b893e5b19e31333365643532托和事件来处理,首先定义一只猫:publicclassCat{publicdelegatevoidDeleMiao();publiceventDeleMiaoEventMiao;publicvoidMiao(){Console.WriteLin...

weixin_39903176的博客 655

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒

第一种解决方案用事件来解决:是多级的联动:即:猫叫-》老鼠跑-》人醒 1 public class Cat 2 { 3 public delegate void Crying(object sender,EventArgs e);//定义一个猫叫委托 4 public event Crying cry;//定义猫叫事件 5 public...

dayanhe4061的博客 545

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

猫叫,老鼠逃跑,主人惊醒--答案

要点:1.   联动效果,运行代码只要执行Cat.Cryed()方法。2.   对老鼠和主人进行抽象   评分标准:   .构造出Cat、Mouse、Master三个类,并能使程序运行(2分)   从Mouse和Master中提取抽象(5分)   联动效应,只要执行Cat.Cryed()就可以使老鼠逃跑,主人惊醒。(3分)     程序代码 1using   System;   2using

Anders_lt的专栏 1420

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒

程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。(C#语言) 要求:   1.要有联动性,老鼠和主人的行为是被动的。 2.考虑可扩展性,猫的叫声可能引起其他联动效应。  要点:1. 联动效果,运行代码只要执行Cat.Cryed()方法。2. 对老鼠和主人进行抽象 评分标准: .构造出Cat、Mouse、Master三个类,并能使程序运行(2分)

Hunk的专栏 727

程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。(C#语言)

程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。(C#语言)要求:  1.要有联动性,老鼠和主人的行为是被动的。2.考虑可扩展性,猫的叫声可能引起其他联动效应。 要点:1. 联动效果,运行代码只要执行Cat.Cryed()方法。2. 对老鼠和主人进行抽象评分标准: .构造出Cat、Mouse、Master三个类,并能使程序运行(2分)            从Mouse和Master中提

hunter的专栏 4101

设计题:猫叫,老鼠逃跑,主人惊醒。在网上面看到很多不同的设计版本,自己也写一个,供讨论是否设计思路正确

猫叫,老鼠逃跑,主人惊醒。程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。(C#语言) 要求:  1.要有联动性,老鼠和主人的行为是被动的。       2.考虑可扩展性,猫的叫声可能引起其他联动效应。 主要是一个观察者模式。UML图为:                                                                

zzmdegm的专栏 3293

Java猫叫老鼠跑人惊醒_用代码表示如下情景:猫叫、老鼠逃跑、主人惊醒

### 1. 定义猫类型,并且该类型负责维护猫叫事件 *Cat.cs*```csharpusing System;namespace CatCry{/// /// 猫类型,维护猫叫事件/// public class Cat{/// /// 猫名/// private String _name;/// /// 猫叫的事件/// public event EventHandler CatCryEve...

weixin_34481252的博客 396
上一篇: .Net/C#: 实现支持断点续传多线程下载的 Http Web 客户端工具类
下一篇: C# 实现的 AES 加密算法
devgis
博客等级 码龄16年 52粉丝 60原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值