Добавил:
Только когда поступишь в технический вуз поймешь на сколько ты гуманитарий Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовые / КВ_3.pdf
Скачиваний:
38
Добавлен:
10.06.2024
Размер:
521.16 Кб
Скачать

3 ОПИСАНИЕ АЛГОРИТМОВ

Согласно этапам разработки, после определения необходимого инструментария в разделе «Метод», составляются подробные описания алгоритмов для методов классов и функций.

3.1 Алгоритм функции main

Функционал: Основной алгоритм программы. Параметры: нет.

Возвращаемое значение: Целое индикатор корректности выполенения программы.

Алгоритм функции представлен в таблице 2.

Таблица 2 – Алгоритм функции main

 

 

 

 

 

 

 

 

 

Предикат

Действия

 

 

 

 

 

 

перехода

 

1

 

Создание объекта ob_application класса application с использованием

2

 

 

 

параметрезированного конструктор и передачей в него качестве

 

 

 

 

параметра пустого указателя

 

 

 

 

 

 

 

 

2

 

Вызов метода build_tree_objects объекта ob_application

 

3

 

 

 

 

 

 

3

 

Возвращение результата работы метода exec_app()

для объекта

 

 

 

 

ob_application

 

 

 

 

 

 

 

 

3.2 Алгоритм метода set_parent класса cl_base

Функционал: Переопределения головного объекта для текущего в дереве иерархии.

Параметры: cl_base* new_parent. Возвращаемое значение: bool.

13

Алгоритм метода представлен в таблице 3.

Таблица 3 – Алгоритм метода set_parent класса cl_base

 

 

 

 

 

 

 

 

 

Предикат

 

 

Действия

 

 

 

 

 

 

 

перехода

 

1

Головной объект совпадает с

Возвратить true

 

 

 

новым головным

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

2

Объект является корнем или

Возвратить false

 

 

 

new_parent

-

нулевой

 

 

 

 

указатель

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

3

У нового головного объекта

Возвратить false

 

 

 

уже есть

подчиненный

с

 

 

 

 

именем текущего объекта

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

4

 

 

 

 

Объявление стека st указателей на объект класса

5

 

 

 

 

 

 

cl_base

 

 

 

 

 

 

 

 

 

5

 

 

 

 

Добавление в стек текущего объекта

6

 

 

 

 

 

 

6

Стек содержит элемент

 

 

7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

13

 

 

 

 

 

 

 

 

7

 

 

 

 

Инициализация указателя current_node_ptr на

8

 

 

 

 

 

 

объект класса cl_base значением верхнего

 

 

 

 

 

 

 

элемента стека st

 

 

 

 

 

 

 

 

 

8

 

 

 

 

Удаление верхнего элемента стека st

9

 

 

 

 

 

 

 

9

current_node_ptr

 

==

Возвратить false

 

 

 

new_parent

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

 

 

 

 

 

 

 

 

10

 

 

 

 

Инициализация целочисленной переменной i

11

 

 

 

 

 

 

значением 0

 

 

 

 

 

 

11

i < размер вектора children

Добавление в стек элемента children[i] объекта

12

 

 

объекта current_node_ptr

 

current_node_ptr

 

 

 

 

 

 

 

 

 

14

Предикат

 

Действия

 

 

 

 

перехода

 

 

 

 

6

 

 

 

 

 

12

 

 

Инкремент i

11

 

 

 

 

 

13

 

 

Инициализация ссылки на вектор v, содержащего

14

 

 

 

указатели на объект класса cl_base значением

 

 

 

 

свойства children головного объекта

 

 

 

 

 

 

14

 

 

Инициализация целочисленной переменной i

15

 

 

 

значением 0

 

 

 

 

 

 

15

i < размера вектора v

 

 

16

 

 

 

 

 

 

 

 

Возвратить false

 

16

Имя i-го объекта

равно

Удаление i-го элемента вектора v

18

 

имени текущего объекта

 

 

 

 

 

 

 

 

 

 

 

17

 

 

 

 

 

17

 

 

Инкремент i

15

 

 

 

 

 

18

 

 

Добавить текущий объект в вектор подчинённых

19

 

 

 

объектов нового родительского объекта

 

 

 

 

 

 

19

 

 

Возвратить true

 

3.3 Алгоритм метода remove_child_by_name класса cl_base

Функционал: Удаления подчиненного объекта по наименованию. Параметры: string child_name.

