Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
отчет кдз программирование.docx
Скачиваний:
0
Добавлен:
11.02.2026
Размер:
158.59 Кб
Скачать

Ф едеральное агенство воздушного транспорта (росавиация)

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ГРАЖДАНСКОЙ АВИАЦИИ» (МГТУ ГА)

Кафедра вычислительных машин, комплексов, систем и сетей.

Контрольное домашнее задание защищено с оценкой ____________________

____________________

(подпись преподавателя, дата)

КОНТРОЛЬНОЕ ДОМАШНЕЕ ЗАДАНИЕ

по дисциплине «Программирование».

Темы: «Объектно-ориентированное программирование в языке 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

  1. Напишите класс с именем Point. В классе Point должны быть две переменные-члены типа double: m_a и m_b со значениями по умолчанию 0.0. Напишите конструктор для этого класса и функцию вывода print ().

  2. Теперь добавим метод distanceTo(), который будет принимать второй объект класса Point в качестве параметра и будет вычислять расстояние между двумя объектами. Учитывая две точки (a1, b1) и (a2, b2), расстояние между ними можно вычислить следующим образом: sqrt ((a1 - a2) * (a1 - a2) + (b1 - b2) * (b1 - b2)).

  3. Измените функцию 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;

}

Результат работы программы: