Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Цвинтарный Иван 362-1 Лабораторная работа 11

.docx
Скачиваний:
4
Добавлен:
21.06.2023
Размер:
141.21 Кб
Скачать

Министерство науки и высшего образования Российской Федерации

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)

Кафедра промышленной электроники (ПрЭ)

ОТЧЁТ

по результатам лабораторной работы №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 файлах, корректно подключать их к проекту, используя препроцессорную обертку. Закрепили навыки, приобретенные в прошлых лабораторных работах.