Разработка класса геометрической фигуры, определение функций, необходимых для реализации класса (Лабораторная работа № 2)

Страницы работы

10 страниц (Word-файл)

Содержание работы

МОиН РФ

НГТУ

Кафедра прикладной математики

Лабораторная работа №2

по объектно-ориентированному программированию

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

Группа: ПМ-42

Студент: Шилов Д.А.

Преподаватель: Полетаева И.А.

г.Новосибирск, 2005 г.

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

Разработать класс геометрической фигуры, определить функции, необходимые для реализации класса. Выделить интерфейс класса и поместить его в открытую часть описания. Включить в разработанный класс функции

– устанавливающие геометрические и графические характеристики фигуры;

– изменяющие положение фигуры;

– рисующие фигуру на экране;

– осуществляющие сохранение информации о фигуре в файле и считывание ее из файла. Разработать функцию, демонстрирующую поведение класса. Поместить реализацию класса в один файл, а демонстрационную функцию – в другой. Обеспечить необходимые межмодульные связи. Фигура: квадрат.

2.  Алгоритм.

Изменение положения фигуры реализовано через Num клавиши 1,2,3,4,6,7,9 – пользователь вводит их с клавиатуры. Реализовано открытие двух потоков для чтения координат главной фигуры и их сохранения.

3.  Текст программы.

/*Main.cpp

#include<graphics.h>

#include<conio.h>

#include<stdio.h>

#include<stdlib.h>

#include"Kv.cpp"

cl_kvadrat kvadrat;

void main()

{

          fp=fopen("C:\\dano.txt","r");

          if (fp == NULL) {perror("oshibka pri otkritii faila"); printf("error!");}

          fp2=fopen("C:\\rez.txt","w");

          if (fp2 == NULL) {perror("oshibka priotkritii faila"); printf("error2!");}

          clrscr(); /*ochistka ekrana*/

          int gd, gm, error;

          int ch=150;

          detectgraph(&gd, &gm);

          initgraph(&gd, &gm, "C:\\BorlandC\\BGI");

          error=graphresult();

//-----------------proverka na oshibki-----------//

          if(error!=grOk)

           {

           puts("oshibka grafiki");

           puts(grapherrormsg(error));

           exit(1);

           }

//-----------------------------------------------//

          maxx=getmaxx();

          maxy=getmaxy();

          printf("\nVnimanie! Koordinata x ne dolzhna prevyshat' znacheniya %d, a y %d\n",maxx,maxy);

          printf("\nVvedite x-koordinatu levoy verhney vershiny kvadrata\n");

          scanf("%d",&x1);

          if (x1>maxx) {printf("\nKoordinata ne pomesh'aetsya na ekrane - vvedite men'she!\n"); getch(); exit(0);};

          if (x1<0) {printf("\nKoordinata ne mozhet byt' otricatel'noy!\n"); getch(); exit(0);};

          printf("\nVvedite y-koordinatu levoy verhney vershiny kvadrata\n");

          scanf("%d",&y1);

          if (y1>maxy) {printf("\nKoordinata ne pomesh'aetsya na ekrane - vvedite men'she!\n"); getch(); exit(0);};

          if (y1<0) {printf("\nKoordinata ne mozhet byt' otricatel'noy!\n"); getch(); exit(0);};

          printf("\nVvedite x-koordinatu pravoy nizhney vershiny kvadrata\n");

          scanf("%d",&x2);

          if (x2>maxx) {printf("\nKoordinata ne pomesh'aetsya na ekrane - vvedite men'she!\n"); getch(); exit(0);};

          if (x2<0) {printf("\nKoordinata ne mozhet byt' otricatel'noy!\n"); getch(); exit(0);};

          printf("\nVvedite y-koordinatu pravoy nizhney vershiny kvadrata\n");

          scanf("%d",&y2);

          if (y2>maxy) {printf("\nKoordinata ne pomesh'aetsya na ekrane - vvedite men'she!\n"); getch(); exit(0);};

          if (y2<0) {printf("\nKoordinata ne mozhet byt' otricatel'noy!\n"); getch(); exit(0);};

          cleardevice();          /*vsya grafika - po umolchaniyu*/

          clearviewport();        /*ochistka graficheskogo okna*/

          settextstyle(SMALL_FONT,HORIZ_DIR,4);

          setfillstyle(SOLID_FILL,14);

          while(ch!=0)

          {

          clrscr();

          outtextxy(maxx-300,maxy-210,"1-Chtenie koordinat glavnoi figury iz faila");

          outtextxy(maxx-300,maxy-200,"2-Zapis' koordinat glavnoi figury v fail");

          outtextxy(maxx-300,maxy-190,"3-Graf i geom Nastroyki figury");

          outtextxy(maxx-300,maxy-180,"4-Narisovat' nezakrashennuyu figuru");

          outtextxy(maxx-300,maxy-170,"5-Zalivanie cvetom");

          outtextxy(maxx-300,maxy-160,"6-Risovanie vlozhennoy figury");

          outtextxy(maxx-300,maxy-150,"7-Proverka vvedennyh dannyh");

          outtextxy(maxx-300,maxy-140,"8-Proverka vlozhennosti");

          outtextxy(maxx-300,maxy-130,"9-Izmenit' polozhenie glavnoi figury");

          outtextxy(maxx-300,maxy-120,"0-Vyhod");

          outtextxy(maxx-300,maxy-100,"Vyberete punkt");

          scanf("%d",&ch);

          if (ch==1) kvadrat.read_file();

          if (ch==2) kvadrat.save_file();

          if (ch==3) kvadrat.settings();

          if (ch==4) kvadrat.risov();

          if (ch==5) kvadrat.zaliv();

          if (ch==6) kvadrat.vlozh();

          if (ch==7) kvadrat.prov_dannyh();

          if (ch==8) kvadrat.prov_vlozh();

          if (ch==9) kvadrat.izm_polozh();

          if (ch!=0&&ch!=1&&ch!=2&&ch!=3&&ch!=4&&ch!=5&&ch!=6&&ch!=7&&ch!=8&&ch!=9) {printf("Nevernaya komanda!"); getch();};

          };

          fclose(fp);

          fclose(fp2);

          closegraph();

          exit(0);

}

Kv.cpp

#include<graphics.h>

#include<conio.h>

#include<stdio.h>

#include<stdlib.h>

int a1,b1,a2,b2,x1,x2,y1,y2,cvet,foncvet,shirina,sm_x,sm_y,maxx,maxy;

FILE*fp;

FILE*fp2;

//-------------------------------------------------------------------------------------//

//-------------------------------------------------------------------------------------//

Похожие материалы

Информация о работе