ОСП   ООП   к алгоритмизации   СУБД   Экспертные системы   ЯиМП   3GL   4GL   5GL   ТП

Объектно-ориентированное программирование на языке Prolog++

  1. Особенности языка Пролог
  2. Правила сопоставления термов в системе Пролог
  3. Общие принципы поиска ответов на вопросы системой Пролог
  4. Объекты данных
  5. Структурированные объекты
  6. Структура программы
  7. Арифметические выражения
  8. Сравнение результатов арифметических выражений
  9. Работа с файлами
  10. Списки
  11. Рекурсивное определение списка
  12. Работа со списками
  13. Проверка типов термов
  14. Операции с базами данных

Из множества промышленных объектно-ориентированных расширений языков (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 еще более мощным продуктом, а комбинация программирования с управлением данными и объектно-ориентированного программирования непременно послужит тому, что продуктом заинтересуются.

ОСП   ООП   к алгоритмизации   СУБД   Экспертные системы   ЯиМП   3GL   4GL   5GL   ТП

Знаете ли Вы, что модификаторы - это операции, которые модифицируют объекты соответствующего им типа. Например, операция push для стека.

НОВОСТИ ФОРУМАФорум Рыцари теории эфира
Рыцари теории эфира
 11.11.2019 - 02:21: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Марины Мелиховой - Карим_Хайдаров.
11.11.2019 - 00:24: СОВЕСТЬ - Conscience -> РУССКИЙ МИР - Карим_Хайдаров.
11.11.2019 - 00:20: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Светланы Вислобоковой - Карим_Хайдаров.
10.11.2019 - 23:14: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Кирилла Мямлина - Карим_Хайдаров.
08.11.2019 - 06:44: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
08.11.2019 - 06:42: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вячеслава Осиевского - Карим_Хайдаров.
06.11.2019 - 09:43: ЭКОНОМИКА И ФИНАНСЫ - Economy and Finances -> ПРОБЛЕМА КРИМИНАЛИЗАЦИИ ЭКОНОМИКИ - Карим_Хайдаров.
05.11.2019 - 21:56: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Декларация Академической Свободы - Карим_Хайдаров.
04.11.2019 - 12:41: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> КОМПЬЮТЕРНО-СЕТЕВАЯ БЕЗОПАСНОСТЬ ДЛЯ ВСЕХ - Карим_Хайдаров.
04.11.2019 - 12:28: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ЗА НАМИ БЛЮДЯТ - Карим_Хайдаров.
31.10.2019 - 08:27: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ПРАВОСУДИЯ.НЕТ - Карим_Хайдаров.
30.10.2019 - 09:07: ЭКОНОМИКА И ФИНАНСЫ - Economy and Finances -> КОЛЛАПС МИРОВОЙ ФИНАНСОВОЙ СИСТЕМЫ - Карим_Хайдаров.
Bourabai Research Institution home page

Bourabai Research - Технологии XXI века Bourabai Research Institution