Różnice

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

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
pl:miw:miw08_ruleruntimeo [2008/05/31 16:53]
miw
pl:miw:miw08_ruleruntimeo [2019/06/27 15:50] (aktualna)
Linia 1: Linia 1:
 ====== Opis ====== ====== Opis ======
 +__**Projekt zakończony**__
  
 **Grzegorz Caban**, <​grzegorz.caban@gmail.com>​ **Grzegorz Caban**, <​grzegorz.caban@gmail.com>​
Linia 9: Linia 10:
  
 [[pl:​miw:​miw08_ruleruntimeo:​spotkania | Historia spotkań ]] [[pl:​miw:​miw08_ruleruntimeo:​spotkania | Historia spotkań ]]
 +
 +
 +
 +====== Projekt ======
 +  * {{:​pl:​miw:​mvceditorlogtalk.zip|Edytor Tekstu oparty o MVC}} -  View i Controller w J2SE, Model w Logtalk, modyfikacja istniejącej aplikacji napisanej w całości w J2SE, podmiana Model na Logtalk + implementacja integracji Java <-> Logtalk w Controller
 +  * {{:​pl:​miw:​thermostatlogtalk.zip|Termostat oparty o MVC}} -  View i Controller w J2SE, Model w Logtalk, przykład termostatu zaimplementowanego od podstaw w Javie i Logtalk'​u na podstawie ​ [[hekate:​hekate_case_thermostat|modelu reguł]].
 +
 +
 +==== Uruchomienie ====
 +Oba powyższe projekty to skompresowane projekty Eclipse, aby je uruchomić należy :
 +  - Rozpakować zawartość archiwum do wybranego przez siebie folderu, ​
 +  - Uruchomić Ecplipse IDE i jako Workspace wybrać folder wybrany w punkcie pierwszym
 +  - Nastepnie z menu kontekstowego Eclipse wybieramy **File -> New Project** ​
 +  - W oknie dialogowym wybieramy :  **Java Project -> Next**
 +  - Zaznaczamy radiobutton : **Create project from existing source** i klikając ​ browse wybieramy folder zawierający rozpakowane źródła projektu z punktu 1
 +  - Wpisujemy nazwe projektu (musi być zgodna z nazwa folderu wybranego w poprzednim punkcie), klikamy **Next**
 +  - wybieramy finish na ostatniej stronie okna dialogowego
 +  - prawdopodobnie konieczne będzie [[pl:​miw:​miw08_ruleruntimeo:​howto|skonfigurowanie JPL i logtalk]]
 +  - projekt jest gotowy do uruchomienia
 +
 +
 +
 +
 +
 +
 +
  
  
Linia 27: Linia 54:
 ===== Obiektowy Prolog ===== ===== Obiektowy Prolog =====
 Poniżej znajduje się lista framework'​ów,​ które zostały w ramach tego projektu przetestowane w nadziei znalezienia spełniającego wyżej postawione zadania : Poniżej znajduje się lista framework'​ów,​ które zostały w ramach tego projektu przetestowane w nadziei znalezienia spełniającego wyżej postawione zadania :
