使用C++开发一个事件驱动系统

elegant87 2010-11-29 11:01:16
目的: 练习 OOA, OOD, OOP 和设计模式, 并使用C++开发一个EDP(事件驱动) 系统。
要求:
EDP是现代软件开发的基础架构,本次实验要求在不使用现有技术条件下,设计和实现C++/Java的事件驱动架构。并提供事件驱动和事件处理方法。
(1) 设计所有事件的父类名为Event;
(2) 设计事件句柄,并使用虚函数实现,该句柄应至少有一个事件参数(Event event);
(3) 设计EventHandler 类封装事件句柄函数,设计EventHandlerList 类 用于保存 EventHandlers. EventHandlerList至少实现三种方法: Add(将EventHandlers加入列表); PrepareEvent 在分发前准备事件; Dispatch 调用EventHandlers 处理准备好的事件
(4) 使用上面定义好的类 重写下面基于文本的计算程序.


#include <iostream>
using namespace std;
// event handlers
void add () { // "+" event handler
int in1,in2;
cout << "Please enter two integers: \n";
cin >> in1 >> in2;
cout << "The result is: " << in1 + in2 << "\n";
}
void sub () { // "-" event handler
int in1,in2;
cout << "Please enter two integers: \n";
cin >> in1 >> in2;
cout << "The result is: " << in1 - in2 << "\n";
}
int main() {
// Initialization
char s = '+';
while(1) { // event loop
cout << "Please select an operation (+,-,q): \n";
cin >> s; // event
switch(s){ //event mapper
case '+': add(); break; //event mapping
case '-': sub(); break; //event mapping
case 'q': exit(1); break; //event mapping
}
}
return(1);
}

大家有什么好的想法,说来看看。怎么设计这个系统
...全文
630 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
elegant87 2010-12-03
  • 打赏
  • 举报
回复
看来这个问题有待深入研究一下
iambic 2010-12-03
  • 打赏
  • 举报
回复
当然是用最复杂最麻烦最吓唬人的技术了,上ACE吧。
herman~~ 2010-12-03
  • 打赏
  • 举报
回复
事件驱动,看起来跟MFC的机制有像,不知道是这意思吗
xili 2010-12-03
  • 打赏
  • 举报
回复
这种系统往往产生大量轮询,而大多数收到消息的对象都不处理它,直接放弃.于效率有亏. 是否真的需要,仔细权衡
liutengfeigo 2010-11-30
  • 打赏
  • 举报
回复
不懂哦,学习。
just_run_run_run 2010-11-30
  • 打赏
  • 举报
回复
enum msgs
{
MSG_1,
MSG_2
}
class Msg; //发送者、接收者、事件ID、参数;
class EventObject; //HandleMsg(Msg* msg) virtual
class EventManager; //AddEvent, RemoveEvent, QueryByEventId
class EventDispitcher; //.......
....
gules 2010-11-30
  • 打赏
  • 举报
回复
要完整的实现事件驱动,不是那么容易!对于这类问题,我的想法是:
1、找一个参考,做第2点;
2、暂不考虑细节,构架出基本结构与功能(越简单越好,逐步扩展);
3、事件驱动必须考虑的几点东西,即发送者、接收者、事件分派、参数;
4、实现细节。
elegant87 2010-11-30
  • 打赏
  • 举报
回复
大家有什么好的想法
思路说说看
ryfdizuo 2010-11-30
  • 打赏
  • 举报
回复
command模式,监听模式。
找个开源库看一下,
一般窗口系统和应用程序之间都需要一个事件驱动层,
look_back 2010-11-30
  • 打赏
  • 举报
回复
Command 模式来做,可用proxy来包装
bluewanderer 2010-11-29
  • 打赏
  • 举报
回复
感觉题目描述已经够具体了...

64,688

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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