Вы находитесь на странице: 1из 7

Министерство образования Республики Беларусь

Учреждение образования
БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ

Факультет инженерно-экономический
Кафедра экономической информатики

ОТЧЕТ
по лабораторной работе

« КЛАССЫ И ОБЪЕКТЫ В ЯЗЫКЕ С++ »

Студент гр. 073603 М. А. Леванович


Проверил М. Н. Салапура

Минск 2021
Общая постановка задачи
Цель работы: изучить структуру класса, атрибуты доступа к
компонентам класса; рассмотреть принцип работы конструкторов (с
параметрами, без параметров, с параметрами по умолчанию, конструктора
копирования), деструкторов при работе с объектом, статические и
константные данные и методы класса.

1. Краткие теоретические сведения

Конструктор - специальная функция, позволяющая


инициализировать объект в процессе его декларирования
(определения).

Копирующий конструктор – конструктор, который вызывается в


случае, когда один объект инициализирует другой.

Деструктор - противоположные действия, по отношению к


действиям конструктора, выполняет

Указатель *this — это скрытый константный указатель, содержащий


адрес объекта, который вызывает метод класса

2. Индивидуальное задание
Построить систему классов для описания плоских геометрических
фигур: круг, квадрат, прямоугольник. Предусмотреть методы для создания
объектов, перемещения их на плоскости, изменения размеров
фигур.Написать программу, демонстрирующую работу с этими классами.
Программа должна содержать меню, позволяющее осуществить
проверкувсех методов классов. В класс добавить необходимый набор
полей и методов (минимум два поля и два метода) на свое усмотрение.
Предусмотреть метод для записи полученных данных в файл.

Листинг

#include <iostream>
#include <math.h>
#include <conio.h>
#include <fstream>

using namespace std;

class Circle
{
double cx, cy, r;
public:
void circle_input();
void circle_output();
void circle_moving();
void circle_change();
};
class Square
{
double ax, ay, cx, cy;
public:
void square_input();
void square_output();
void square_moving();
void square_change();
};
class Rectangle
{
double ax, ay, cx, cy;
public:
void rectangle();
void rectangle_output();
void rectangle_moving();
void rectangle_change();
};

int main()
{
setlocale(LC_ALL, "");
Circle a;
Square b;
Rectangle c;
int nf;
cout << "Select a shape: \n\nCircle - 1\nSquare - 2\nRectangle - 3" << endl;
cin >> nf;
switch (nf)
{
case 1:
a.circle_input();
a.circle_output();
a.circle_moving();
a.circle_output();
a.circle_change();
a.circle_output();
break;
case 2:
b.square_input();
b.square_output();
b.square_moving();
b.square_output();
b.square_change();
b.square_output();
b.square_output();
break;
case 3:
c.rectangle();
c.rectangle_output();
c.rectangle_moving();
c.rectangle_output();
c.rectangle_change();
c.rectangle_output();
c.rectangle_output();
break;
default:
cout << "The menu item is selected incorrectly" << endl;
break;
}
_getch();
}

//=======================INPUT==========================//
void Circle::circle_input()
{
cout << endl;
cout << "Enter the circle parameters\n";
cout << " cx=";
cin >> cx;
cout << " cy=";
cin >> cy;
cout << " r=";
cin >> r;
cout << endl;
}
void Square::square_input()
{
cout << endl;
cout << "Enter the parameters of the square ";
cout << endl;
cout << "Coordinates of the center:\n cx=";
cin >> cx;
cout << " cy=";
cin >> cy;
cout << "Vector from center to vertex:\n";
cout << " ax=";
cin >> ax;
cout << " ay=";
cin >> ay;
}

void Rectangle::rectangle()
{
cout << endl;
cout << "Enter the rectangle parameters";
cout << endl;
cout << "Coordinates of the center:\n cx=";
cin >> cx;
cout << " cy=";
cin >> cy;
cout << "Vector from center to vertex:\n";
cout << " ax=";
cin >> ax;
cout << " ay=";
cin >> ay;
}

//==========================OUTPUT=============================//
void Circle::circle_output()
{
cout << "Shape Parameters";
cout << endl;
cout << "cx=" << cx << " cy=" << cy << " r=" << r;
cout << endl;
ofstream out;
out.open("C:\\Users\\executor\\Desktop\\bsuir\\кс\\res.txt");
if (out.is_open())
{
out << "Shape Parameters\n\n" << cx << "\n" << cy <<"\n" << r << endl;
}

cout << "End of program" << endl;


return;

void Square::square_output()
{
cout << "Shape Parameters";
cout << endl;
cout << "cx=" << cx << " cy=" << cy << " ax=" << ax << " ay=" << ay;
cout << endl;
ofstream out;
out.open("C:\\Users\\executor\\Desktop\\bsuir\\кс\\res.txt");
if (out.is_open())
{
out << "Shape Parameters\n\n" << cx << "\n" << cy << "\n" << ax << "\n" << ay
<< endl;
}

cout << "End of program" << endl;


return;
}

void Rectangle::rectangle_output()
{
cout << "Shape Parameters";
cout << endl;
cout << "cx=" << cx << " cy=" << cy << " ax=" << ax << " ay=" << ay;
cout << endl;
ofstream out;
out.open("C:\\Users\\executor\\Desktop\\bsuir\\кс\\res.txt");
if (out.is_open())
{
out << "Shape Parameters\n\n" << cx << "\n" << cy << "\n" << ax << "\n" << ay
<< endl;
}

cout << "End of program" << endl;


return;
}

//=====================MOVING==========================//
void Circle::circle_moving()
{
int sx, sy;
cout << "Enter the coordinates of the shape offset";
cout << endl;
cout << "Offset by X=";
cin >> sx;
cout << "Offset by Y=";
cin >> sy;
cx = cx + sx; cy = cy + sy;
//ax=ax+sx;ay=ay+sy;
}

void Square::square_moving()
{
int sx, sy;
cout << "Enter the coordinates of the shape offset ";
cout << endl;
cout << "Offset by X=";
cin >> sx;
cout << "Offset by Y= ";
cin >> sy;
cx = cx + sx; cy = cy + sy;
ax = ax + sx; ay = ay + sy;
}
void Rectangle::rectangle_moving()
{
int sx, sy;
cout << "Enter the coordinates of the shape offset ";
cout << endl;
cout << "Offsrt by X=";
cin >> sx;
cout << "Offset by Y=";
cin >> sy;
cx = cx + sx; cy = cy + sy;
ax = ax + sx; ay = ay + sy;
}

//============================SIZE==========================//
void Circle::circle_change()
{
double k;
cout << "Coefficient of change in the radius of the circle =";
cout << endl;
cin >> k;
r = r * k;
}

void Square::square_change()
{
double k;
cout << "Coefficient of variation of the distance to the top of the square = ";
cout << endl;
cin >> k;
ax = ax - cx;
ay = ay - cy;
ax = ax * k;
ay = ay * k;
ax = ax + cx;
ay = ay + cy;
}

void Rectangle::rectangle_change()
{
double k;
cout << "Coefficient of variation of the distance to the top of the rectangle = ";
cout << endl;
cin >> k;
ax = ax - cx;
ay = ay - cy;
ax = ax * k;
ay = ay * k;
ax = ax + cx;
ay = ay + cy;
}

Рисунок 1. Результат работы программы.

Рисунок 2. Запись полученных данных в файл

Выводы

Изучил структуру класса, атрибуты доступа к компонентам класса.


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