Цвинтарный Иван 362-1 Лабораторная работа 11
.docxМинистерство науки и высшего образования Российской Федерации
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)
Кафедра промышленной электроники (ПрЭ)
ОТЧЁТ
по результатам лабораторной работы №11
по дисциплине «Информатика»
Классы
Выполнил
Студент гр. 362-1
________ Цвинтарный И.В.
«___» __________
Проверил
Преподаватель
_____________ Савин Д.А.
«___»__________
Томск 2023
Оглавление
Введение 3
1. Ход работы 4
2. Индивидуальное задание 5
3. Программный код – текст программы 5
4. Результаты работы программы 9
Заключение 10
Введение
В десятой лабораторной работе нам необходимо научиться создавать класс и описывать его свойства и методы. Изучить спецификаторы доступа private и public. Освоить применение конструктора, деструктора, set- и get- методов. Освоить работу с объектами класса: корректно создавать, инициализировать, получать значения свойств, визуализировать и удалять. Научиться выделять память под динамические объекты класса и освобождать ее. Освоить обращение к свойствам и методам динамических объектов. Научиться программировать интерфейс класса и реализацию класса в соответствующих *.h и *.cpp файлах, корректно подключать их к проекту, используя препроцессорную обертку.
1. Ход работы
1. Задать класс, реализующий операции с данными, в соответствии с индивидуальным заданием
2. Написать конструктор и деструктор класса
3. Свойства объектов класса хранить со спецификатором private. Написать методы set и get обращения ко всем свойствами класса
4. Написать метод визуализации (вывода на экран) свойств класса
5. Интерфейс, реализацию и вызов объектов класса запрограммировать в трех различных файлах: класс.h, класс.cpp и main.cpp – соответственно
6. В главной программе продемонстрировать работу со статическими и динамическими переменными – объектами класса: корректно создать, заполнить данными, визуализировать и удалить
7. Продемонстрировать перегрузку хотя бы одного оператора
8. Продемонстрировать использование дружественной (friend) функции
9. В отчете привести листинг программы, скриншоты тестирования программы, рисунок структуры класса. Листинг программы без комментариев не принимается
2. Индивидуальное задание
Вариант индивидуального задания – 1.
Рисунок 2.1 – Формулировка задания
3. Программный код – текст программы
Основная программа:
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include "CRect.h"
using namespace std;
void print_ComplexNumber(ComplexNumber& sol);
int main()
{
setlocale(LC_ALL, "RUS");
ComplexNumber sol(11, 23);
ComplexNumber sol2(14, 14);
sol.Sum(sol2);
sol.print();
cout << "Modul1 = " << sol.getModul() << endl;
cout << endl;
ComplexNumber* complexch = new ComplexNumber(10, 15);
complexch->print();
*complexch += 15;
complexch->print();
delete complexch;
cout << endl;
ComplexNumber obj(-1, -1);
obj.print();
obj += 20;
obj.setX1(-150);
obj.setY1(-150);
cout << "Complex = " << obj.getX1() << " + " << obj.getY1() << "i" << endl;
obj.print();
cout << "Modul1 = " << obj.getModul() << endl;
cout << endl;
print_ComplexNumber(obj);
obj -= 1;
obj.print();
void print_ComplexNumber (ComplexNumber & sol)
{
cout << "Дружественная функция" << endl;
cout << "Complexd1 = " << sol.real1 << " + " << sol.imig1 << "i" << endl;
}
CRect.h:
#define _CRT_SECURE_NO_WARNINGS
#pragma once
class ComplexNumber
{
private:
int real1;
int imig1;
public:
ComplexNumber();
ComplexNumber(int real1, int imig1);
~ComplexNumber();
void print();
int getX1();
void setX1(int real);
int getY1();
void setY1(int imig);
ComplexNumber& operator += (int d);
ComplexNumber& operator -= (int d);
ComplexNumber& Sum(ComplexNumber& sol);
int getModul();
friend void print_ComplexNumber(ComplexNumber& sol);
};
CRect.cpp:
#define _CRT_SECURE_NO_WARNINGS
#include "CRect.h"
#include <iostream>
#include "math.h"
using namespace std;
ComplexNumber::ComplexNumber()
{
cout << "Конструктор по умолчанию (адрес): " << this << endl;
real1 = 6;
imig1 = 8;
}
ComplexNumber::ComplexNumber(int real1, int imig1)
{
cout << "Конструктор с параметрами (адрес): " << this << endl;
this->real1 = real1;
ComplexNumber::imig1 = imig1;
}
ComplexNumber::~ComplexNumber()
{
cout << "Деструктор (адрес): " << this << endl;
}
void ComplexNumber::print()
{
cout << "Complex1 = " << real1 << " + " << imig1 << "i" << endl;
}
int ComplexNumber::getX1()
{
return real1;
}
void ComplexNumber::setX1(int real)
{
if (real < 0)
{
real1 = 2;
cout << "Превышено минимальное значение действительной части real1!" << endl;
}
else if (real > 100)
{
real1 = 100;
cout << "Превышено максимальное значение действительной части real1!" << endl;
}
else
real1 = real;
}
int ComplexNumber::getY1()
{
return imig1;
}
void ComplexNumber::setY1(int imig)
{
if (imig < 0)
{
imig1 = 2;
cout << "Превышено минимальное значение мнимой части imig1!" << endl;
}
else if (imig > 100)
{
imig1 = 100;
cout << "Превышено максимальное значение мнимой части imig1!" << endl;
}
else
imig1 = imig;
}
ComplexNumber& ComplexNumber::operator += (int d)
{
real1 += d;
imig1 += d;
if (real1 > 100)
real1 = 100;
if (imig1 > 100)
imig1 = 100;
return *this;
}
ComplexNumber& ComplexNumber::operator -= (int d)
{
real1 -= d;
imig1 -= d;
if (real1 < 0)
real1 = 2;
if (imig1 < 0)
imig1 = 3;
return *this;
}
int ComplexNumber::getModul()
{
return (sqrt(pow(real1, 2) + pow(imig1, 2)));
}
ComplexNumber& ComplexNumber::Sum(ComplexNumber& sol)
{
real1 += sol.real1;
imig1 += sol.imig1;
cout << "ComplexSum = " << real1 << " + " << imig1 << "i" << endl;
return *this;
}
4. Результаты работы программы
Рисунок 4.1 – Результат работы программы
Заключение
В ходе лабораторной работы научились создавать класс и описывать его свойства и методы. Изучили спецификаторы доступа private и public. Освоили применение конструктора, деструктора, set- и get- методов. Освоили работу с объектами класса: корректно создавать, инициализировать, получать значения свойств, визуализировать и удалять. Научились выделять память под динамические объекты класса и освобождать ее. Освоили обращение к свойствам и методам динамических объектов. Научились программировать интерфейс класса и реализацию класса в соответствующих *.h и *.cpp файлах, корректно подключать их к проекту, используя препроцессорную обертку. Закрепили навыки, приобретенные в прошлых лабораторных работах.