Министерство образования и науки Российской Федерации
Новосибирский государственный технический университет
Лабораторная работа №2
Классы
Факультет: ПМИ
Группа: ПМ-55
Студент: Быданов А.А.
Преподаватель: Еланцева И.Л
Дата сдачи:
Новосибирск 2006г.
1. Задание
Модифицировать программу, разработанную в лабораторной работе №1, так чтобы в ней был определен класс, реализующий понятие геометрической фигуры в графической системе.
2. Описание функций
Функции класса Romb:
Внешние:
Romb() - инициализирующая класс функция, устанавливает
стандартные графические параметры
~Romb() - деструктор.
voidGet(intz) – извлечение данных из класса: координаты точек пересечения диагоналей ромбов, длины этих диагоналей, углы наклона по часовой стрелке. Z - номер извлекаемого элемента в списке.
voidGetxy(intz) – извлечение данных из класса: координаты вершин ромбов.
Z - номер извлекаемого элемента в списке.
void enter(int xo, int yo,int dx1,int dy1,int angle1,int xoo,int yoo,int dx2,int dy2,int angle2) - функция ввода, полученные данные – координаты точек пересечения диагоналей ромбов, длины этих диагоналей, углы наклона по часовой стрелке, далее использует calculation() для вычисления координат вершин ромбов.
voidcontromb() - рисует контур ромба (незакрашенный ромб), для построения используются координаты «внешнего» ромба.
voidcoloromb() - рисует закрашенный ромб, для построения используются координаты «внешнего» ромба.
voiddupromb() - рисует два ромба, один из которых («внешний») вложен в другой («внутренний»), для построения используются координаты двух ромбов.
voidload() - загружает данные из файла load.txt (в том числе и графические параметры).
voidsave() - сохраняет данные в файл save.txt (в том числе и графические параметры.
intmove(intrx, intry) - изменяет координаты вершин ромба на заданный вектор (x,y) (т.е. перемещает ромб).
voidoptions(intfl,inttl,intcl,inttf,intcf) - графические опции, устанавливает указанные толщину, тип, цвет линии и тип, цвет заливки.
Внутренние:
voiddrawromb() - рисует контур ромба, в отличие от contromb() графические параметры не учитываются.
voidcalculation() - вычисляет координаты вершин ромба, используя для этого координаты точки пересечения диагоналей ромба, длины этих диагоналей и угол наклона ромба по часовой стрелке.
Функции демонстрационной программы:
intcheck1() - проверка на попадание ромба в пределы экрана, в случае выхода ромба за пределы экрана выводится сообщение об ошибке.
1 – если ромб попадает за экран, 0 – если все нормально
intcheck2() - проверка на вложенность фигур, в случае, когда фигуры не вложены, выводится сообщение об ошибке.
1 – если ромбы не вложены, 0 – если все нормально
void enter() – функция ввода параметров для построения ромба: координаты точки пересечения диагоналей, длины диагоналей, угол наклона по часовой стрелке, а также передачи этих данных объекту класса Romb.
void Goptions() – функция ввода графических параметров: толщина, тип, цвет линий и тип, цвет заливки. Передача этих параметров объекту класса Romb (функция options).
void Vektor() – функция ввода вектора, на который должен сместиться ромб, передача данных объекту класса ромб (функция move).
void Change() – функция частичного изменения параметров ромба, передача данных объекту класса Romb.
void Output() – функция вывода параметров ромба (объект класса Romb) на экран.
void main() – головная функция программы, инициализирует графический режим, запускает демонстрационное меню.
3. Программа
Файл - clasromb.cpp
--------------------------------------------------------------------------------
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
class Romb
{int lx, ly, llx, lly, alf, bet, x[10], y[10], n;
int fatline, typeline, colorline, typefill, colorfill;
public:
Romb();
~Romb();
void enter(int xo, int yo,int dx1,int dy1,int angle1,int xoo,int yoo,int dx2,int dy2,int angle2);
void contromb();
void coloromb();
void dupromb();
void load();
void save();
void move(int rx, int ry);
void options(int fl,int tl,int cl,int tf,int cf);
int Get(int z);
int Getxy(int z);
private:
void drawromb();
void calculation();
};
Romb::Romb()
{fatline=1;
typeline=0;
colorline=7;
typefill=1;
colorfill=15;
}
//----------------------Vvod dannyh-------------------------
void Romb::enter(int xo, int yo,int dx1,int dy1,int angle1,int xoo,int yoo,int dx2,int dy2,int angle2)
{x[0]=xo;
y[0]=yo;
lx=dx1;
ly=dy1;
alf=angle1;
x[9]=xoo;
y[9]=yoo;
llx=dx2;
lly=dy2;
bet=angle2;
n=4;
calculation();
}
//-------------------Get-----------------
int Romb::Get(int z)
{int ret;
switch (z)
{case 1: ret=x[0]; break;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.