Лабораторная работа №1 по дисциплине «Объектно-ориентированное программирование» Студент гр з-431П8-4 А. С. Горбенко


Download 280.72 Kb.
bet4/5
Sana20.10.2023
Hajmi280.72 Kb.
#1712476
TuriЛабораторная работа
1   2   3   4   5
Bog'liq
Лаб1

SetConsoleCP(1251);
SetConsoleOutputCP(1251);
Далее создали объект Kvit с помощью конструктора, указав в скобках все значения данных объекта. Вывели данные объекта на экран, вызвав функцию Print:
Kvit kvit1(1,19072022, 55);
kvit1.Print();
12. Создали динамический объект Kvit с помощью обычного конструктора и оператора new. Вывели данные объекта на экран, а затем удалили динамический объект из памяти с помощью оператора delete:
Kvit* kvit2;
kvit2 = new Kvit(2,19072022,27);
kvit2->Print();
delete kvit2;
13. В файле main.h в public-части описания класса добавили для каждого поля по методу get…() и set…(). Метод get…() возвращает значение поля данных, а set…() устанавливает полю данных значение, которое передается в качестве аргумента:
int getNum() const;
bool setNum(int);
int getDate() const;
bool setDate(int);
float getSum() const;
bool setSum(float);
Метод get…() также имеет модификатор const.
14. В cpp-файл добавили реализацию данных функций. В каждом методе set…() происходит проверка вводимых данных:
int Kvit::getNum() const {
return num;};
bool Kvit::setNum(int num) {
// проверка ввода номера квитанции
if (num>0) {
Kvit::num = num;
return 1;}
else return 0;};
int Kvit::getDate() const {
return date;};
bool Kvit::setDate(int date){
// проверка ввода даты
if (date>0) {
Kvit::date = date;
return 1;}
else return 0;};
float Kvit::getSum() const {
return sum;};
bool Kvit::setSum(float sum){
// проверка ввода суммы квитанции
if (sum>0) {
Kvit::sum = sum;
return 1;}
else return 0;};
15. Написали функцию ввода данных в объект с клавиатуры void Kvit::Input(). В теле функции использовали цикл do…while, который запускает стандартный поток ввода std::cin >> и передает считанное значение в соответствующую функцию set…(). Цикл do…while запускается до тех пор, пока введенные данные не будут корректными:
void Kvit::Input(){
// ввод номера квитанции
int num;
do {std::cout << "\nВведите номер квитанции (не может быть отрицательным): ";
std::cin >> num;}
while (!(Kvit::setNum(num)));
// ввод даты
int date;
do {std::cout << "\nВведите дату квитанции в числовом формате без точек (например, 01012022): ";
std::cin >> date;}
while (!(Kvit::setDate(date)));
// ввод суммы квитанции
float sum;
do {std::cout << "\nВведите сумму квитанции (например, 333.3): ";
std::cin >> sum;}
while (!(Kvit::setSum(sum)));};
16. В теле функции main создали объект Kvit с помощью конструктора по умолчанию и ввели данные в объект с клавиатуры, вызвав функцию Input, затем вывели данные объекта на экран.
Kvit kvit3;
kvit3.Input();
kvit3.Print();
17. В конец функии main перед строкой выхода из функии («return 0»;) добавили строку «system("pause");», чтобы консольное приложение не закрывалось сразу после выполнения программы.
18. В теле функции main создали объект Kvit и проверили работу данных методов:
Kvit kvit4;
kvit4.setNum(4);
kvit4.setDate(11082022);
kvit4.setSum(110);
std::cout << "Номер: " << kvit4.getNum() << std::endl;
std::cout << "Дата: " << kvit4.getDate() << std::endl;
std::cout << "Сумма: " << kvit4.getSum() << "\n" << std::endl;
19. Также с помощью конструктора по умолчанию создали динамический объект, затем вывели значения его полей (по умолчанию) с помощью функции печати:
Kvit* kvit5;
kvit5 = new Kvit();
kvit5->Print();
delete kvit5;
20. В описание функций в файле main.cpp добавили дружественную функцию класса void Equal_date(const Kvit& x, const Kvit& y), которая проверяет совпадают ли даты у двух квитанций (данные передаются по ссылке и с модификатором const, чтобы в самих объектах не происходило никаких изменений):
void Equal_date(const Kvit& x, const Kvit& y) {
std::cout << "У квитанции №" << x.num << " и квитанции №" << y.num;
if (x.date==y.date) {std::cout << " одинаковые даты" << std::endl;}
else std::cout << " разные даты"<< std::endl;};
В заголовочный файл добавили указание, что для класса Kvit данная функция является дружественной:
friend void Equal_date(const Kvit&, const Kvit&);
А в теле функции main файла main.cpp проверили ее работу:
Equal_date(kvit1, kvit3);
Kvit kvit6(6,19072022, 65);
Equal_date(kvit1, kvit6);
С полным текстом программы можно ознакомиться в приложении А.
21. Чтобы консольное приложение запускалось без среды разработки и динамических библиотек, перешли в Project->Build options…->Linker settings и в поле Other linker options добавили:
-static
-static-libgcc
-static-libstdc++
После чего отладили программу в режиме Release и нажали кнопку Rebuild. Теперь приложение можно запустить из каталога с проектом [4].


  1. Download 280.72 Kb.

    Do'stlaringiz bilan baham:
1   2   3   4   5




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling