Пояснительный материал к задаче КВ_1 курса "Объектно-ориентированное программирование"

YOUTUBE · 30.11.2025 03:51

Ключевые темы и таймкоды

Введение в задачу

0:05
  • Приветствие студентов на факультативе по объектно-ориентированному программированию.
  • Тема занятия: первая курсовая работа.
  • Условия задачи можно найти в комментариях к видео.

Описание задачи

0:38
  • Задача: создать дерево объектов определенных классов.
  • Пример: иерархия объектов в программе Microsoft Word.
  • Взаимодействие с иерархией объектов в программе.

Базовый класс

2:25
  • Базовый класс для выстраивания объектов в иерархию.
  • Наследование от базового класса для всех остальных объектов.
  • Описание заголовочного файла класса.

Поля базового класса

3:20
  • Поле для хранения имени объекта string name.
  • Поле для указателя на вышестоящий объект class Base* parent.
  • Поле для динамического массива указателей на подчиненные объекты vector<class Base*> sub.

Методы базового класса

6:42
  • Конструктор с двумя параметрами: указатель на вышестоящий объект и имя объекта.
  • Деструктор для удаления подчиненных объектов при удалении основного объекта.
  • Методы для установки и получения имени объекта setName и getName.
  • Методы для получения указателя на вышестоящий объект getParent и для поиска подчиненного объекта по имени getSubObject.
  • Метод для вывода иерархии объектов printTree.

Реализация методов

14:28
  • Подключение заголовочного файла в исходном файле.
  • Реализация конструктора с параметрами.
  • Реализация других методов, описанных в заголовочном файле.

Присвоение значений полям класса

15:43
  • Присваиваем значения полям класса, переданные в конструктор.
  • Используем ключевое слово "указательный" для обращения к полям класса.
  • Присваиваем поле "нейм" параметру конструктора.

Присвоение указателя на главный объект

16:42
  • Присваиваем указателю на главный объект значение из конструктора.
  • Проверяем существование головного объекта перед добавлением в вектор подчиненных элементов.

Добавление в вектор подчиненных элементов

17:39
  • Проверяем, существует ли головной объект.
  • Если существует, добавляем указатель на текущий объект в вектор подчиненных элементов.

Описание деструктора

19:28
  • Деструктор рекурсивно вызывает деструкторы для всех подчиненных элементов.
  • Используем цикл for для обхода вектора подчиненных элементов.

Метод установки имени объекта

22:16
  • Метод проверяет уникальность имени среди элементов на одном уровне иерархии.
  • Возвращает логическое значение, указывающее на успешность присвоения имени.

Метод получения имени объекта

29:25
  • Метод возвращает поле "нейм" класса.
  • Аналогично можно написать метод для получения указателя на головной объект.

Метод поиска подчиненного объекта по имени

30:56
  • Метод принимает имя объекта и возвращает указатель на него.
  • Проходит по вектору подчиненных элементов и возвращает указатель на найденный элемент или пустой указатель.

Метод вывода дерева иерархии объектов

33:15
  • Завершает реализацию методов для работы с иерархией объектов.

Метод класса TreeBase

33:41
  • Метод называется PrintTree.
  • Возвращает TreeBase*.
  • Проверяет наличие подчиненных элементов.
  • Выводит имя объекта и имена подчиненных элементов через два пробела.

Реализация метода PrintTree

34:47
  • Использует метод Size для проверки наличия подчиненных элементов.
  • Выводит имя текущего элемента с переносом строки.
  • Проходит по подчиненным элементам в цикле и выводит их имена через два пробела.
  • Использует рекурсивный вызов метода для подчиненных элементов.

Основные методы класса TreeBase

37:58
  • Методы являются интерфейсными для построения дерева иерархии объектов.
  • Все объекты иерархии наследуются от класса TreeBase.

Реализация классов TreeOne и TreeTwo

38:34
  • Дерево состоит из двух классов: TreeOne и TreeTwo.
  • TreeOne будет корневым объектом, TreeTwo - остальными узлами.

Класс TreeOne

39:12
  • Наследуется от TreeBase.
  • Имеет конструктор с двумя параметрами: указатель на главный объект и имя.
  • В конструкторе вызывает конструктор базового класса.

Класс TreeTwo

43:07
  • Наследуется от TreeBase и TreeOne.
  • Имеет конструктор с одним параметром: указатель на главный объект.
  • Методы: BuildTreeObject и Execute.

Метод BuildTreeObject

48:07
  • Объявляет две переменные для ввода пар объектов.
  • Вводит значения головного и подчиненного элементов.
  • Проверяет равенство значений и вызывает конструктор для создания нового объекта.
  • Сохраняет указатель на новый объект в переменную.

Итерация и проверка указателей

54:28
  • Для первой итерации указатель посад пустой, что вызывает ошибку.
  • Условный оператор проверяет, что пса не пустой указатель.
  • Если проверка прошла, имя главного элемента совпадает с именем подчиненного в предыдущей итерации.

Уникальность имени и добавление элементов

55:30
  • Перед добавлением новых элементов нужно убедиться, что имя уникально на текущем уровне иерархии.
  • Используется метод гет сам для проверки уникальности имени.
  • Если имя уникально, можно добавлять новый элемент.

Добавление элемента к последнему добавленному

56:47
  • Новый элемент добавляется к последнему добавленному элементу или на текущую ветку.
  • Проверка через логическое и два персонажа сравнивает имя головного элемента на текущей операции с именем головного элемента по предыдущей операции.
  • Если имена равны, элемент добавляется в правильное место иерархии.

Завершение метода бил

58:45
  • Проверка учитывает оба варианта: если корневой элемент не изменился, пх указывает на предыдущий главный элемент.
  • Если корневой элемент изменился, пх ссылается на новый главный элемент.
  • Завершение цикла и метода бил.

Реализация метода экзек

1:00:18
  • Метод экзек возвращает значение целого типа и выполняет манипуляции с деревом.
  • Вывод объектов выполняется методом прин три.
  • Сначала выводится имя корневого элемента, затем метод прин три для всех элементов иерархии.

Завершение реализации задачи

1:02:29
  • Подключение класса селкишин и создание объекта класса.
  • Запуск метода бил для созданного объекта.
  • Запуск метода экзек для объекта.
  • Завершение функции мэйн и задачи.

Заключение

1:03:58
  • Благодарность за внимание и пожелания успехов в курсовых работах.
  • Обещание разобрать основные моменты для следующих курсовых.