Файл: Ответы на вопросы по шагам 1 3.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 23.11.2023

Просмотров: 69

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Ответы на вопросы по шагам 1 – 31) Определить имена класса и его полей.Имя класса – MicrowaveПоля класса – manufacturer_ (производитель объекта),volume_ (объем объекта), price_ (цена объекта)2) Определить тип данных для полей класса.string manufacturer_; double volume_; double price_;3) Определить множество допустимых значений для полей класса, в соответствие с требованиями и ограничениями предметной области.Для manufacturer_ допустимым значением является любое сочетание символов.Для volume_ допустимым значением является любое положительное сочетание арабских цифр. Отрицательные сочетания (со знаком “-“ перед числом) будут вызывать ошибку, функция прекратится. Для price_ ;допустимым значением является любое положительное сочетание арабских цифр. Отрицательные сочетания (со знаком “-“ перед числом) будут вызывать ошибку, функция прекратится. Определение класса с комментариями о назначении полей и методов (шаги 5 – 10).class Microwave {   // объявление классаprivate: // объявление полей класса    string manufacturer_;  // производитель объекта    double volume_; //объем объекта    double price_; // цена объектаvoid init(string manufacturer = "", double volume = 0.0, double price = 0.0); // определение множества допустимых значенийpublic:    Microwave(string manufacturer = "", double volume = 0.0, double price = 0.0);    Microwave(const Microwave& other);    void rename(string manufacturer);    void setVolume(double volume);    void setPrice(double price);    void print() const;};Microwave* createMicrowave(); // определение классаТексты разработанных методов (шаги 5 – 10). Комментарии об особенностях их работы (алгоритм).Microwave::Microwave(string manufacturer, double volume, double price)// конструктор с параметрами для проверки устанавливаемых значений.Microwave::Microwave(const Microwave& other)// копирование полей одного экземпляра класса в поля создаваемого объектаvoid Microwave::init(string manufacturer, double volume, double price)// проверка корректности переданных значений полейvoid Microwave::rename(string manufacturer) //переименование объектаvoid Microwave::setVolume(double volume) { // установка объёма объектаvoid Microwave::setPrice(double price) { // установка цены объектаvoid Microwave::print() const { //вывод сведений об экземпляре классаMicrowave* createMicrowave() { //создание экземпляра классаMicrowave – конструктор с параметрами, который использует метод init() для проверки устанавливаемых значений. Программа выводит на экран заранее написанные параметры объекта;Также копирует значение одного экземпляра объекта в поле другого создаваемого объекта.
init – проверяет и инициализирует предложенные пользователем и написанные заранее в программе параметры.rename – переименовывает производителя объектаsetVolume – функция для изменения объема объекта (в случае надобности)setPrice - функция для изменения цены объекта (в случае надобности)print – выводит на экран значения параметров объектаТекст тестирующей функции (шаг 11) с комментариями.int main() {    Microwave m1("Panasonic", 1.2, 150.0); //создание 2 объектов "на стеке"    Microwave m2("Samsung", 0.8, 120.0);    m1.print(); // печать сведений об объекте    m2.print();    Microwave m3 = m2; // изменение поля в первом объекте    m3.print();    m1.rename("LG"); // печать сведения об измененном объекте    m1.print();    Microwave* m4 = createMicrowave(); // создание 2 экземпляров класса в динамической памяти    Microwave* m5 = createMicrowave();    if (m4 != nullptr) { // печать сведений об объектах класса        m4->print();    }    if (m5 != nullptr) { // печать сведений об объектах класса        m5->print();    }    delete m4; // удаление динамически созданных объектов    delete m5;    return 0;}Скриншот результата запуска тестовой функции и выводы о полученных результатах.Вывод – программа работает корректно, результат соответствует ожидаемому значению.Приложение. Исходный код программы.Файл P6.h#pragma once#include

#include

#include

#include

using namespace std;
class Microwave { // объявление класса

private: // объявление полей класса

string manufacturer_; // производитель объекта

double volume_; //объем объекта

double price_; // цена объекта
void init(string manufacturer = "", double volume = 0.0, double price = 0.0); // определение множества допустимых значений

public:

Microwave(string manufacturer = "", double volume = 0.0, double price = 0.0);

Microwave(const Microwave& other);

void rename(string manufacturer);

void setVolume(double volume);

void setPrice(double price);

void print() const;

};

Microwave* createMicrowave(); // определение класса
Файл prak6.cpp
#include "P6.h"
Microwave::Microwave(string manufacturer, double volume, double price) { // конструктор с параметрами для проверки устанавливаемых значений.

init(manufacturer, volume, price); // проверка установленных значений

}
Microwave::Microwave(const Microwave& other) { // копирование полей одного экземпляра класса в поля создаваемого объекта

init(other.manufacturer_, other.volume_, other.price_); // проверка установленных значений

}
void Microwave::init(string manufacturer, double volume, double price) { // проверка корректности переданных значений полей

if (manufacturer.empty()) { // если переданные данные некорректны - вызывается ошибка

throw invalid_argument("Manufacturer cannot be empty.");

}

if (volume <= 0) { // если переданные данные некорректны - вызывается ошибка

throw invalid_argument("Volume must be positive.");

}

if (price <= 0) { // если переданные данные некорректны - вызывается ошибка

throw invalid_argument("Price must be positive.");

throw invalid_argument("Price must be positive.");

}

manufacturer_ = manufacturer;

volume_ = volume;

price_ = price;

}
void Microwave::rename(string manufacturer) { //переименование объекта

if (manufacturer.empty()) { // если переданные данные некорректны - вызывается ошибка

throw invalid_argument("Manufacturer cannot be empty.");

}

manufacturer_ = manufacturer;

}
void Microwave::setVolume(double volume) { // установка объёма объекта

if (volume <= 0) { // если переданные данные некорректны - вызывается ошибка

throw invalid_argument("Volume must be positive.");

}

volume_ = volume;

}
void Microwave::setPrice(double price) { // установка цены объекта

if (price <= 0) { // если переданные данные некорректны - вызывается ошибка

throw invalid_argument("Price must be positive.");

}

price_ = price;

}
void Microwave::print() const { //вывод сведений об экземпляре класса

cout << "Microwave: " << manufacturer_ << ", Volume: " << volume_ << "L, Price: " << price_ << "USD" << endl;

} // вывод данных об экземпляре класса
Microwave* createMicrowave() { //создание экземпляра класса

string manufacturer;

double volume;

double price;

cout << "Enter the manufacturer: "; // ввод названия объекта

cin >> manufacturer;
cout << "Enter the volume (in liters): "; // ввод объема объекта

cin >> volume;

if (volume <= 0) {// если переданные данные некорректны - вызывается ошибка, возвращается nullptr

cerr << "Error creating Microwave object: Volume must be positive." << endl;

return nullptr;

}
cout << "Enter the price (in USD): "; // ввод цены объекта

cin >> price;

if (price <= 0) {// если переданные данные некорректны - вызывается ошибка, возвращается nullptr

cerr << "Error creating Microwave object: Price must be positive." << endl;

return nullptr;

}
try {

return new Microwave(manufacturer, volume, price);

}

catch (exception& e) { // если пользователь отказывается от создания объекта, то функция возвращает nullptr

cerr << "Error creating Microwave object: " << e.what() << endl;

return nullptr;

}

}

int main() {

Microwave m1("Panasonic", 1.2, 150.0); //создание 2 объектов "на стеке"

Microwave m2("Samsung", 0.8, 120.0);

m1.print(); // печать сведений об объекте

m2.print();
Microwave m3 = m2; // изменение поля в первом объекте

m3.print();
m1.rename("LG"); // печать сведения об измененном объекте

m1.print();
Microwave* m4 = createMicrowave(); // создание 2 экземпляров класса в динамической памяти

Microwave* m5 = createMicrowave();
if (m4 != nullptr) { // печать сведений об объектах класса

m4->print();

}

if (m5 != nullptr) { // печать сведений об объектах класса

m5->print();

}
delete m4; // удаление динамически созданных объектов

delete m5;
return 0;

}