Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

pl:miw:miw08_ruleruntimeo:jpljava [2019/06/27 15:50] (aktualna)
Linia 1: Linia 1:
 +====== Przykład użycia JPL do komunikacji Prolog'​a z Java ======
  
 +Poniżej przestawiam prosty przykład mocno inspirowany tutorialem do JPL. Probując wywołać predykat Prologa z kodu Javy posługujemy się następującą składnią :
 +<code java>
 +Query q2 =
 +      new Query(
 +        "​child_of",​
 +        new Term[] {new Atom("​joe"​),​new Atom("​ralf"​)}
 +        );
 +
 +System.out.println(
 +     "​child_of(joe,​ralf) is " +
 +      ( q2.query() ? "​provable"​ : "not provable"​ )
 +    );
 +</​code>​
 +Przykład pokazuje przesłanie zapytania do bazy wiedzy prologa. Można ten mechanizm wykorzystać do wywoływania predykatów wewnątrz obiektów LogTalk, czyli de facto do wywoływania metod na obiektach LogTalk z obiektów Java'​y.
 +
 +Gdy konieczne jest wysłanie komunikatu do obiektu Java'y z poziomu Prologa, JPL oferuje następujące rozwiązanie :
 +
 +Predykat **jpl_new/​3** pozwala na utworzenie instancji obiektu klasy z Javy :
 +<code prolog> ​
 +jpl_new( '​javax.swing.JFrame',​ ['​frame with dialog'​],​ F)
 +</​code>​
 +Natomiast predykat ​ **jpl_call/​4** pozwala wywołać metodę na utworzonym powyżej obiekcie:
 +<code prolog>
 +jpl_call( F, setVisible, [@(true)], _)
 +</​code>​
 +
 +Jak widać JPL umożliwia obustronne wywoływanie metod pomiędzy obiektami klas zdefiniowanych w Javie i logiką opisaną w Prologu. ​
pl/miw/miw08_ruleruntimeo/jpljava.txt · ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0