В утверждениях объекты представляют собой данные.
Простой объект представляет сам себя, а структура, состоящая из простых объектов, называется простой структурой.
Составной объект представляют другой объект или совокупность объектов. Составные объекты дают возможность представить эту совокупность объектов как единое целое, и эту совокупность легко в случае необходимости разделить.
Аргументы составного объекта данных могут быть сами составными объектами.
student
/ \
name address
/ \ / | \
first last city street housenumb
3.2.1. Составная структура
На Прологе это выглядит так:
student(name(“liz”,”petrova”),address(“moscow”,”lefortov”,23))
student – главный функтор;
name, address- функторы
Функтор – это имя (не функция), которое идентифицирует сложную структуру объекта данных и связывает его аргументы вместе. Аргументы в свою очередь могут быть составными. Функтор помогает распознавать различия в объектах (один объект - это имя, другой объект- это адрес). Пролог позволяет объявлять составные объекты в разделе domains:
|
|
domains
stud_name=name(symbol,symbol)
stud_addr=address(symbol,symbol,integer)
predicates
student(stud_name,stud_addr)
clauses
student(name(“liz”,”petrov”),address(“Moscow”,”lefortov”,23)).
Имена доменов stud_name и stud_addr – это имена составных объектов, образованных при помощи функторов name и address.Таким образом, составной объект является определенной структурой доменов. Каждая структура предполагает особое представление фактов в базе данных (БД).
Структура обеспечивает средство сортировки объектов по категориям. Ссылки на доменную структуру осуществляются по имени функтора.
Пролог позволяет конструировать составные объекты с несколькими уровнями.
Листинг3.1. Использование доменной структуры с именем personal_library
domains
personal_library = book(title, author, publisher, year)
collector, title, author, publisher=symbol
year=integer
predicates
collection(collector, personal_library)
clauses
collection(ivanov,book(“Artificial intelligence”,”Patrick Winston”,”Addison-Wesley Publishing company”,2005)).
сollection(petrov, book(“Artificial intelligence”, ”Stuart Rassel”, ”Pretice Hall”,2007)).
.................................................
и т.д.
Доменная структурная диаграмма программы “Библиотека” (ДСД)
personal_lilrary домен
|
book функтор структуры 0-уровень
__________|_______________ |
| | | |
title author publisher year уровень1