Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
21 ошибка прогр... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Имитационное мо... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Реклама
Сейчас на сайте
Гостей: 7
На сайте нет зарегистрированных пользователей

Пользователей: 13,372
новичок: vausoz
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Моделирование работы крупного аэропорта на GPSS + Пояснительная записка
База данных - словарь терминов на Delphi + Пояснительная записка
Выбор наилучших альтернатив с использованием методов оптимизации на Delp...

Пример применения списков


Рассмотрим задачу поиска маршрутов между заданными пунктами на карте. Карта может быть представлена графом, узлами которого являются города, а дороги отражаются как связи между узлами. Если наша программа должна быть универсальной, т.е. уметь обрабатывать различные карты, то подходящим контейнером для хранения карты является список. В нем можно хранить список городов и связей между ними. Такой список легко создавать и обрабатывать.
Что такое город с точки зрения структуры данных? Город имеет название, координаты и список соседей к которым проложены дороги. С другой стороны, ни к городу ни к карте как к прикладным объектам не целесообразно применять ссылочную семантику принятую для списков. Мы приходим к ситуации, когда желательно использовать код разработанный для класса списков, но не порождать потомков этого класса. Поэтому карта и город должны включать поля TRList, но не наследовать от него.
Определим два вспомогательных класса для положения города и указания связи с другим городом. Положение, это информация. Бессмысленно говорить о положении как об информации, если оно не содержит координат, отсюда конструктор содержит два параметра — x и y, и в класс добавлены соответствующие свойства.
Пример применения списков
Связь это тоже информация. Точно так же связь не информативна, если не указывает с чем связан объект, поэтому город сделан параметром конструктора.

Описание города является информацией, а конструктор имеет параметры названия и координат. Название и положение города можно узнать не только при создании, но и в любой последующий момент, поэтому добавлены свойства Name и Pos.
Описание города является информацией
Обратите внимание, что связи с другими городами непосредственно заложены в определение города а не карты. Это вопрос который можно решать так или иначе, но связи в TCity скрыты, т.е. являются реализацией. Если в дальнейшем вопрос размещения связей будет пересмотрен, пользователи класса не испытают никаких неудобств.
Наконец, карта — это объект в который можно добавлять города, связывать города с известным названием, находить город по названию и представлять карту в текстовом виде.
карта — это объект в который можно добавлять города
Проанализируем наиболее интересные фрагменты реализации новых классов.
Проанализируем наиболее интересные фрагменты
Обратите внимание, что полю FPCity в конструкторе присваивается параметр C, а не его адрес. Так и должно быть, ведь C это ссылка на объект. Для TLink нет необходимости в деструкторе, ведь уничтожается только ссылка, а сам объект может продолжать существовать. По аналогичной причине не создается копии FPCity при копировании, создается ссылка на тот же самый объект.
Функция копирования города не копирует связи с другими городами. Это задача карты. Ведь связи указываются по ссылке, а город сам по–себе не должен содержать связей с городами конкретной карты.

Функция печати города интересна использованием селектора для списка связей. Обратите внимание как элегантно пробегается весь список. При создании селектора текущим становится первый элемент списка. До появления пустого текущего элемента в результат добавляется соответствующий текстовый фрагмент и выполняется переход к следующему элементу. Поскольку такая обработка является типичной, метод Next возвращает ссылку на текущий а не на следующий элемент и делает следующий текущим (см. TSelect.Next в Приложении).

Наиболее сложный метод это связывание двух городов.
Перечислим ограничения на связывание, которые призваны обеспечить безопасность и удобство использования классов и осмысленность возникающих карт:
• город не следует связывать сам с собой;
• оба города должны принадлежать карте;
• не следует дублировать связь, если она уже существует;
• если A связан с B, то и B связан с A.


Разберитесь самостоятельно как эти ограничения реализованы в тексте программы.

Метод для распечатки карты демонстрирует переход к новой строке текста. Такой переход задается специальной комбинация символов #13#10 — новая строка. Если добавить такую комбинацию в текст, то вся последующая часть будет выводиться с новой строки.
сли добавить такую комбинацию в текст, то вся последующая часть будет выводиться с новой строки
Все недостающие методы приведены в Приложении. Там же имеются достаточные комментарии, позволяющие понять назначение и алгоритм каждого метода.
Опубликовал Kest September 01 2011 11:47:39 · 0 Комментариев · 7322 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Нет комментариев.
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
Создание фракталов
CoolDev TipsSyste...
DAlarm
Delphi. Разработк...
ComboBox97
Основы программир...
Изучаем Ассемблер
Нестандартные при...
Delphi7 Для профе...
Ics
PHP, MySQL и Drea...
Паскаль и Дельфи....
Панель "ссылки"
Zoom [Исходник на...
Создание отчетов ...
Print Grid
В.Понамарев - COM...
TsHintManager
Введение в станда...
Самоучитель PHP 5...

Топ загрузок
Приложение Клие... 100774
Delphi 7 Enterp... 97838
Converter AMR<-... 20268
GPSS World Stud... 17014
Borland C++Buil... 14192
Borland Delphi ... 10292
Turbo Pascal fo... 7374
Калькулятор [Ис... 5984
Visual Studio 2... 5207
Microsoft SQL S... 3661
Случайные статьи
Предложения Rox Ca...
Салоны красоты Тюмень
Поиск и замена текста
Алгоритм перезагру...
IP адрес, его опре...
Перчатки диэлектри...
Почтовый конверт
Список файлов
БЛОКИ GPSS/PC
коммутируемых и VP...
Анимационные прогр...
Статические элемен...
Занятие 3
средствами IPSecШи...
Программы-генераторы
Если многомерный с...
Создание поставщик...
Оформление текстов...
Списки определений
Клининговые компан...
Operand types do n...
Балансировка деревьев
Моделирование элек...
Сетевые протоколы ...
• Обеспечьте посто...
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?