Лабораторная работа №1 по дисциплине «Объектно-ориентированное программирование» Студент гр з-431П8-4 А. С. Горбенко
Download 280.72 Kb.
|
Лаб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]. Download 280.72 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling