Министерство образования и науки Российской Федерации
НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Кафедра прикладной математики
«ШАБЛОНЫ»
по
“Объектно-ориентированному программированию”
Факультет: прикладной математики и информатики
Группа: ПМ-42
Студентка: Яндуловой О.Л.
Преподаватель: Еланцева И. Л.
Новосибирск
2005
1. Постановка задачи:
Путем модификации программ, разработанных в лабораторных работах № 3,4, разработать шаблон контейнера для хранения объектов классов, реализующих геометрические фигуры. Преобразовать класс-контейнер, разработанный в лабораторной работе №3, в шаблон, так чтобы элементами контейнеров могли быть различные классы, разработанные в лабораторной работе №4 (при различном инстанцировании шаблона). Разработать функцию, демонстрирующую поведение разработанного шаблона: провести инстанцирование шаблона для каждого из классов-фигур, продемонстрировать их функционирование.
Фигура: четырехугольник.
2. Алгоритм:
template <class T> class cont
private:
list<T> *data; содержит указатели data и last
list<T> *last;
public:
cont(); функция конструктор;
~cont(); функция деструктор;
void v_cont(); функция положить в контейнер;
int iz_cont(int l); функция взять из контейнера;
list<T>* poisk(int k); функция поиска элемента в контейнере;
void pokaz(int reverse); функция показа содержимого контейнера;
template <class T> cont<T>::cont()
{Функция конструктор, выделение памяти};
template <class T>cont<T>::~cont()
{функция деструктор, освобождение памяти};
template <class T> void cont<T>::v_cont()
{Функция положить в контейнер элемент. Элементом является четырехугольник};
template <class T> int cont<T>::iz_cont(int l)
{Функция взять из контейнера элемент. Элементом является четырехугольник};
template <class T> list<T> *cont<T>::poisk(int k)
{функция поиска элемента в контейнере. Элементом является четырехугольник. Поиск осуществляется по графическим параметрам};
template <class T> void cont<T>::pokaz(int rv)
{функция показа содержимого контейнера как в прямом, так и в обратном порядке};
3. Текст разработанной программы:
Класс:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <graphics.h>
class figyra
{ protected: int a[8];
public: void get_geom(int *x1,int *y1,int *x2,int *y2,int *x3,int *y3,int *x4,int *y4);
void set_geom(int b[]);
virtual void zakras()=0;
void in1();
};
class figyra_kontyr:public figyra
{ protected: int thickness;
int linestyle;
int color_kont;
public: int get_thickness();
int get_linestyle();
int get_color_kont();
void set_thickness(int thickness1);
void set_linestyle(int linestyle1);
void set_color_kont(int color_kont1);
virtual void zakras();
void in1();
void in2();
int comp2(figyra_kontyr *c);
};
class zakrawennui
{ protected: int color;
public: int get_color();
void set_color(int c);
};
class zakrawennaja_figyra:
public figyra_kontyr,
public zakrawennui
{ public: void zakras();
void in1();
void in2();
int comp2(zakrawennaja_figyra *c);
};
class kombinirovannaja_figyra:
public zakrawennaja_figyra
{ protected: zakrawennaja_figyra f,g;
public: void zakras();
void in1();
void in2();
int comp2(kombinirovannaja_figyra *c);
};
void figyra::get_geom(int *x1,int *y1,int *x2,int *y2,int *x3,int *y3,int *x4,int *y4)
{ *x1=a[0];
*y1=a[1];
*x2=a[2];
*y2=a[3];
*x3=a[4];
*y3=a[5];
*x4=a[6];
*y4=a[7];}
void figyra::set_geom(int b[])
{ int i;
for(i=0;i<8;i++)
a[i]=b[i];}
void figyra::in1()
{ int a[8];
int i,t;
for(i=0,t=1;i<8;i=i+2,t++)
{ printf("x%d=",t);
scanf("%d",&a[i]);
printf("y%d=",t);
scanf("%d",&a[i+1]); }
set_geom(a);
if(a[0]>639||a[1]>479||a[2]>639||a[3]>479||a[4]>639||a[5]>479||a[6]>639||a[7]>479)
{ puts("chetirehugolnik ne vhodit v ekran");
getche();
exit(8); }}
int figyra_kontyr::get_thickness()
{return thickness;}
int figyra_kontyr::get_linestyle()
{return linestyle;}
int figyra_kontyr::get_color_kont()
{return color_kont;}
void figyra_kontyr::set_thickness(int thickness1)
{thickness=thickness1;}
void figyra_kontyr::set_linestyle(int linestyle1)
{linestyle=linestyle1;}
void figyra_kontyr::set_color_kont(int color_kont1)
{color_kont=color_kont1;}
void figyra_kontyr::zakras()
{ int b[8];
setcolor(color_kont);
setlinestyle(linestyle,0,thickness);
setfillstyle(EMPTY_FILL,getbkcolor());
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.