Ф едеральное агенство воздушного транспорта (росавиация)
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ГРАЖДАНСКОЙ АВИАЦИИ» (МГТУ ГА)
Кафедра вычислительных машин, комплексов, систем и сетей.
Контрольное домашнее задание защищено с оценкой ____________________
____________________
(подпись преподавателя, дата)
КОНТРОЛЬНОЕ ДОМАШНЕЕ ЗАДАНИЕ
по дисциплине «Программирование».
Темы: «Объектно-ориентированное программирование в языке C++. Перегрузка операций. Наследование в языке C++. Полиморфизм. Обработка исключений.»
Выполнила студентка группы ИС 1-1
Магальник Екатерина Борисовна
Руководитель: Надейкина Людмила Анатольевна
МОСКВА – 2023
Оглавление
Объектно-ориентированное программирование в языке C++ 1
Задание №1 2
Задание №2 3
Перегрузка операций 4
Задание №1 5
Задание №2 6
Задание №3 7
Наследование в языке C++ 8
Задание №1 9
Задание №2 10
Полиморфизм 11
Задание №1 12
Задание №2 13
Обработка исключений 14
Задание №1 15
Объектно-ориентированное программирование в языке C++.
Тест Задание №1
Напишите класс с именем Point. В классе Point должны быть две переменные-члены типа double: m_a и m_b со значениями по умолчанию 0.0. Напишите конструктор для этого класса и функцию вывода print ().
Теперь добавим метод distanceTo(), который будет принимать второй объект класса Point в качестве параметра и будет вычислять расстояние между двумя объектами. Учитывая две точки (a1, b1) и (a2, b2), расстояние между ними можно вычислить следующим образом: sqrt ((a1 - a2) * (a1 - a2) + (b1 - b2) * (b1 - b2)).
Измените функцию distanceTo () из метода класса в дружественную функцию, которая будет принимать два объекта класса Point в качестве параметров. Переименуйте эту функцию на distanceFrom ().
Текст программы:
a)
#include <iostream> using namespace std; class Point { private: double a_m = 0, b_m = 0; public: Point() { a_m = 0; b_m = 0; } Point(double a, double b) { a_m = a; b_m = b; } ~Point() {}; void print() { cout << "Point (" << a_m << "," << b_m << ")" << endl; } };
int main() { Point first; Point second(2.0, 5.0); first.print(); second.print(); return 0; } |
Результат работы программы:
b)
#include <iostream> #include <math.h> using namespace std; class Point { private: double a_m, b_m; public: Point() { a_m = 0.0; b_m = 0.0; } Point(double a, double b) { a_m = a; b_m = b; } ~Point() {}; void print() { cout << "Point (" << a_m << "," << b_m << ")" << endl; } double distanceTo(Point& other) { return sqrt((a_m - other.a_m) * (a_m - other.a_m) + (b_m - other.b_m) * (b_m - other.b_m)); } };
int main() { Point first; Point second(2.0, 5.0); first.print(); second.print(); cout << "Distance between two points: " << first.distanceTo(second) << '\n'; return 0; } |
Результат работы программы:
c)
#include <iostream> #include <math.h> using namespace std; class Point { friend double distanceFrom(Point& A, Point& B); private: double a_m, b_m; public: Point() { a_m = 0.0; b_m = 0.0; } Point(double a, double b) { a_m = a; b_m = b; } ~Point() {}; void print() { cout << "Point (" << a_m << "," << b_m << ")" << endl; } }; double distanceFrom(Point& A, Point& B) { return sqrt((A.a_m - A.a_m) * (A.a_m - A.a_m) + (B.b_m - B.b_m) * (B.b_m - B.b_m)); }
int main() { Point first; Point second(2.0, 5.0); first.print(); second.print(); std::cout << "Distance between two points: " << distanceFrom(first, second) << '\n'; return 0;
} |
Результат работы программы:
Задание №2
Напишите деструктор для следующего класса:
#include <iostream>
class Welcome {
private:
char *m_data;
public:
Welcome () {
m_data = new char [14];
const char *init = "Hello, World!";
for (int i = 0; i < 14; ++i)
m_data [i] = init [i];
}
~Welcome () {
// Реализация деструктора
}
void print () const {
std::cout << m_data;
}
};
int main () {
Welcome hello;
hello.print ();
return 0;
}
Текст программы:
#include <iostream> class Welcome { private: char* m_data; public: Welcome() { m_data = new char[14]; const char* init = "Hello, World!"; for (int i = 0; i < 14; ++i) m_data[i] = init[i]; } ~Welcome() { delete m_data; std::cout << std::endl << "Data was deleted." << std::endl; } void print() const { std::cout << m_data; } }; int main() { Welcome hello; hello.print(); return 0; } |
Результат работы программы:
