Ориентированный нагруженный граф
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

 

Для описания:

− иерархии наследственности классов;

− архитектуры программы (системы), иерархии объектов;

− схемы взаимодействия объектов;

− схемы функционирования системы, алгоритма решения задачи;

будем пользоваться ориентированным нагруженным графом.

Элементами ориентированного нагруженного графа являются:

− вершина, которой сопоставляется определенная функциональная нагрузка и наименование;

− ориентированное ребро, соединяющее две вершины, имеющее определенную нагрузку над и под ребром;

− комплекс – это вершина, с исходящими из него определенного количества ориентированных ребер и вершин перехода по данным ребрам.

Все схемы и алгоритмы собираются из множества комплексов. Графически комплекс для описания определенной конструкции выглядит следующим образом:

 

Имя вершины
Имя вершины 1
Имя вершины n
Имя вершины 2
[ Текст 1.2 ]
[ Текст 1.1 ]
[ Текст 2.1 ]
[ Текст 2.2 ]
[ Текст N.1 ]
[ Текст N.2 ]

Рисунок 3

Входом в комплекс является вершина, из которой выходят ребра. Схема собирается совмещением входной вершины одного комплекса с исходящей вершиной другого комплекса. Такие схемы используются для описания:

− иерархии наследования классов;

− архитектуры программы.

Пример схемы описания иерархии наследования классов.

 

cl_5
cl_4
cl_base
cl_1
cl_2
cl_3
cl_base
cl_base
public
virtual public
public
private
virtual public
virtual public

Рисунок 4

Графически комплекс вершины, для описания алгоритма выглядит следующим образом:

 

Имя вершины
Имя вершины 1
Имя вершины N
Имя вершины 2
Условие 1
Условие 2
[ Условие N ]
[ Линейные операторы 1 ]
[ Линейные операторы 2 ]
[ Линейные операторы N ]
[ Линейные операторы 0 ]

Рисунок 5

Рассмотрим подробнее элементы, представленные на рис. 5:

- «Имя вершины» - наименование комплекса. Оно совпадает с наименованием объекта или метки алгоритма.

- «Линейные операторы 0» - процедура вершины комплекса.

- «Условие i» - предикат, условие перехода по ребру. Предикат представляет определенное логическое выражение ( i = {1÷N} ).

- «Имя вершины i» - наименование комплекса перехода ( i = {1÷N}). Наименование комплекса перехода совпадает c наименованием очередного комплекса согласно алгоритму или является отметкой завершения алгоритма Æ.

- «Линейные операторы i» - процедуры, выполняемые при переходе по соответствующим ребрам ( i = {1÷N} ).

 

Правило обхода комплекса.

Вход в комплекс осуществляется только через вершину наименования комплекса.  После входа отрабатывает процедура вершины комплекса. Далее по порядку сверху вниз проверяются предикаты. Если предикат «Условие i» принимает значение «истина», то отрабатывается процедура «Линейные операторы i» и происходит переход к комплексу «Имя вершины i». Если ни один из предикатов не принимает значение «истина», то фиксируется ошибка. Если на ребре логическое условие отсутствует, значение предиката считается истинным и можно выполнить движение по ребру.

Графическое представление комплекса однозначно отображается в таблице. В таблице 2 приведено правило отображения комплекса.

Таблица 2

Вершина комплекса Предикат Процедуры Вершина перехода
Имя вершины   Линейные операторы 0  
  Условие 1 Линейные операторы 1 Имя вершины 1
  Условие 2 Линейные операторы 2 Имя вершины 2
 
  Условие N Линейные операторы N Имя вершины N

 

В табличном представлении наименование комплекса, состоит из двух частей:

- уникальный номер вершины комплекса;

- имя вершины.

Тогда, в четвертом столбце достаточно указать только уникальный номер вершины комплекса или Æ (завершение алгоритма).

Пример описания алгоритма схемой нагруженного ориентированного графа.

L_1
L_2
L_2
sum = 0; i = 0;
i < n
sum += a [ i ]; i ++;

Рисунок 6

Допускается нагрузку ребер задавать согласно операторам базового алгоритмического языка С++.

L_1
L_2
L_2
sum = 0;
i = 0; i < n; i ++
sum += a [ i ];

Рисунок 7

Достоинства предложенного описания блок-схем алгоритма:

1) Простота используемых графических элементов.

2) Графическое изображение алгоритма строится слева на право и сверху вниз.

3) Взаимная однозначность реализации кода на языке С++.

4) Возможность и взаимная однозначность представления алгоритма в табличном виде. 

Класс

Виртуальный объект

 

В языке С++ реальному объекту из предметной области ставится в соответствие виртуальный объект. Язык обеспечивает жизненный цикл виртуального объекта по аналогии жизненного цикла объекта из предметной области. Схемы этих жизненных циклов совпадают.

Схема жизненного цикла виртуального объекта.

План Описание
Создание. Конструирование
Функционирование
Старт объекта  
Остановка
Демонтаж
Уничтожение

Рисунок 8

Реализация жизненного цикла виртуального объекта на языке С++ (Таблица 3)

Описание Класс
Создание Отработка конструктора объекта. Выделение памяти и исходная инициализация.
Старт объекта Завершение работы конструктора объекта. Начало функционирования.
Функционирование Участие объекта в работе (в алгоритме) программы
Остановка Вызов деструктора объекта
Демонтаж Отработка деструктора объекта
Завершение Завершение работы деструктора объекта. Освобождение выделенной объекту памяти.

 

Описание класса

 

Описание класса состоит из двух частей: заголовка и реализации.

Синтаксис описания заголовочной части класса:

 

class «имя класса» {

[private:]

«список скрытых элементов класса»

public:

«список доступных элементов класса»

protected:

«список защищенных элементов класса»

};

 

имя класса  ::= идентификатор

элемент класса ::= описание свойства (поля, переменной)

                       ::= описание заголовка метода

 

Синтаксис описания заголовка метода:

«тип возвращаемого значения» «имя метода» ( [список параметров] );

 

Описание свойств аналогично описанию переменных в языке С.

Часть реализации содержит описание методов класса. Синтаксис описания метода:

 

«тип возвращаемого значения» «имя класса» :: «имя метода» ( [список параметров] )

{

// тело метода (код алгоритма метода)

}

 

Здесь «имя класса» — это имя того класса, которому принадлежит определяемый метод.

 

Дата: 2018-12-28, просмотров: 256.