next up previous contents index
Next: Architektura Up: Objektově orientované programování v Prologu Previous: KSL/LOGIC: Reflexivní a rozšiřitelný   Obsah   Index


LogTalk: popis a ukázky použití [2]

Logtalk je objektově orientovaná nadstavba programovacího jazyka Prolog. Je založen na reflexivní architektuře zaměřené na získání otevřeného systému, snadno uzpůsobitelnému potřebám uživatele. Je v něm implementována jednoduchá dědičnost a mechanismus delegace7.1. Logtalk umožňuje programátorům definovat nové typy slotů7.2, každý s vlastní sémantikou, které mohou být použity libovolnými objekty. Logtalk obsahuje rysy programování založeném na událostech, umožňuje velmi dobře reprezentovat a udržovat vztahy, které omezují vnitřní stavy použitých objektů.

Programovací jazyk PROLOG [23] je znám svou schopností deklarativního způsobu popisu toho, co je pravdivé ve své oblasti (Prolog obsahuje vestavěný deduktivní mechanismus, který umožňuje najít důsledek nových skutečností našeho popisu oblasti). Na druhou stranu, objektově orientované programovací jazyky se nejlépe hodí pro popis struktury a chování objektů. Potřeba sloučit tyto dva různé přístupy vyústila v několika rozšířeních, které zjednodušují objektově orientované programování v Prologu [25,29,35]. Tato rozšíření mají společnou interpretaci teorie objektů, co se týče teorie, a princip zasílání zpráv jako důkaz stavby (v logickém smyslu). Naopak se liší úrovní strukturování objektů a v roli destruktivního přiřazování. Problémem většiny takovýchto rozšíření je absence otevřené architektury, která by umožnila experimentování s rozdílnými přístupy k objektově orientovanému programování. Logtalk se snaží toto vyřešit používáním reflexivní architektury.

Další otázkou, na kterou se Logtalk snaží najít odpověď je složitost jazyků jako Smalltalk [26] nebo C++ [34] co se týče reprezentace a údržby vztahů mezi objekty. I když definujeme vztahy pomocí tříd, je nezbytné přidat do objektů extra část kódu, aby vztahy byly upozorněny na změny, které mohou ovlivnit jejich konzistenci či platnost. Zde prezentované řešení je integrací schopností programování orientovaného na události v Logtalku.



Subsections
next up previous contents index
Next: Architektura Up: Objektově orientované programování v Prologu Previous: KSL/LOGIC: Reflexivní a rozšiřitelný   Obsah   Index
Tomáš Kubíček 2002-05-19