КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
private ⇐ ПредыдущаяСтр 2 из 2 fn:integer; fa:array of array of integer; fb:array of array of integer; fc:array of array of integer; a1:array of array of integer; a2:array of array of integer; b1:array of array of integer; b2:array of array of integer; fi:integer; fj:integer; fk:integer; procedure seti(const value:integer); procedure setj(const value:integer); procedure setk(const value:integer); procedure setn(const value:integer); Public property i:integer read fi write seti; property j:integer read fj write setj; property k:integer read fk write setk; function cikl:boolean; function ejler:boolean; function fmin:integer; Procedure setab; Procedure setc; Procedure obnul; Procedure setvalue1; Procedure setvalue3; procedure setvalue2(const value:integer); property n:integer read fn write setn; function Getvalue1(ind1,ind2:integer):integer; function Getvalue2(ind1,ind2:integer):integer; function Getvalue3(ind1,ind2:integer):integer; End;
Разработанный класс не имеет в скобках указания на наследование, а значит, наследует по умолчанию от TObject, рис.2.1. Рисунок 2.1 – Иерархия наследования моего класса.
2.2.2. Организация объекта Для данного класса реализованы идеи инкапсуляции, включая инкапсуляцию, основанную на разделах private и public. Основное внимание уделено инкапсуляции, основанной на свойствах. Сокрытой частью класса является раздел private, в котором определены: поле Fn – содержит количество элементов динамически создаваемых массивов (по сути – количество вершин в графах); поля Fa, Fb, Fc – двумерные динамические массивы целых чисел (указатели на массивы целых чисел) предполагают работу с координатами вершин, ребрами графа; методы SetI, SetJ, SetK и SetN реализуют инициализацию полей Fi, Fj, Fkи Fn. Правило гласит, что доступ к полям класса должны осуществлять только методы данного класса. Данное ограничение легко реализуется с помощью механизма свойств, которые описаны в разделе public и являются общедоступными. Наиболее часто применимая конструкция свойств – это отражение чтения данных на поле класса, а запись на метод класса (обычно при записи данных осуществляется дополнительная проверка контроля). Например: property i:integer read fi write SetI Методы класса реализуются с помощью процедур и функций. В общедоступном разделе public содержатся следующие методы: function cikl:boolean; – определение наличия циклов; function ejler:boolean; – проверка, является ли граф эйлеровым; function fmin:integer; – минимальная степень графа; procedure obnul; – обнуление числовых матриц графа. 2.3. Интерфейс программы Интерфейс программы приведен на рис.2.2. Рисунок 2.2 – Интерфейс программы Дружественный графический интерфейс моей программы ориентирован на то, чтобы пользователь сразу видел доступные ему функции по созданию графа и расчету числовых характеристик. Верхнее иконочное меню в основном ориентировано на создание графа. Каждый пункт меню имеет собственный hint-подсказку, а потому на рисунке не прокомментирован. Тем не менее перечислим все выполняемые этими кнопками функции (слева направо): - очистить поле от нарисованного графа; - сохранить нарисованный граф для последующей загрузки и расчетов; - произвести вычисления; - режим «бездействия» (верхнее меню неактивно); - создание вершин (щелчок мыши на черном поле, кружки-shape вершин нумеруются автоматически); - соединение вершин ребрами (щелчок мышью на исходной и конечной вершинах, щелчок на черном поле ни к каким действиям не ведет); - указание направления дуг (осуществляется двумя щелчками мыши от стартовой к финишной вершинам); - ввод веса ребер или дуг; - соединение всех вершин (автоматические получение полносвязного неориентированного графа); - вызов справки (обращение к собственному hlp-файлу). Нижний многостраничный компонент после нажатия зеленой стрелки «Вычислить» выводит результаты расчетов. Например, как это показано на рис.2.3. Рисунок 2.3 – Результаты расчетов в многостраничном компоненте
В результате проделанной работы выполнено теоретическое обоснование для определения числовых характеристик графа, нумерации его вершин, определения числа циклов, остовного дерева и др. Разработана программа на языке Object Pascal в среде Delphi 7.0, позволяющая выполнить это в автоматизированном режиме. Заданный граф находиться как тестовый пример в папке вместе с приложением. Разработанная программа позволяет выполнить аналогичные расчеты и для графов, набранных вручную через интерфейс с использованием мыши и клавиатуры.
Список использованных источников
1. Сигорский В.П. Математический аппарат инженера. – Киев: Техника, 1975. – 768 с. 2. Берж К. Теория графов и ее применения. – М.: Изд-во иностранной литературы, 1962. – 319 с. 3. Кристофидес Н. Теория графов: Алгоритмический подход. – М.: Мир, 1978. – 432 с. 4. Романовский И.В. Дискретный анализ. Учебное пособие для студентов, специализирующихся по прикладной математике и информатике. – СПб.: Невский диалект, 2001. – 240 с. 5. Новиков Ф.А. Дикретная математика для программистов. – СПб.-М.-Харьков: Питер, 2001. – 304 с. 6. Кенту М. Delphi 7 для профессионалов. – М.-СПб.-Харьков: Питер, 204. – 1101 с. 7. Голованов М., Веселов Е. Создание компонентов в среде Delphi. Руководство разработчика. – СПб.: БХВ-Петербург, 2004. – 320 с.
|