Разработка абстрактного типа данных «Простой, статический граф», страница 4

                v = value;

            }

        }

        public Graph_Orientation Orientation

        {

            get

            {

                return orientation;

            }

        }

        public abstract bool InsertV(int num);

        public abstract bool DeleteV(int num);

        public abstract bool InsertE(int v_beg, int v_end);

        public abstract bool DeleteE(int v_beg, int v_end);

        public abstract int GetEdgeW(int v_beg,int v_end);

        public abstract void SetEdgeW(int v_beg, int v_end, int w);

        public abstract object getVertex(object criteria);

        public abstract bool EdgeExists(int beg, int end);

        public abstract void Update(PictureBox pic_box);

        public double K()

        {

          double k = ((double)E / ((double)V * ((double)V - 1.0)));

            if (orientation == Graph_Orientation.UNDIRECTED)

                k *= 2.0;

            return k;

        }

        public abstract Graph ConvertTo();

        public abstract void SetEdgeData(int v_beg, int v_end, object data);

        public abstract object GetEdgeData(int v_beg, int v_end);

        public abstract int getEdgeCountForVertex(int v_num);

6.   «Дескриптор ребра»

6.1 АТД “Дескриптор ребра”

            ОБЩАЯ ХАРАКТЕРИСТИКА:

Дескриптор ребра представляет собой набор информации ассоциированной с ребром. Он хранит в себе номера вершин ребра, данные и вес типов, заданных пользователем.

            ДАННЫЕ:

Параметры:

Out - Номер вершины из которой выходит ребро

                            In - Номер вершины в которую входит ребро

                            Data - Данные связанные с ребром

                            Weight - Вес ребра

ОПЕРАЦИИ:

Конструктор

Вход:   номер вершины, из которой ребро выходит, номер вершины, в которую ребро входит, вес ребра, данные ребра

Предусловия: нет

Процесс: создание дескриптора ребра

Выход: нет

Постусловия: создан дескриптор ребра с переданными параметрами

КОНЕЦ АТД


6.2 Клиентское определение класса «Дескриптор ребра»

//Шаблонный класс дескриптор ребра

    class GEdge

    {

        public int v_beg;

        public int v_end;

        public int weight;

        public object data;

        public GEdge(int beg, int end)

        {

            v_beg = beg;

            v_end = end;

            weight = 0;

            data = null;

        }

    }


7.  «Итератор вершин»

7.1 АТД “Итератор вершин”

            ОБЩАЯ ХАРАКТЕРИСТИКА:

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

            ДАННЫЕ:

Параметры:

current_elem– позиция текущей вершины

                            gr                         - граф, в котором происходит обход вершин

ОПЕРАЦИИ:

Конструктор

Вход:   ссылка на объект типа «Простой граф»

Предусловия: нет

Процесс: создание объекта «Итератор вершин»

Выход: нет

Постусловия: создан объект итератор вершин графа

Установка итератора на первую вершину

Вход:   нет

Предусловия: граф не пуст

Процесс: установка итератора на первую вершину

Выход: нет

Постусловия: итератор установлен на первую вершину, m_position = 0

Установка итератора на следующую вершину

Вход:   нет

Предусловия: граф не пуст и итератор не вышел за предел графа

Процесс: установка итератора на следующую вершину

Выход: нет

Постусловия: итератор установлен на следующую вершину, current_elem  увеличен на единицу

Проверка на выход за границы коллекции

Вход:   нет

Предусловия: нет

Процесс: проверка вышел ли итератор за пределы коллекции

Выход: true - итератор вышел за пределы, иначе false

Постусловия: нет

Получение номера вершины

Вход:   нет

Предусловия: граф не пуст и итератор находится внутри графа

Процесс: получение номера вершины

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