-==== Analiza istniejących rozwiązań==== 
-  * [[http://​www.ncc.up.pt/​yap/​documentation.html|yap]] - yap jako wysoko wydajny kompilator Prologa, wzbogacony o takie funkcjonalności jak : strumienie We/Wy, socket'​y,​ moduły wyjątki, debugger itp. nie wydaje się być narzędziem przydatnym w tym projekcie, zwłaszcza że gdy w jego dokumentacji pojawia się temat obiektowości polecane jest użycie LogTalk'​a,​ który swoją drogą podobno dość dobrze się integruje z yap'​em. 
-  * [[http://​amzi.com/​|amzi]] - narzędzie płatne, choć można wykorzystywać do celów akademickich za darmo, niestety bez źródeł. Bardzo dobrze udokumentowane. Posiada interface do używania prologa z Javy, poprzez obiekt klasy LogicServer możemy się łatwo odwoływać do bazy wiedzy Prologa, w sposób przypominający przesyłanie zapytań do bazy danych.Natomiast dokładna dokumentacja : [[http://​www.amzi.com/​manuals/​amzi7/​ls/​lsfrtop.htm|LogicServer API]]. Rozwiązanie wydaje się być zbliżone do SICStus'​a. Wygląda na brak wsparcia dla obiektowości. ​ 
-  * [[http://​www.sics.se/​isl/​sicstuswww/​site/​index.html|SICStus Prolog]] - umożliwia integracje aplikacji napisanej w Prologu z inna napisana ​ w Java/.NET poprzez **PrologBeans**. Klient, aplikacja JAVA'​owowa przesyła komunikaty, które są odpowiednio oceniane przez server-Prolog'​a,​ obie aplikacje są osobnymi procesami, komunikują się przez sockety TCP, czyli w architekturze klient-serwer. SICStus Prolog wspiera także obiektowość poprzez moduł "The Objects Package—library(objects)",​ czyli zapewnia enkapsulacje,​ dziedziczenie itp. 
  
-  * [[http://​www.logtalk.org|LogTalk]] - własne wsparcie dla obiektowości,​ poprzez LogTalk objects, zapewnia wszystkie podstawowe wymagania. Nie znalazłem bezpośredniego wsparcia dla integracji z innymi platformami,​ natomiast dokumentacja wspomina o takich możliwościach,​ dzięki [[http://​logtalk.org/​manuals/​userman/​programming.html#​programming_portability|"​wysoko poziomowemu mapowaniu obiektów LogTalk"​]].. Szczegóły na razie nie znane, ale przykład integracji Javy z LogTalk [[https://​dev.crazydwarves.org/​ProjetM1TER|tutaj]] + [[pl:miw:miw08_ruleruntimeo:oopframeworks|Analiza istniejących rozwiązań]]
- +
- +
-  [[http://​www.prologonlinereference.org/​oop.psp|Prolog OOP]] - umożliwia stosowanie prolog'​owych modułów do za modelowania obiektowości,​ umożliwia wykorzystywanie wiekszości podstawowych predykatów obiektowości takich jak: +
-     ​* ​    ​dziedziczenie modułów +
-     ​* ​    ​enkapsulacje predykatów +
-     ​* ​    ​abstrakcyjne definiowanie modułów +
- +
- +
-Natomiast nie ma w nim mowy o możliwościach integracji Prologa z innym obiektowym językiem, to jest tylko próba wprowadzenia obiektowości do samego Prologa. +
- +
- +
- +
-  * [[http://​www.trinc-prolog.com/​doc/​pl_obj.htm|TrincProlog]] - oferuje właściwie analogiczny pomysł, czyli rozszerzenie prologa o obiektowość. Tyle, że tym razem dodatkowe słowa kluczowe pozwalają na deklarowanie klas niezależnie od modułów (czyli np kilka klas w jednym module, itp ). Tyle, że niestety ​ znowu brak możliwości integracji z innymi językami. Obiecująco wyglądała część do [[http://​www.trinc-prolog.com/​doc/​pl_win.htm|tworzenia aplikacji Windows]], ale okazało się że jest już gotowe API pozwalające odwoływać się do obiektów GUI (Window, Button, itp.) poprzez predykaty prologa. Być może można by wykorzystać to API od odwoływania się do dowolnych obiektów, zbudować analogiczne?​+
  
 ===== Wybrane rozwiązanie ===== ===== Wybrane rozwiązanie =====
Linia 70: Linia 80:
  
 Celem przetestowania znalezionych rozwiązań na przykładzie prostej aplikacji opartej o wzorzec MVC, powstały dwie aplikacje opisane poniżej. Inne brane pod uwagę przykłady prostych projektów [[pl:​miw::​miw08_ruleruntimeo:​mvcexamples|aplikacji opartych o MVC]] Celem przetestowania znalezionych rozwiązań na przykładzie prostej aplikacji opartej o wzorzec MVC, powstały dwie aplikacje opisane poniżej. Inne brane pod uwagę przykłady prostych projektów [[pl:​miw::​miw08_ruleruntimeo:​mvcexamples|aplikacji opartych o MVC]]
-===== Edytora ​Tekstu =====+ 
 +===== Edytor ​Tekstu =====
  
 Celem tego przykładu była próba zmiany gotowej aplikacji napisanej w [[http://​java.sun.com/​developer/​technicalArticles/​javase/​mvc/​| Javie opartej o wzorzec MVC]], na aplikacje której część logiki jest zaimplementowana poprzez obiekty Logtalk. Celem tego przykładu była próba zmiany gotowej aplikacji napisanej w [[http://​java.sun.com/​developer/​technicalArticles/​javase/​mvc/​| Javie opartej o wzorzec MVC]], na aplikacje której część logiki jest zaimplementowana poprzez obiekty Logtalk.
 +
 +
 [[pl:​miw::​miw08_ruleruntimeo:​mvceditor | Jak zaimplementować model w Logtalku, w gotowej aplikacji J2SE opartej o MVC]] [[pl:​miw::​miw08_ruleruntimeo:​mvceditor | Jak zaimplementować model w Logtalku, w gotowej aplikacji J2SE opartej o MVC]]
  
-===== Termostatu ​=====+ 
 +===== Termostat ​=====
 W odróżnieniu od poprzedniego przykładu temu przyświecał cel próby implementacji całej aplikacji, mając na starcie tylko [[hekate:​hekate_case_thermostat|model]] w formie diagramów ARD, XTT. Model ma zostać zaimplementowany w Logtalk'​u,​ reszta w Javie. W odróżnieniu od poprzedniego przykładu temu przyświecał cel próby implementacji całej aplikacji, mając na starcie tylko [[hekate:​hekate_case_thermostat|model]] w formie diagramów ARD, XTT. Model ma zostać zaimplementowany w Logtalk'​u,​ reszta w Javie.
-[[pl:​miw::​miw08_ruleruntimeo:​mvctermostate ​| Jak zaimplementować MVC w Javie i Logtalku na podstawie diagramów ARD, XTT]]+ 
 + 
 +[[pl:​miw::​miw08_ruleruntimeo:​mvcthermostate ​| Jak zaimplementować MVC w Javie i Logtalku na podstawie diagramów ARD, XTT]] 
  
  
Linia 86: Linia 103:
   * {{:​pl:​miw:​mvcexample.zip|źródła edytora dokumentów w oryginale (bez Logtalk)}} ​   * {{:​pl:​miw:​mvcexample.zip|źródła edytora dokumentów w oryginale (bez Logtalk)}} ​
   * [[https://​dev.crazydwarves.org/​ProjetM1TER/​wiki|Projekt wykorzystujący Logtalk i JPL do integracji z Java]]   * [[https://​dev.crazydwarves.org/​ProjetM1TER/​wiki|Projekt wykorzystujący Logtalk i JPL do integracji z Java]]
 +  * [[http://​logtalk.org/​|Logtalk - strona główna ]]
 +  * [[http://​www.swi-prolog.org/​packages/​jpl/​| Dokumentacja do JPL ]]
  
  
-====== Projekt ====== 
  
-==== Edytor Dokumentów ==== 
-[[http://​java.sun.com/​developer/​technicalArticles/​javase/​mvc/​| Edytor dokumentów]] -- Pomysły na system regułowy: 
-  * kolorowanie składni 
-  * wyszukiwanie słów kluczowych, analiza zdan, jezyka, 
-  * xml, html (np formatowanie tekstu na podstawie tagów i atrybutów html) 
-  * kontrola czy tekst zawiera wszystkie wymagane elementy (np sprawdzanie poprawnosci podania, faktury itp) 
-  * inteligentne wyszukiwanie strukturalne 
  
  
pl/miw/miw08_ruleruntimeo.1212245582.txt.gz · ostatnio zmienione: 2019/06/27 15:58 (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