- •Отчет по лабораторной работе №3 Иерархия объектов и группа. Итераторы.
- •1 Техническое задание
- •Введение
- •Основание для разработки
- •Назначение
- •Требования к программе
- •Требования к программной документации
- •3 Иерархия объектов
- •4 Определение классов (добавленных или измененных по сравнению с лабораторной работой № 2)
- •5 Реализация для одного не абстрактного класса-группы всех методов
- •6 Реализация итератора
- •7 Реализация передаваемой итератору функции
- •8 Подключаемые библиотеки и метод main
- •9 Скриншот, иллюстрирующий результат работы программы
Требования к программной документации
Разрабатываемые программные модули должны быть самодокументированы, т.е. тексты программ должны содержать все необходимые комментарии.
Программная система должна включать справочную информацию о работе и подсказки пользователю.
2 Иерархия классов в виде графа
Рисунок 1 – Иерархия классов в виде графа
3 Иерархия объектов
Рисунок 2 – Иерархия
объектов
4 Определение классов (добавленных или измененных по сравнению с лабораторной работой № 2)
class TObject
{
protected:
char* _name;
public:
TObject();
TObject(char* name);
virtual ~TObject();
char* GetName();
void SetName(char* name);
virtual void Show() = 0;
};
class TDepartment : public TObject
{
protected:
TPerson* _head;
TItem* _listHead;
public:
TDepartment();
TDepartment(char* name, TPerson* head);
virtual ~TDepartment(void);
TPerson* GetHead();
void SetHead(TPerson* person);
void PushBack(TObject* obj);
void ForEach(PF action, int minExp);
virtual void Show() = 0;
};
class Branch :
public TDepartment
{
public:
void Show();
Branch(void);
Branch(char* name, TPerson* head);
~Branch(void);
};
class Factory :
public TDepartment
{
public:
Factory(void);
Factory(char* name, TPerson* head);
~Factory(void);
void Show();
};
class WorkShop :
public TDepartment
{
public:
WorkShop(char* name, TPerson* head);
WorkShop(void);
~WorkShop(void);
void Show();
};
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 // Класс Employee - потомок класса Person
{
public:
Employee(void); // Конструктор по умолчанию
Employee(Employee& emp);
Employee(char* name, int age, int workExp); // Конструктор с параметрами
~Employee(void); //Деструктор
int GetWorkExp();
void Show(); // Метод для отображения объекта, переопределяет метод Show класса Person
protected:
int _workExpirience; // Поле для рабочего стажа
};
class Worker : public TPerson // Класс Worker - потомок класса Person
{
public:
Worker(void); // Конструктор по умолчанию
Worker(Worker& wk);
Worker(char* name, int age, int workExpirience); // Конструктор с параметрами
~Worker(void); // Деструктор
int GetWorkExp();
virtual void Show(); // Виртуальный метод, переопределяет метод Show класса Person
protected:
int _workExpirience; // Поле для рабочего стажа
};
class Engineer : public Worker // Класс Engineer - потомок класса Worker
{
public:
Engineer(void); // Конструктор по умолчанию
Engineer(Engineer& eng);
Engineer(char* name, int age, int workExp); // Конструктор с параметрами
void Show(); // Метод для отображения объекта, переопределяет метод Show класса Worker
~Engineer(void); // Деструктор
};