
- •1 ПОСТАНОВКА ЗАДАЧИ
- •1.1 Описание входных данных
- •1.2 Описание выходных данных
- •2 МЕТОД РЕШЕНИЯ
- •3 ОПИСАНИЕ АЛГОРИТМОВ
- •3.1 Алгоритм функции main
- •3.2 Алгоритм метода set_parent класса cl_base
- •3.3 Алгоритм метода remove_child_by_name класса cl_base
- •3.4 Алгоритм метода get_object_by_path класса cl_base
- •3.5 Алгоритм метода build_tree_objects класса application
- •3.6 Алгоритм метода exec_app класса cl_base
- •4 БЛОК-СХЕМЫ АЛГОРИТМОВ
- •5 КОД ПРОГРАММЫ
- •5.1 Файл application.cpp
- •5.2 Файл application.h
- •5.3 Файл cl_2.cpp
- •5.4 Файл cl_2.h
- •5.5 Файл cl_3.cpp
- •5.6 Файл cl_3.h
- •5.7 Файл cl_4.cpp
- •5.8 Файл cl_4.h
- •5.9 Файл cl_5.cpp
- •5.10 Файл cl_5.h
- •5.11 Файл cl_6.cpp
- •5.12 Файл cl_6.h
- •5.13 Файл cl_base.cpp
- •5.14 Файл cl_base.h
- •5.15 Файл main.cpp
- •6 ТЕСТИРОВАНИЕ
- •СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
3.5 Алгоритм метода build_tree_objects класса application
Функционал: Строит дерево. Параметры: нет.
Возвращаемое значение: Отсутствует. Алгоритм метода представлен в таблице 6.
Таблица 6 – Алгоритм метода build_tree_objects класса application |
|
|||||
|
|
|
|
|
|
|
|
№ |
Предикат |
|
Действия |
№ |
|
|
|
|
|
|
|
перехода |
|
1 |
|
|
|
Объявление строка path, child_name |
2 |
|
|
|
|
|
|
|
2 |
|
|
|
Объявление целочисленной переменной tmp |
3 |
|
|
|
|
|
|
|
|
3 |
|
|
|
Ввод child_name |
4 |
|
|
|
|
|
|
|
|
4 |
|
|
|
Вызов метод setName с параметром child_name |
5 |
|
|
|
|
|
|
|
|
5 |
|
|
|
Объявление указателя parent_node_ptr |
6 |
|
|
|
|
|
|
|
|
6 |
|
|
|
Инициализация указателя last_created_node_ptr |
7 |
|
|
|
|
|
|
указателем текущего объекта |
|
|
|
|
|
|
|
|
7 |
|
|
|
Ввод path |
8 |
|
|
|
|
|
|
|
|
8 |
path не равно "endtree" |
|
Ввод child_name и tmp |
9 |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
|
|
|
Присваивание parent_node_ptr результат вызова |
10 |
|
|
|
|
|
метода get_object_by_path с параметром path |
|
|
|
|
|
|
объекта по указателю last_created_node_ptr |
|
|
|
|
|
|
|
|
10 |
parent_node_ptr |
не |
равен |
|
11 |
|
|
|
нулю, и у объекта по этому |
|
|
||
|
|
указателю нет подчинённых |
|
|
||
|
|
с именем child_name |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
|
|
|
|
|
|
|
11 |
tmp равно 1 |
|
|
Создание объекта класса application с помощью |
12 |
|
|
|
|
|
|
оператора new и вызова конструктора с |
|
|
|
|
|
|
параметром parent_node_ptr и child_name и |
|
|
|
|
|
|
присваивание указателю last_cerated_node_ptr |
|
18
№ |
Предикат |
Действия |
|
|
№ |
|
|
|
|
|
перехода |
|
|
адрес этого объекта |
|
|
|
|
|
|
|
|
|
|
tmp равно 2 |
Создание объекта класса cl_2 |
с |
помощью |
12 |
|
|
оператора new и вызова конструктора с |
|
||
|
|
параметром parent_node_ptr и child_name и |
|
||
|
|
присваивание указателю last_cerated_node_ptr |
|
||
|
|
адрес этого объекта |
|
|
|
|
|
|
|
|
|
|
tmp равно 3 |
Создание объекта класса cl_3 |
с |
помощью |
12 |
|
|
оператора new и вызова конструктора с |
|
||
|
|
параметром parent_node_ptr и child_name и |
|
||
|
|
присваивание указателю last_cerated_node_ptr |
|
||
|
|
адрес этого объекта |
|
|
|
|
|
|
|
|
|
|
tmp равно 4 |
Создание объекта класса cl_4 |
с |
помощью |
12 |
|
|
оператора new и вызова конструктора с |
|
||
|
|
параметром parent_node_ptr и child_name и |
|
||
|
|
присваивание указателю last_cerated_node_ptr |
|
||
|
|
адрес этого объекта |
|
|
|
|
|
|
|
|
|
|
tmp равно 5 |
Создание объекта класса cl_5 |
с |
помощью |
12 |
|
|
оператора new и вызова конструктора с |
|
||
|
|
параметром parent_node_ptr и child_name и |
|
||
|
|
присваивание указателю last_cerated_node_ptr |
|
||
|
|
адрес этого объекта |
|
|
|
|
|
|
|
|
|
|
tmp равно 6 |
Создание объекта класса cl_6 |
с |
помощью |
12 |
|
|
оператора new и вызова конструктора с |
|
||
|
|
параметром parent_node_ptr и child_name и |
|
||
|
|
присваивание указателю last_cerated_node_ptr |
|
||
|
|
адрес этого объекта |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
|
|
|
|
|
|
12 |
|
Вывод path |
|
|
8 |
|
|
|
|
|
|
19
3.6 Алгоритм метода exec_app класса cl_base
Функционал: Отработка приложения. Параметры: нет.
Возвращаемое значение: int, код завершения программы. Алгоритм метода представлен в таблице 7.
Таблица 7 – Алгоритм метода exec_app класса cl_base |
|
|
|
||||
|
|
|
|
|
|
|
|
|
№ |
Предикат |
|
Действия |
|
№ |
|
|
|
|
|
|
|
|
перехода |
|
1 |
|
Вывод "Object tree" |
|
|
2 |
|
|
|
|
|
|
|
|
|
2 |
|
Вызов метода printBranch |
|
|
3 |
||
|
|
|
|
|
|||
3 |
|
Объявление строк command, input, инициализация |
4 |
||||
|
|
|
строки curPath, указателей curObj значением this и |
|
|||
|
|
|
foundObj значением nullptr |
|
|
|
|
|
|
|
|
|
|
|
|
4 |
Из потока можно считать |
|
|
|
|
8 |
|
|
|
command |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
|
|
|
|
|
|||
5 |
|
Вывод с новой строки "Current object hierarchy" |
6 |
||||
|
|
|
|
|
|
|
|
6 |
|
Вызов метода printBranch |
|
|
7 |
||
|
|
|
|
|
|
|
|
7 |
|
Возврат 0 |
|
|
|
|
|
|
8 |
command равно "END" |
|
|
|
|
5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
|
|
|
|
|
|
|
|
9 |
command равно "SET" |
Ввод input |
|
|
|
10 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
|
|
|
|
|
|
|
|
10 |
|
foundObj |
присвоить |
результат |
вызова |
11 |
|
|
|
|
get_object_by_path с аргументом input у curObj |
|
|||
|
|
|
|
|
|||
11 |
foundObj не nullptr |
curObj присвоить findObj, curPath присвоить input |
12 |
||||
|
|
|
|
|
|||
|
|
|
Вывод с новой строки "The object was not found the |
4 |
|||
|
|
|
specified coordinate: ", input |
|
|
|
|
|
|
|
|
|
|
||
12 |
|
Вывод с новой строки "Object is set: " |
|
4 |
|||
|
|
|
|
|
|
|
|
|
13 |
command равно "FIND" |
Ввод input |
|
|
|
14 |
20
№ |
Предикат |
|
|
Действия |
|
№ |
|||
|
|
|
|
|
|
|
|
|
перехода |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
|
|
|
|
|
|
|
|
|
|
14 |
|
|
|
|
foundObj |
присвоить |
результат |
вызова |
15 |
|
|
|
|
|
get_object_by_path c аргументом input у curObj |
|
|||
|
|
|
|
|
|||||
15 |
foundObj не nullptr |
|
Вывод с новой строки input, " Object name: ", имя |
4 |
|||||
|
|
|
|
|
foundObj |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
|
|
|
|
|
|
|
|
||
16 |
command равно "MOVE" |
|
Ввод input |
|
|
|
17 |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
22 |
|
|
|
|
|
|
|
|
|
|
17 |
|
|
|
|
foundObj |
присвоить |
результат |
вызова |
18 |
|
|
|
|
|
get_object_by_path с параметром input у curObj |
|
|||
|
|
|
|
|
|
|
|||
18 |
результат |
|
set_parent |
у |
Вывод с новой строки "New head object: ", имя у |
4 |
|||
|
curHead |
с |
параметром |
foundObj |
|
|
|
|
|
|
foundObj истина |
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
19 |
|
|
|
|
|
|||||
19 |
foundObj равен nullptr |
|
Вывод с новой строки input, " Head object is not |
4 |
|||||
|
|
|
|
|
found" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20 |
|
|
|
|
|
|||||
20 |
Вызов get_child_by_name |
у |
Вывод с новой строки input, " Dubbing the names of |
4 |
|||||
|
curHead |
с |
параметром |
subordinate objects" |
|
|
|
||
|
curHead не nullptr |
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
21 |
|
|
|
|
|
|
|
|||
21 |
Результат |
|
set_pearent |
у |
Вывод с новой строки input, " Redefining the head |
4 |
|||
|
curHead |
с |
параметром |
object failed" |
|
|
|
|
|
|
foundObj не nullptr |
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
|
|
|
|
|
|
|
|||
22 |
command равно "DELETE" |
|
Объявление строки path |
|
|
23 |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
|
|
|
|
|
|
|
|
|
|
23 |
|
|
|
|
Ввод input |
|
|
|
24 |
|
|
|
|
|
|
|
|
|
|
21
№ |
Предикат |
Действия |
№ |
|
|
|
перехода |
24 |
Результат get_child_by_name |
Вызов remove_child_by_name c параметром input у |
25 |
|
у curObj с параметром input |
curObj |
|
|
не nullptr |
|
|
|
|
|
|
|
|
|
4 |
|
|
|
|
25 |
|
path присвоить curPath + "/" + input |
26 |
|
|
|
|
26 |
|
Вывод с новой строки "The object", path, " has been |
4 |
|
|
deleted" |
|
|
|
|
|
22