Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ооп55.docx
Скачиваний:
6
Добавлен:
27.03.2015
Размер:
91.24 Кб
Скачать

Министерство Образования и Науки РФ

Новосибирский Государственный Технический Университет

Кафедра ПМт

ЛАБОРАТОРНАЯ РАБОТА №5 по объектно-ориентированному программированию

на тему “Шаблоны”

Факультет: ПМИ

Группа: ПМ-22

Студент: Курский Д. Н.

Преподаватель: Лисицин Д. В.

Новосибирск

2013

1.Постановка задачи

Путём модификации программ, разработанных в лабораторных работах № 3,4, разработать шаблон контейнера для хранения объектов классов, реализующих геометрические фигуры.

Преобразовать класс контейнер, разработанный в лабораторной работе № 3, в шаблон, так чтобы элементы контейнеров могли быть различные классы, разработанные в лабораторной работе № 4.

2.Описание классов

Класс Figures это абстрактный класс, содержащий чисто виртуальные функции

{

Функции класса:

virtual POINT point_search() const =0-функция поиска точки внутри фигуры;

virtual void draw(HDC hdc,HWND hwnd) const = 0-функция рисовки фигуры;

virtual void smeish (POINT enter,HDC hdc,HWND hwnd) = 0-функция перемещения фигуры по экрану;

virtual void save (std::string enter) = 0-функция обеспечивающая сохранность фигуры;

virtual void lead (std::string enter)= 0-функция обеспечивающая доступ к сохранённым данным о фигуре;

};

Класс Figure_contour потомок класса Figures-хранит фигуры без заливки

{

Атрибуты:

POINT ppt[4]-координаты вершин трапеции;

int pixel_border-размер контура трапеции;

int R_l

int G_l-цвет пера

int B_l

Функции:

bool paralell (const POINT first,const POINT second) const-функция проверки параллельности двух прямых

bool proverca (HWND hwnd) const-функция проверяющая является фигура с данными координатами трапецией;

virtual void save_f(std::ofstream& in_file)-функция запись в файл;

virtual void lead_f (std::ifstream& infile)-функция загрузки из файла;

POINT point_search() const-функция ищет точку внутри трапеции;

void Set_Pen(COLORREF rgb)-функция изменяющая цвет пера;

void Set_Border(int enter)-функция изменяющая размер пера;

COLORREF Get_Pen() const-функция- получить цвет пера;

friend std::ifstream& operator>>(std::ifstream& infile,Figure_contour &p)-ввод из файла элемент типа Figure_contour;

int Get_Border() const-функция - получить размер пера;

Figure_contour ()-конструктор;

void draw(HDC hdc,HWND hwnd) const-функция рисовки элемента класса Figure_contour;

void Set_koord (POINT ppt[])-функция меняющая координаты трапеции;

void Get_koord(POINT ppt1[]) const-функция, получения координат трапеции;

virtual void lead (std::string enter)-функция открытия файла для чтения;

virtual void save (std::string enter)-функция открытия файла для записи;

virtual void smeish (POINT enter,HDC hdc,HWND hwnd)-функция перемещающая фигуру по экрану;

};

Класс Paint-задаёт цвет заливки, а так же границу заливки

{

Атрибуты класса:

int R_Z

int G_Z-цвет до которого происходит заливка;

int B_Z

int R_B

int G_B-цвет заливки (кисти);

int B_B

Функции класса:

void Set_Brush(COLORREF rgb)-функция, изменяющая цвет заливки;

void Set_Zaliv(COLORREF rgb)-функция, изменяющая цвет до которого происходит заливка;

COLORREF Get_Brush() const-функция, получения цвета заливки;

COLORREF Get_Zaliv() const-функция, получения цвета до которого происходит заливка;

}

Класс Shaded_figure потомок класса Paintи класса Figure_contour-хранит фигуры с внутренней заливкой

{

Функции класса:

virtual void save_f(std::ofstream& in_file)- функция сохранения данных фигуры;

virtual void lead_f (std::ifstream& infile)- функция загрузки фигуры из файла;

bool ris(HDC hdc) const-функция закрашивает фигуры;

void draw(HDC hdc,HWND hwnd) const-функция рисует закрашенную фигуру;

void lead (std::string enter)- функция открытия файла для чтения;

friend std::ifstream& operator>>(std::ifstream& infile,Shaded_figure &p)-функция ввода элементов этого типа;

void save (std::string enter)-функция открытия файла для записи;

Shaded_figure()-конструктор;

void smeish (POINT enter,HDC hdc,HWND hwnd)-функция перемещающая фигуру по экрану;

};

Класс Combined_figure потомок класса Shaded_figure- реализует 2 вложенных фигуры с закраской между ними;

{

Атрибуты

Figure_contour second-внутренняя не закрашенная фигура;

Функции класса

double Square (POINT point)const-функция вычисляет площади 4 треугольников ;

bool lie ()const-функция проверки вложенности фигур;

friend std::ifstream& operator>>(std::ifstream& infile,Combined_figure &p)-функция ввода элементов этого типа;

virtual void save_f(std::ofstream& in_file)- функция сохранения данных фигуры;

virtual void lead_f (std::ifstream& infile)- функция загрузки фигуры из файла;

Combined_figure()-конструктор;

void save (std::string enter)- функция открытия файла для записи;

void lead (std::string enter)- функция открытия файла для чтения;

void smeish (POINT enter,HDC hdc,HWND hwnd)-функция перемещающая фигуру по экрану;

void draw(HDC hdc,HWND hwnd) const-функция рисует элемент данного типа;

};

Класс binary_tree – класс шаблон для хранения объектов классов, реализующих геометрические фигуры;

{

Атрибуты

struct binary_t- структура в которой хранятся элементы дерева(шаблона);

{

binary_t* right;

binary_t* left;

int key;

T elem;

};

binary_t* top-указатель на вершину дерева;

Функции класса

void del_pr(binary_t* d)- функция удаления вершин дерева поиска;

void del_put1(int key,binary_t** enter,spis_t2<T>** resoult)- функция, которая ищет элементы с заданным ключом, и помещает их в линейный список resoult;

void del_el (binary_t **elem,spis_t2<T>** enter,int key) )-функция удаления элементов бинарного дерева с заданным ключом;

void pram_ob(binary_t *elem,spis_t<T> **resoult) )- функция прямого обхода дерева, с целью получить все его элементы в линейный список resuolt;

void pram_ob_data(binary_t *elem,std::ofstream& fil) -функция прямого обхода дерева, с целью сохранить данные в дереве;

binary_tree()-конструктор класса;

void input(T& elem,int key)-добавление элементов в дерево поиска;

spis_t<T>* output(int key)-функция поиска элемента в дерево поиска с заданным ключом;

spis_t<T>* print_all()-получение всех элементов дерева;

spis_t2<T>* del_put(int key)-функция, удаляющая и возвращающая элементы с заданным ключом;

void save_data(const char* name)-функция сохранения данных дерева;

void lead_data(const char* name)-функция прочтения записанных данных;

~binary_tree()-деструктор класса;

};

}