Введение в задачу 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 Благодарность за внимание и пожелания успехов в курсовых работах. Обещание разобрать основные моменты для следующих курсовых.