ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП |
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы. |
ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ РАСШИРЕНИЕ ПРОЛОГА
Из множества промышленных объектно-ориентированных расширений языков (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