目的: 练习 OOA, OOD, OOP 和设计模式, 并使用C++或者Java开发一个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);
}