Возвращаемое значение: Отсутствует. Алгоритм метода представлен в таблице 4.

Таблица 4 – Алгоритм метода remove_child_by_name класса cl_base

 

 

 

 

 

 

 

Предикат

Действия

 

 

 

 

перехода

 

1

 

Инициализация ссылки на вектор v, содержащий

2

 

 

 

указатели на объекты класса cl_node значением

 

 

 

 

свойства children

 

 

 

 

 

 

15

Предикат

Действия

 

 

 

 

 

перехода

2

 

Инициализация целочисленной переменной

i

3

 

 

значением 0

 

 

 

 

 

 

 

3

i меньше размер вектор v

 

 

4

 

 

 

 

 

 

 

 

 

 

4

Имя i-го объекта равно

Вызов деструктора для объекта по i-му указателю

6

 

имени текущего объекта

вектор v

 

 

 

 

 

 

 

 

 

 

 

5

 

 

 

 

 

5

 

Инкремент i

 

6

 

 

 

 

 

6

 

Удаление i-го элемента вектора v

 

 

3.4 Алгоритм метода get_object_by_path класса cl_base

Функционал: Получения указателя на любой объект в составе дерева иерархии объектов согласно пути (координаты).

Параметры: string path. Возвращаемое значение: cl_base*.

Алгоритм метода представлен в таблице 5.

Таблица 5 – Алгоритм метода get_object_by_path класса cl_base

 

 

 

 

 

 

 

 

Предикат

 

Действия

 

 

 

 

 

перехода

 

1

path - пустая строка

 

Возврат nullptr

 

 

 

 

 

 

2

 

 

 

 

 

 

2

path == '.'

 

Вернуть текущий объект

 

 

 

 

 

 

3

 

 

 

 

 

3

Первый символ path равен '.'

Вернуть результат вызов метода findObjOnBranch

 

 

 

 

 

с параметром path, начиная со второго символа

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

4

Первые два символа

path

Вернуть результат вызова метод findObjOnTree с

 

 

 

равны "//"

 

параметром path, начиная с третьего символа

 

 

 

 

 

 

 

16

Предикат

 

 

 

 

Действия

 

 

 

 

 

 

 

 

 

 

 

 

перехода

 

 

 

 

 

 

 

 

 

 

5

 

 

 

 

 

 

 

 

5

Первые символа path

 

не

Инициализация

знаковой

целочисленной

6

 

равны '/'

 

 

 

переменной slash_index позицией первого символа

 

 

 

 

 

 

'/' в строке path

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

 

 

 

 

 

 

 

 

6

 

 

 

 

Инициализация указателя child_ptr на

объект

7

 

 

 

 

 

класса

cl_base

результатом вызов

метода

 

 

 

 

 

 

get_child_by_name с параметром path, до первого

 

 

 

 

 

 

символа '/'

 

 

 

 

 

 

 

 

 

 

 

 

7

child_ptr == nullptr или

в

Возврат child_ptr

 

 

 

 

 

строке path нет символа '/'

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вернуть

результат

вызова

метода

8

 

 

 

 

 

get_object_by_path объекта child_ptr с параметром

 

 

 

 

 

 

path, начиная после символа '/'

 

 

 

 

 

 

 

 

 

 

 

 

 

8

 

 

 

 

Вернуть

результат

вызова

метода

 

 

 

 

 

 

get_object_by_path объекта child_ptr с параметром

 

 

 

 

 

 

path, начиная после символа '/'

 

 

 

 

 

 

 

 

 

 

 

9

 

 

 

 

Инициализация указателя root_ptr

адресом

10

 

 

 

 

 

текущего объекта

 

 

 

 

 

 

 

 

 

 

 

10

Существует

объект

 

по

Присваивание root_ptr значение головного объекта

10

 

указателю

root_ptr

есть

по указателю root_ptr

 

 

 

 

родитель

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11

 

 

 

 

 

 

 

 

 

 

11

path == "/"

 

 

 

Возврат root_ptr

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12

 

 

 

 

 

 

 

 

 

 

12

 

 

 

 

Вернуть

результат

вызова

метода

 

 

 

 

 

 

get_object_by_path объекта по указателю root_ptr с

 

 

 

 

 

 

параметром path,начиная со второго символа

 

 

 

 

 

 

 

 

 

 

 

 

17

Соседние файлы в папке Курсовые