Скачиваний:
0
Добавлен:
02.11.2025
Размер:
237.15 Кб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ

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

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА» (СПбГУТ)

ФАКУЛЬТЕТ ИНФОКОММУНИКАЦИОННЫХ СЕТЕЙ И СИСТЕМ (ИКСС)

КАФЕДРА ПРОГРАММНОЙ ИНЖЕНЕРИИ И ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ (ПИ И ВТ)

Дисциплина: «ООП»

Лабораторная работа №4

Тема: «Виртуальные функции»

Вариант №24

Выполнил:

Студент группы ИКПИ-32

Яковлев Максим

Подпись ______________

Принял:

Рожков М.А.

Подпись ______________

Санкт-Петербург

2024 г.

Лабораторная работа №4

По теме: Виртуальные функции

Выполнил: Яковлев М. А.

Цель

Дополнить систему, состоящую из трех классов COne, CTwo и CThree, которые были разработаны в лабораторной работе 3, новым классом CFour. Новый класс должен быть связан public наследованием с классом CThree. Класс CFour должен иметь одно поля, которое выбирается студентом самостоятельно. Для разрабатываемого класса написать конструкторы умолчания, с параметрами и конструктор копирования, деструктор, методы доступа и метод print(). Метод print() в классах CTwo, CThree и CFour должен быть виртуальным. Написать тестовую программу для проверки работоспособности разработанных классов. Разработать глобальную функцию printAll(), имеющую два параметра: массив указателей типа CTwo* и количество элементов в этом массиве int n.

В тестовой программе массив указателей должен быть инициализирован адресами объектов типа CTwo, CThree и CFour.

Программа

Значение функций

Класс COne

• COne(): Конструктор по умолчанию, инициализирует d нулем и s пустой строкой.

• COne(double d, const std::string& s): Конструктор с параметрами, инициализирует d и s заданными значениями.

• COne(const COne& other): Конструктор копирования, создает копию объекта COne.

• : ~COne(): Деструктор

• getD(), setD(): Доступ к d.

• getS(), setS(): Доступ к s.

• Метод print(): Выводит значения полей d и s на консоль.

Класс CTwo:

• CTwo(): Конструктор по умолчанию, создает объект COne по умолчанию и инициализирует d нулем.

• CTwo(double d, double p_d, const std::string& p_s): Конструктор с параметрами, создает объект COne с заданными параметрами и инициализирует d.

• CTwo(const CTwo& other): Конструктор копирования, создает копию объекта CTwo, включая копию объекта COne.

• ~CTwo(): Деструктор Освобождает память, выделенную для p (указатель на COne).

• getD(), setD(): Доступ к d.

• getP(): Возвращает указатель на объект COne.

• setP(): Устанавливает значения полей объекта COne, на который указывает p.

• Метод print(): Выводит значения полей d и вызывает метод print() объекта COne, на который указывает p. Этот метод объявлен как виртуальный, что позволяет переопределять его в производных классах.

Класс CThree:

• CThree(): Конструктор по умолчанию, инициализирует поля базового класса CTwo и i нулем.

• CThree(double d, double p_d, const std::string& p_s, int i): Конструктор с параметрами, инициализирует поля базового класса CTwo и i.

• CThree(const CThree& other): Конструктор копирования, копирует поля базового класса CTwo и i.

• ~CThree(): Деструктор

• getI(), setI(): Доступ к i.

• Метод print(): Переопределяет виртуальный метод print() базового класса CTwo. Вызывает метод print() базового класса и выводит значение поля i.

Класс CFour:

• CFour(): Конструктор по умолчанию.

• CFour(double d, double p_d, const std::string& p_s, int i, char c): Конструктор с параметрами.

• CFour(const CFour& other): Конструктор копирования..

• ~CFour(): Деструктор

• getC(), setC(): Доступ к c.

• print(): Переопределяет виртуальный метод print() базового класса CThree. Вызывает метод print() базового класса и выводит значение поля c.

• printAll(): Принимает массив указателей на объекты типа CTwo и количество элементов в массиве.

Вывод

В данной работе была расширена система классов, разработанная в лабораторной работе №3, добавлением класса CFour. Реализованы конструкторы, деструктор, методы доступа и виртуальный метод print() для CFour. Разработана глобальная функция printAll(). Тестовая программа демонстрирует корректную работу программы.

Соседние файлы в папке Отчеты