ргр по алгоритмам и структурам данных. АиСД РГР, ключников. Разработка атд Простой граф
Скачать 135.4 Kb.
|
7.2. Клиентское определение класса «итератор ребер»internal abstract class IteratorAllEdges public static IteratorAllEdges MakeIt(AbstractGraph public abstract bool Beg(); public abstract bool End(); public abstract void Next(); public abstract Edge 8. АТД «итератор исходящих ребер» 8.1. Формат АТД «итератор исходящих ребер»Итератор исходящих ребер - это объект, позволяющий клиентской программе получить доступ к значениям данных, скрытых в коллекции «Простой статический граф», играя роль обобщенного указателя на данные, хранящиеся в коллекции. Даёт возможность перемещаться по исходящим рёбрам заданной вершины, осуществлять переход к следующим и получать дескриптор текущего ребра. ДАННЫЕ: Параметры Lgraph – указатель на L-Граф; Mgraph – указатель на M-Граф; Form – текущая форма графа; CurrentVertex – индекс текущей вершины; CurrentEdge – индекс текущего ребра ОПЕРАЦИИ: Конструктор Вход: нет Предусловия: нет Процесс: создание пустого объекта «Итератор исходящих ребер» Выход: нет Постусловия: создан пустой объект итератор исходящих ребер графа Конструктор Вход: ссылка на объект типа «Простой граф» и дескриптор вершины v Предусловия: вершина v существует Процесс: создание объекта итератора исходящих рёбер Выход: нет Постусловия: создан объект итератор исходящих рёбер вершины Установка на первое ребро Вход: нет Предусловия: вершина с индексом m_iCurrentVertex существует и множество её исходящих ребер не пусто Процесс: установка итератора на первое исходящее ребро вершины Выход: true – итератор установлен, false – в противном случае Постусловия: нет Установка на последнее ребро Вход: нет Предусловия: вершина с индексом m_iCurrentVertex существует и множество её исходящих ребер не пусто Процесс: установка итератора на последнее исходящее ребро вершины Выход: true – итератор установлен, false – в противном случае Постусловия: нет Установка на следующее исходящее ребро Вход: нет Предусловия: вершина m_iCurrentVertex существует и множество её исходящих ребер не пусто и итератор не вышел за пределы множества исходящих ребер вершины Процесс: установка итератора на следующее исходящее ребро вершины Выход: нет Постусловия: итератор установлен на следующее исходящее ребро вершины Проверка на выход за границы коллекции Вход: нет Предусловия: нет Процесс: проверка, вышел ли итератор за пределы коллекции Выход: true-если итератор вышел за пределы, иначе false Постусловия: нет Получение дескриптора текущего ребра Вход: нет Предусловия: итератор не вышел за пределы множества исходящих ребер вершины Процесс: получение дескриптора ребра Выход: дескриптор исходящего ребра вершины, на которое указывает итератор Постусловия: нет 8.2. Клиентское определение класса «итератор исходящих ребер»internal abstract class IteratorOutEdge public static IteratorOutEdge MakeIt(Vertex public abstract bool Beg(); public abstract bool End(); public abstract void Next(); public abstract Edge 9. АТД «итератор входящих ребер»9.1. Формат АТД «итератор входящих ребер»Это объект, позволяющий клиентской программе получить доступ к значениям данных, скрытых в коллекции «Простой статический граф», играя роль обобщенного указателя на данные, хранящиеся в коллекции. Даёт возможность перемещаться по входящим рёбрам заданной вершины, осуществлять переход к следующим и получать дескриптор текущего ребра. ДАННЫЕ Параметры Lgraph – указатель на L-Граф; Mgraph – указатель на M-Граф; Form – текущая форма графа; CurrentVertex – индекс текущей исходящей вершины; CurrentEdge – индекс текущего входящего ребра ОПЕРАЦИИ: Конструктор Вход: нет Предусловия: нет Процесс: создание пустого объекта «Итератор входящих ребер» Выход: нет Постусловия: создан пустой объект итератор входящих ребер графа Конструктор Вход: ссылка на объект типа «Простой граф» и дескриптор вершины v Предусловия: вершина v существует Процесс: создание объекта итератора входящих рёбер Выход: нет Постусловия: создан объект итератор входящих рёбер вершины Установка на первое входящее ребро Вход: нет Предусловия: вершина существует и множество её входящих ребер не пусто Процесс: установка итератора на первое входящее ребро вершины Выход: true – итератор установлен, иначе - false Постусловия: нет Установка на последнее входящее ребро Вход: нет Предусловия: вершина существует и множество её входящих ребер не пусто Процесс: установка итератора на последнее входящее ребро вершины Выход: true – итератор установлен, иначе - false Постусловия: нет Установка на следующее входящее ребро Вход: нет Предусловия: итератор не вышел за пределы множества входящих ребер вершины Процесс: установка итератора на следующее входящее ребро вершины Выход: нет Постусловия: нет Проверка на выход за границы коллекции Вход: нет Предусловия: нет Процесс: проверка вышел ли итератор за пределы коллекции Выход: true-если итератор вышел за пределы, иначе false Постусловия: нет Получение дескриптора текущего ребра Вход: нет Предусловия: нет Процесс: получение дескриптора ребра Выход: дескриптор входящего ребра вершины, на которое указывает итератор Постусловия: нет |