|
ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ РАСШИРЕНИЕ ПРОЛОГА
Из множества промышленных объектно-ориентированных расширений
языков (object oriented extensions to languages), которых сейчас соз-
дается все больше и больше, одним из самых интересных является
Prolog++, объектно-ориентированная версия Пролога, созданная Logic
Programming Associates (LPA). LPA давно находится в числе основных
поставщиков Пролога и имеет версии языка как для PC, так и для
Macintosh.
В данной статье рассматривается MacObject, версия Prolog ++ для
Macintosh. MacObject используется вместе с MacProlog 3.1. Итак, что
же предлагает Prolog ++ такого, чего не могут предложить другие объ-
ектно-ориентированные среды, и как объектно-ориентированное расшире-
ние вписывается в язык, основанный на правилах?
Prolog и Prolog ++
Пролог - это язык, предназначенный для поиска решений. Это дек-
ларативный язык, то есть формальное определение (постановка) задачи
может быть использовано для ее решения. Пролог определяет логические
отношения в задаче, как отличные от пошагового решения этой задачи.
Центральной частью Пролога являются средства логического вывода,
которые решают запросы, используя заданное множество фактов и правил,
к которым обращаются как к утверждениям. Пролог также не имеет деле-
ния переменных на типы и может динамически добавлять правила и факты
к средствам вывода. Таким образом, это гибкий язык, и он более приго-
ден для объектно-ориентированного расширения, чем язык со строго за-
данными типами, например, Паскаль.
Пролог ++ представляет собой дополнение к стандартному Прологу.
Все свойства языка по-прежнему доступны программистам. Следовательно,
Пролог ++ можно отнести к группе гибридных языков, представителями
которой считаются Object Pascal и C++.
Расширение Пролог ++ поддерживает все свойства, присущие обычно
объектно-ориентированным языкам: концепции объектов и классов, еди-
ничное и многократное наследование, разбиение на подклассы и передачу
сообщений. Поддерживаются также некоторые усовершенствованные свойс-
тва, существующие в таких языках, как C++ и Smalltalk, включая общие
и частные методы.
Интересным свойством является поддержка в языке программирования
с управлением данными. Эта техника, которая может быть еще названа
программированием, "управляемым событиями", используется в большинс-
тве языков объектно-ориентированного программирования, особенно в
тех, которые разработаны для машин с интерфейсом, управляемым
"мышью".
Объектно-ориентированная программа реагирует на события, которые
определяют поток управления. В Прологе ++ программирование с управле-
нием данными достигается при помощи концепции демонов. Демон предс-
тавляет собой объект, методы которого вызываются в случае определен-
ных событий и могут быть таким образом использованы для поддержки
программирования с управлением данными.
Сам язык основан на концепции передачи сообщений. Программа на
Прологе ++ строится вокруг множества объектов Пролога ++, которые об-
мениваются сообщениями. В этом смысле Пролог ++ ближе к чистому объ-
ектно-ориентированному языку, такому, как Smalltalk, чем C++ или
Object Pascal. Определения объектов строятся исходя из вызовов
Open_Object [имя_объекта]
и
Close_Object [имя_объекта] ,
а методы определяются практически так же, как в других объектно-ори-
ентированных языках. Для задания наследования можно явным образом
указать, какой метод какого объекта должен наследоваться, что являет-
ся необходимым для многократного наследования.
Использование MacProlog
Установить MacObject просто: нужно только переписать все файлы в
каталог на жестком диске и запустить MacObject или один из его доку-
ментов. При этом загружается файл запуска MacObject, и к списку меню
добавляется еще одно меню под названием "объекты".
Меню объектов содержит расширения среды MacProlog, в том числе
команды открытия и закрытия иерархий объектов и пересылки сообщений
между объектами. Продукт поставляется с набором программ-примеров,
среди которых задача составления школьного расписания, классический
банковский пример и программа управления складом.
Все примеры имеют отдельные иерархии объектов, которые обеспечи-
вают графический способ исследования программ.
Одним из лучших свойств MacProlog является то, что он полностью
вписался в интерфейс Macintosh и, в частности, прекрасно использует
графические возможности машины. MacObject добавил естественное расши-
рение к этой среде и значительно облегчил управление системой.
В среде объектно-ориентированного программирования особенно
важно ориентироваться в иерархии наследования, знать, какие сообщения
каким объектам посылаются и следить за атрибутами объектов. Ориенти-
роваться в программах MacObject можно при помощи иерархии объектов:
диаграмм, представленных в виде деревьев, которые показывают иерархии
наследования и могут также служить средством управления системой в
целом.
Иерархии объектов
Интерфейс диаграмм иерархий объектов подобен тому, который воз-
никает при использовании графов вызовов, и использует графическое ок-
но MacProlog с дополнительными возможностями палитры.
Эти возможности включают средства для создания новых объектов
или редактирования существующих (object tool), средства установления
связи между объектами (link tool), которое используется в основном в
случае множественного наследования, а также средства для атрибутов
(attribute tool) и информационные (information tool). Двойное нажатие
в момент выбора средства для объекта выдаст вместо самого объекта ок-
но метода объекта.
При выборе информационного средства для объекта будет выдано ок-
но информационного диалога об объекте, и вы сможете получить из него
информацию об экземплярах объекта, его методах и атрибутах. Имеется
также список сообщений - и тех, которые объект получает, и тех, кото-
рые он посылает другим объектам.
Существует также возможность передвигаться вверх и вниз по ие-
рархии объектов, используя информационное окно объекта, посредством
выбора подклассов или вышестоящих классов объекта.
Иерархии объектов особенно полезны для макетирования - область,
в которой Пролог вообще чрезвычайно силен. Помимо возможности опреде-
ления иерархии можно также задать методы, определить сообщения и про-
извести проверку на любые коллизии, например, проверить, не повторя-
ется ли имя метода.
Единственным неудобством является то, что иерархия объектов не
имеет связи с текущей программой, и изменения в одной из них не пере-
носятся автоматически на другую.
Тем не менее, поскольку иерархии объектов используются в основ-
ном при разработке и макетировании, это не играет роли. Иерархии объ-
ектов полезны и в плане графического отображения идей, особенно когда
речь идет о сложных концепциях, таких как многократное наследование.
Пролог ++ имеет ясную систему записи, которая даже может быть
использована в качестве основы для техники построения диаграмм в C++
или Object Pascal. Особенно впечатляют средства установления связи,
которые демонстрируют порядок вызова методов в случае, когда объект
имеет более чем один вышестоящий класс.
Программам MacObject также доступны средства стандартного
MacProlog, из которых наиболее полезны графы вызова и средства отлад-
ки. Граф вызова показывает связь с другим объектом, методы которого
он вызывает.
Мощные средства отладки содержат полный набор команд трассиров-
ки, включая установку точек просмотра для различных методов или от-
дельных объектов, так что отладчик подключается всякий раз, когда вы-
зывается данный метод или любой из методов данного объекта.
MacObject может использовать и графические возможности
MacProlog, в том числе графическое окно - прекрасное средство быстро-
го макетирования прикладных задач графического типа. Имеется также
доступ ко всем возможностям Macintosh, и внешним базовым средствам,
написанным на Паскале или C. MacProlog действительно прекрасно прис-
пособлен к Macintosh, так что его интерфейс обеспечивает эффективную
среду разработки.
Передача сообщений
В MacObject способ выполнения программ совершенно отличен от
стандартного Пролога. В стандартном Прологе программы выполняются
посредством задания простого запроса. В MacObject механизм запросов
модифицирован таким образом, чтобы объектам можно было посылать сооб-
щения.
Например, в качестве одного из примеров к продукту прилагается
задача составления школьного расписания: имея информацию об учителях
и предметах, необходимо сотавить расписание. Чтобы запустить этот
пример, введите запрос:
timetable <- make
При этом будет передано сообщение 'make' ('создать') объекту
'расписание', и будет рассчитано новое расписание. Если бы нельзя бы-
ло передать объекту сообщение, невозможно было бы запустить ни одну
программу Пролога ++. Объекты могут обмениваться сообщениями между
собой посредством команды 'send' ('послать') из меню объектов. Сооб-
щение также может быть отправлено вверх по иерархии.
Использование MacObject
MacObject представляет собой солидный продукт с большим количес-
твом хорошо продуманных возможностей. Объектно-ориентированные расши-
рения Пролога по своей концепции сходны с идеями экспертной системы
Flex, которая также может использоваться совместно с продуктом.
Диаграммы иерархий объектов похожи на диаграммы иерархий объек-
тов в традиционных средах объектно-ориентированного программирова-
ния типа Smalltalk, и современных средствах макетирования, таких как
Prograph.
Графическое представление идей помогает ясно представить себе
задачу и найти решение. Таким образом возможно, что MacProlog будет
использоваться в качестве испытательного стенда или средства макети-
рования прикладных задач, что в результате приведет к созданию друго-
го языка.
Однако, не следует считать MacProlog только лишь средством маке-
тирования. Продукт предлагает полную среду для разработки прикладных
задач.
Вы можете создавать законченные прикладные разработки для
Macintosh, осуществлять доступ ко всем его средствам, и даже созда-
вать операционно-независимые прикладные системы (stand alone
applications) при помощи генератора независимых прикладных разрабо-
ток. Пролог всегда был идеальной средой для решения задач вследствие
близости определения задачи и решения ее на Прологе. Объектно-ориен-
тированное программирование еще усиливает это качество, поскольку мо-
гут быть созданы объекты и методы, которые еще точнее моделируют за-
дачу. Объектно-ориентированные расширения делают LPA MacProlog еще
более мощным продуктом, а комбинация программирования с управлением
данными и объектно-ориентированного программирования непременно пос-
лужит тому, что продуктом заинтересуются.
...................
Prolog 3.0
Стоимость: Prolog 3.0 595 фунтов (и VAT)
MacObject 495 фунтов (и VAT)
Замечание: MacObject требует LPA MacProlog
Обращаться: Logic Programming Assiciates, Studio 4, Royal
Victoria Patriotic Building, Trinity Road, London SW18 3SX.
Tel: (081) 871 2016
|
|