Файл: Отчет по лабораторной работе 1 по дисциплине Объектноориентированное программирование.docx
Добавлен: 27.10.2023
Просмотров: 166
Скачиваний: 7
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Министерство науки и высшего образования Российской Федерации
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)
Кафедра автоматизированных систем управления (АСУ)
Отчет по лабораторной работе № 1 по дисциплине
«Объектно-ориентированное программирование»
Выполнил:
Небиев Н.И.
« 19 » мая 2023 г.
Проверил:
«»20г.
Калининград 2023г
Оглавление
Индивидуальное_задание_1_3._Цель_работы._1_4._Результаты_работы_программы_1'>1. Тема работы 1
2. Индивидуальное задание 1
3. Цель работы. 1
4. Результаты работы программы 1
5. Выводы 3
Приложение А Листинг программы 4
-
Тема работы.
Классы. Открытые и закрытые уровни доступа.
Конструкторы. Инициализация данных объекта. Определение
методов. Создание объекта в памяти. Стандартные потоки
ввода-вывода.
-
Индивидуальное задание.
V = (27*64) div 100 = 17
Вариант 17
СОТОВЫЙ
марка — char
номер — int
сумма — float
-
Цель работы.
Цель данной лабораторной работы по ООП заключается в изучении классов и уровней доступа, конструкторов и методов объектов, а также создании и работы с объектами в памяти. Также в рамках работы необходимо изучить стандартные потоки ввода-вывода и научиться применять их в программировании на языке ООП.
-
Результаты работы программы.
Лабораторная работа была выполнена в интегрированной среде разработки (IDE) Clion, которая предоставляет удобный и эффективный интерфейс для написания и отладки программного кода на языке C++. Использование данной IDE позволило мне значительно ускорить процесс разработки, благодаря быстрому доступу к различным инструментам и функциям, таким как автоматическое завершение кода, подсветка синтаксиса, отладчик и многие другие.
При запуске программы создаем объект p1 и выводим его поля на экран:
Далее создаем объект p2 и выводим его поля на экран:
Затем меняем значения полей с помощью методов SetBrand, SetNumber, SetSum и выводим новые значения на экран с помощью методов GetBrand, GetNumber, GetSum:
После программа потребует указать brend, number, sum. При этом программа проверит вводимые значение number и sum:
-
Выводы.
В ходе выполнения данной лабораторной работы мы изучили классы и уровни доступа, конструкторы и методы объектов, а также создание и работу с объектами в памяти на языке ООП. Мы также освоили применение стандартных потоков ввода-вывода и научились использовать их в программировании.
В результате выполнения работы мы достигли поставленных целей и ответили на все поставленные в начале работы вопросы. Мы приобрели новые знания и навыки, которые могут быть использованы в будущих проектах, связанных с программированием на языке ООП.
Таким образом, выполнение данной лабораторной работы позволило нам более глубоко изучить основы объектно-ориентированного программирования и научиться применять их на практике.
Приложение А
main.h:
#include
#include
#pragma once
#ifndef PERSON_H // Директива условной компиляции, чтобы header-файл был включен только один раз
#define PERSON_H
#include
#include
#include
class Person {
private:
char* brand;
int number;
float sum;
public:
// Конструкторы и деструктор
Person(const char* b, int n, float s);
Person();
Person();
// Методы вывода и ввода объекта
void Print() const;
void Input();
// Методы установки и получения значений полей объекта
void SetBrand(const char* b);
void SetNumber(int n);
void SetSum(float s);
const char* GetBrand() const;
int GetNumber() const;
float GetSum() const;
};
#endif
main.cpp:
#include "main.h"
// Функция для проверки ввода числа
template
bool CheckInput(T& var) {
std::cin >> var;
if (std::cin.fail()) { // если ввод не удался
std::cin.clear(); // очищаем флаг ошибки
std::cin.ignore(std::numeric_limits<:streamsize>::max(), '\n'); // удаляем лишние символы из буфера
return false;
}
std::cin.ignore(std::numeric_limits<:streamsize>::max(), '\n'); // удаляем лишние символы из буфера
return true;
}
// Конструктор, выделяющий память под brand и копирующий строку b в неё
Person::Person(const char* b, int n, float s) {
brand = new char[strlen(b) + 1];
strcpy(brand, b);
number = n;
sum = s;
}
// Конструктор по умолчанию, создающий объект со значениями переменных по умолчанию
Person::Person() {
brand = new char[1];
strcpy(brand, "");
number = 0;
sum = 0.0;
}
// Деструктор, освобождающий память, выделенную под brand
Person::
Person() {
Министерство науки и высшего образования Российской Федерации
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)
Кафедра автоматизированных систем управления (АСУ)
Отчет по лабораторной работе № 1 по дисциплине
«Объектно-ориентированное программирование»
Выполнил:
Небиев Н.И.
« 19 » мая 2023 г.
Проверил:
«»20г.
Калининград 2023г
Оглавление
Индивидуальное_задание_1_3._Цель_работы._1_4._Результаты_работы_программы_1'>1. Тема работы 1
2. Индивидуальное задание 1
3. Цель работы. 1
4. Результаты работы программы 1
5. Выводы 3
Приложение А Листинг программы 4
-
Тема работы.
Классы. Открытые и закрытые уровни доступа.
Конструкторы. Инициализация данных объекта. Определение
методов. Создание объекта в памяти. Стандартные потоки
ввода-вывода.
-
Индивидуальное задание.
V = (27*64) div 100 = 17
Вариант 17
СОТОВЫЙ
марка — char
номер — int
сумма — float
-
Цель работы.
Цель данной лабораторной работы по ООП заключается в изучении классов и уровней доступа, конструкторов и методов объектов, а также создании и работы с объектами в памяти. Также в рамках работы необходимо изучить стандартные потоки ввода-вывода и научиться применять их в программировании на языке ООП.
-
Результаты работы программы.
Лабораторная работа была выполнена в интегрированной среде разработки (IDE) Clion, которая предоставляет удобный и эффективный интерфейс для написания и отладки программного кода на языке C++. Использование данной IDE позволило мне значительно ускорить процесс разработки, благодаря быстрому доступу к различным инструментам и функциям, таким как автоматическое завершение кода, подсветка синтаксиса, отладчик и многие другие.
При запуске программы создаем объект p1 и выводим его поля на экран:
Далее создаем объект p2 и выводим его поля на экран:
Затем меняем значения полей с помощью методов SetBrand, SetNumber, SetSum и выводим новые значения на экран с помощью методов GetBrand, GetNumber, GetSum:
После программа потребует указать brend, number, sum. При этом программа проверит вводимые значение number и sum:
-
Выводы.
В ходе выполнения данной лабораторной работы мы изучили классы и уровни доступа, конструкторы и методы объектов, а также создание и работу с объектами в памяти на языке ООП. Мы также освоили применение стандартных потоков ввода-вывода и научились использовать их в программировании.
В результате выполнения работы мы достигли поставленных целей и ответили на все поставленные в начале работы вопросы. Мы приобрели новые знания и навыки, которые могут быть использованы в будущих проектах, связанных с программированием на языке ООП.
Таким образом, выполнение данной лабораторной работы позволило нам более глубоко изучить основы объектно-ориентированного программирования и научиться применять их на практике.
Приложение А
main.h:
#include
#include
#pragma once
#ifndef PERSON_H // Директива условной компиляции, чтобы header-файл был включен только один раз
#define PERSON_H
#include
#include
#include
class Person {
private:
char* brand;
int number;
float sum;
public:
// Конструкторы и деструктор
Person(const char* b, int n, float s);
Person();
bool CheckInput(T& var) {
std::cin >> var;
if (std::cin.fail()) { // если ввод не удался
std::cin.clear(); // очищаем флаг ошибки
std::cin.ignore(std::numeric_limits<:streamsize>::max(), '\n'); // удаляем лишние символы из буфера
return false;
}
std::cin.ignore(std::numeric_limits<:streamsize>::max(), '\n'); // удаляем лишние символы из буфера
return true;
}
// Конструктор, выделяющий память под brand и копирующий строку b в неё
Person::Person(const char* b, int n, float s) {
brand = new char[strlen(b) + 1];
strcpy(brand, b);
number = n;
sum = s;
}
// Конструктор по умолчанию, создающий объект со значениями переменных по умолчанию
Person::Person() {
brand = new char[1];
strcpy(brand, "");
number = 0;
sum = 0.0;
}
// Деструктор, освобождающий память, выделенную под brand
Person::
delete[] brand;}// Метод вывода полей объекта на экранvoid Person::Print() const {std::cout << "Brand: " << brand << std::endl;std::cout << "Number: " << number << std::endl;std::cout << "Sum: " << sum << std::endl;}// Метод ввода полей объекта с клавиатурыvoid Person::Input() {char buf[100];std::cout << "Enter brand: ";std::cin.getline(buf, 100);// Освобождаем старую память, выделенную под branddelete[] brand;// Выделяем новую память под brand и копируем строку buf в неёbrand = new char[strlen(buf) + 1];strcpy(brand, buf);// Проверка ввода числаdo {std::cout << "Enter number: ";} while (!CheckInput(number));// Проверка ввода числа с плавающей точкойdo {std::cout << "Enter sum: ";} while (!CheckInput(sum));}// Метод установки значения поля brandvoid Person::SetBrand(const char* b) {// Освобождаем старую память, выделенную под branddelete[] brand;// Выделяем новую память под brand и копируем строку b в неёbrand = new char[strlen(b) + 1];strcpy(brand, b);}// Метод установки значения поля numbervoid Person::SetNumber(int n) {number = n;}// Метод установки значения поля sumvoid Person::SetSum(float s) {sum = s;}// Метод получения значения поля brandconst char* Person::GetBrand() const {return brand;}// Метод получения значения поля numberint Person::GetNumber() const {return number;}// Метод получения значения поля sumfloat Person::GetSum() const {return sum;}int main() {// Создаем объект p1 и выводим его поля на экранPerson p1("Samsung", 123456, 1000.0);p1.Print();// Создаем объект p2 и выводим его поля на экран.// Затем меняем значения полей с помощью методов SetBrand и SetSum,// и выводим новые значения на экран с помощью методов GetBrand и GetSum.Person p2("Apple", 654321, 2000.0);p2.Print();p2.SetBrand("Google");p2.SetSum(3000.0);std::cout << "New brand: " << p2.GetBrand() << std::endl;std::cout << "New sum: " << p2.GetSum() << std::endl;// Создаем объект p3, считываем его поля с помощью метода Input,// и выводим их на экран с помощью метода Print.Person p3;p3.Input();p3.Print();return 0;}