- •Отчет по лабораторной работе №4 Обработка событий. Простейший интерфейс программы.
- •1 Техническое задание
- •Введение
- •Основание для разработки
- •Назначение
- •Требования к программе
- •Требования к функциональным характеристикам
- •Требования к надёжности
- •Требования к составу и параметрам технических средств
- •Требования к информационной и программной совместимости
- •5 Определения классов
- •6 Реализация методов обработки событий
- •7 Реализация всех методов HandleEvent
- •8 Подключаемые библиотеки и метод main
- •9 Скриншот, иллюстрирующий результат работы программы
Требования к надёжности
Предусмотреть контроль вводимой информации
Предусмотреть блокировку некорректных действий пользователя при работе с системой.
Обеспечить целостность хранимой информации.
Требования к составу и параметрам технических средств
Тип процессора – Intel Pentium 1 и выше; Объём оперативной памяти – 64 мб и выше.
Требования к информационной и программной совместимости
Система должна работать под управлением Windows 7 Starter и выше.
Требования к программной документации
Разрабатываемые программные модули должны быть самодокументированы, т.е. тексты программ должны содержать все необходимые комментарии.
Программная система должна включать справочную информацию о работе и подсказки пользователю.
2 Иерархия классов
Рисунок 1 – Иерархия классов в виде графа
3 Иерархия объектов
Рисунок 2 – Иерархия
объектов в виде графа
4 Описание маршрута, который проходит событие TEvent от формирования до очистки
Событие TEvent образуется в методе void MyApplication::GetEvent(), где для него с клавиатуры задаются наименование команды (которое потом переводится в числовой эквивалент), после чего это событие проходит первоначальную обработку в методе void MyApplication::HandleEvent(), в котором, при необходимости, указываются дополнительные параметры для события. Если событие не было полностью выполнено в классе приложения, оно передаётся объекту-группе, содержащемуся в классе приложения, который затем обрабатывает это событие (добавляет элементы, или удаляет их) и передаёт это событие своим элементам-группам, если он не смог обработать эти события. Это происходит до тех пор, пока один из объектов не обработает событие и не вызовет для события метод Clear().
5 Определения классов
class TEvent
{
public:
TEvent(void);
~TEvent(void);
int _evType;
int _commandID;
TObject* _param1;
char* _param2;
void ClearEvent();
};
class MyApplication
{
private:
TDepartment* _head;
TEvent* _currentEvent;
public:
MyApplication(void);
~MyApplication(void);
void GetEvent();
void Execute();
void HandleEvent();
void ShowCommands();
};
class TObject
{
protected:
char* _name;
public:
TObject();
TObject(char* name);
virtual ~TObject();
char* GetName();
void SetName(char* name);
virtual void Show() = 0;
};
class TPerson : public TObject
{
public:
TPerson(void);
TPerson(char* name, int age);
virtual ~TPerson(void);
virtual void Show() = 0;
protected:
int _age;
};
class Employee :
public TPerson
{
public:
Employee(void);
Employee(Employee& emp);
Employee(char* name, int age, int workExp);
~Employee(void);
int GetWorkExp();
void Show();
protected:
int _workExpirience;
};
class Worker :
public TPerson
{
public:
Worker(void);
Worker(Worker& wk);
Worker(char* name, int age, int workExpirience);
~Worker(void);
int GetWorkExp();
virtual void Show();
protected:
int _workExpirience;
};
class Engineer :
public Worker
{
public:
Engineer(void);
Engineer(Engineer& eng);
Engineer(char* name, int age, int workExp);
void Show();
~Engineer(void);
};
class TDepartment :
public TObject
{
protected:
TPerson* _head;
TItem* _listHead;
TDepartment();
TDepartment(char* name, TPerson* head);
public:
virtual ~TDepartment(void);
TPerson* GetHead();
void SetHead(TPerson* person);
void PushBack(TObject* obj);
bool Remove(TObject* obj);
void ForEach(PF action, int minExp);
virtual void Show();
void HandleEvent(TEvent* ev);
};
class Branch :
public TDepartment
{
public:
void Show();
Branch(void);
Branch(char* name, TPerson* head);
~Branch(void);
};
class WorkShop :
public TDepartment
{
public:
WorkShop(char* name, TPerson* head);
WorkShop(void);
~WorkShop(void);
void Show();
};
class Factory :
public TDepartment
{
public:
Factory(void);
Factory(char* name, TPerson* head);
~Factory(void);
void Show();
};