Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:miw:miw08_ruleruntimeg [2008/04/22 16:17] gjn |
pl:miw:miw08_ruleruntimeg [2019/06/27 15:50] (aktualna) |
====== Opis ====== | ====== Opis ====== |
| |
| __**Projekt zakończony**__ |
| |
Filip Haftek <filiphaftek@o2.pl> | Filip Haftek <filiphaftek@o2.pl> |
| |
| |
====== Spotkania ====== | ====== Spotkania ====== |
| [[pl:miw:miw08_ruleruntimeg:spotkania]] |
===== 080304 ===== | |
===== 080318 ===== | |
* car.pl skoncz | |
| |
===== 080401 ===== | |
* upload car.pl do wiki | |
* do przeanalizowani: [[pl:prolog:prolog_lab:prolog_lab_6#tematprzyklady_systemow_regulowych|inne systemy]] | |
| |
| |
| |
| |
| |
| |
===== 080422 ===== | |
* xshell oops | |
| |
| |
===== 080520 ===== | |
* zarys sprawozd, opis alternatywnych realizacji, pliki java w wiki we wlasnym namespace | |
| |
| |
============ Projekt ====== | ============ Projekt ====== |
</code> | </code> |
[[pl:miw:miw08_ruleruntimeg:car|Plik car.pl]] | [[pl:miw:miw08_ruleruntimeg:car|Plik car.pl]] |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
============ 2. ZAAWANSOWANE SYSTEMY EKSPERCKIE ====== | ============ 2. ZAAWANSOWANE SYSTEMY EKSPERCKIE ====== |
GUI wykonane w Javie, logika w Prologu. | == 2.1 XSHELL System do rozpoznowania ryb:== |
| * Predykat question2/2 pokazuje okno z pytaniem oraz przyciskami YES i NO |
| <code prolog> |
| question2(Result,Question):- |
| jpl_datums_to_array(Question,Q), |
| jpl_new('miw2.YNQuestion',[Q],D), |
| jpl_call(D,setVisible,[@(true)],_), |
| jpl_call('miw2.YNQuestion',getValue,[],V), |
| Result = V. |
| </code> |
| * Predykat myQuestion/3 pokazuje okno z przyciskami do wyboru( tylko jeden można zaznaczyć) |
| <code prolog> |
| myQuestion(Question,Choices,Response):- |
| jpl_datums_to_array(Choices,L), |
| jpl_datums_to_array(Question,Q), |
| jpl_new('miw2.MyRBForm',[L,Q],F), |
| jpl_call(F,setVisible,[@(true)],_), |
| jpl_call('miw2.MyRBForm',getValue,[],V), |
| Response = V. |
| </code> |
| * Predykat info/1 wyświetla okno z informacją |
| <code prolog> |
| info(X):- |
| jpl_datums_to_array(X,Q), |
| jpl_new('miw2.Info',[Q],D) |
| </code> |
| Zmienione pliki: |
| * [[pl:miw:miw08_ruleruntimeg:oops|oops.pl]] |
| * [[pl:miw:miw08_ruleruntimeg:animal_kb|animal_kb.pl]] |
| |
| == 2.2 OOPS System do produkcji zabawek :== |
| * Problem: Po załadowaniu danych wejsciowych, przy próbie ponownego załadowania danych program wczytuje do bazy prologu dane z pierwszego wczytania, trzeba zamknąć aplikacje i uruchomić ponownie. |
| * Predykat initial/0 wyświetla okno z wszystkimi możliwymi danymi wejściowymi z możliwością zaznaczenia dowolnej ilości danych |
| <code prolog> |
| initial:- |
| jpl_datums_to_array([dane_wejsciowe],L), |
| jpl_new('miw2.MyCBForm',[L,'Choose facts:'],D), |
| jpl_call(D,getChecked,[],_), |
| jpl_get('miw2.MyCBForm',termos,{C}), |
| assert(initial_data(C)). |
| </code> |
| * control/2 wyświetla okno sterowania, przyciski sterujące wczytywane są dynamicznie w konstruktorze |
| <code prolog> |
| control(X,Buttons):- |
| repeat, |
| jpl_datums_to_array(Buttons,B), |
| jpl_new('miw2.ControlForm',[X,B],F), |
| jpl_call(F,getValue,[],V), |
| change(V,Z), |
| doit(Z), |
| Z = exit. |
| </code> |
| * readF/1 otwiera okno wyboru pliku z rozszerzeniem pl do załadowania |
| <code prolog> |
| readF(File):- |
| jpl_new('miw2.PlFileChooser',[],F), |
| jpl_call(F,getFile,[],File). |
| </code> |
| Zmienione pliki: |
| * [[pl:miw:miw08_ruleruntimeg:xshell|xshell.pl]] |
| * [[pl:miw:miw08_ruleruntimeg:cichild|cichild.pl]] |
| |
| |
| |
| |
| |
| |
**2.1 XSHELL** System do rozpoznowania ryb. | |
| |
[[pl:miw:miw08_ruleruntimeg:xshell|Plik xshell.pl]] | |
| |
**2.2 OOPS** System do produkcji zabawek. | |
| |
Problem - [[pl:miw:miw08_ruleruntimeg:animal_kb|animal_kb.pl]] | |
| |
**2.3 Wymagane pliki** | |
Spakowany miw2.jar - zawiera niezbędne klasy: {{:pl:miw:miw2.zip|miw2.zip}} | |
| |
====== Sprawozdanie ====== | ====== Sprawozdanie ====== |
| == 1.Cel projektu :== |
| Celem projektu było swtorzenie aplikacji MV, w której modelem jest program napisany w języku prolog, natomiast interfejs został stworzony w Javie. |
| == 2. Wykonanie :== |
| W projekcie zastosowano 6 klas Javy odpowiedzialnych za wyświetlanie odpowiednich okien w trakcie działania programu. Szczegółowy opis klas znajduje się poniżej, natomiast cały projekt Javy wraz z dokumentacją znajduje się w części Materiały. Dodatkowo stworzono 6 predykatów, których opis znajduje się w części Projekt. |
| Aby uruchomić program należy wpisać odpowiednią komendę w prologu ( main. lub xshell. w zależności od programu), następnie pojawi się okienko Javy z informacją. Dalsza obsługa aplikacji polega na klikaniu odpowiednich przycisków zgodnie z pojawiającymi się instrukcjami. |
| Klasy Javy zostały napisane w możliwie uniwersalny sposób tzn: |
| * klasa Info posiada 3 różne konstruktory w celu ułatwienia obsługi jej z poziomu prologu ( String[], Compound[] lub String) |
| * klasa ControlForm jako argument pobiera Insrtukcję oraz listę przycisków, po wciśnięciu przycisku zwracana jest jego wartośc tj. 1 dla pierwszego, 2 dla kolejnego itp., co wymaga jedynie zastosowania z poziomu języka prolog zamiany wartości liczbowej na dowolną wartość. |
| |
| UWAGA: W programie OOPS po załadowaniu pliku z danymi i wybraniu odpowiednich danych startowych, aby dokonać ponownego załadowania danych wejściowych należy zamknąć program i uruchomić ponownie. |
| == 3. Zastosowane klasy i predykaty :== |
| 1. Klasy Javy wykorzystywane z poziomu języka Prolog: |
| * Info - odpowiada za wyświetlanie okna z informacją [[pl:miw:miw08_ruleruntimeg:info|Info.java]] |
| * MyRBForm - okno z RadioButtonami [[pl:miw:miw08_ruleruntimeg:myrbform|MyRBForm.java]] |
| * MyCBForm - okno z CheckBoxami |
| * YNQuestion - okno z pytaniem oraz przyciskami YES i NO [[pl:miw:miw08_ruleruntimeg:ynquestion|YNQuestion.java]] |
| * ControlForm - okno z przyciskami do sterowania aplikacją [[pl:miw:miw08_ruleruntimeg:controlform|ControlForm.java]] |
| * PlFileChooser - okno z wyborem pliku prologu [[pl:miw:miw08_ruleruntimeg:plfilechooser|PlFileChooser.java]] |
| |
| 2. Predykaty wykorzystyjuące klasy Javy: |
| * myQuestion(Question,Choices,Response) |
| * question2(Result,Question) |
| * info(X) |
| * initial |
| * readF(File) |
| * control(X,Buttons) |
| Dokładny opis predykatów znajduje się w części Projekt. |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
====== Materiały ====== | ====== Materiały ====== |
| |
| [[pl:miw:miw08_ruleruntimeg:wymagania|Wymagania]] |
| |
| Spakowany projekt Javy - {{:pl:miw:miw08_ruleruntimeg:miw2.zip|miw2.zip}} |
| |
| Do projektu CAR: |
| {{:pl:miw:miw08_ruleruntimeg:car.pl|car.pl}} |
| |
| Do projektu OOPS: |
| {{:pl:miw:miw08_ruleruntimeg:oops.pl|oops.pl}} |
| {{:pl:miw:miw08_ruleruntimeg:animal_kb.pl|animal_kb.pl}} |
| |
| Do projektu XSHELL: |
| {{:pl:miw:miw08_ruleruntimeg:xshell.pl|xshell.pl}} |
| {{:pl:miw:miw08_ruleruntimeg:cichlid.pl|cichlid.pl}} |
| {{:pl:miw:miw08_ruleruntimeg:readstr.pl|readstr.pl}} |
| {{:pl:miw:miw08_ruleruntimeg:readnum.pl|readnum.pl}} |
| {{:pl:miw:miw08_ruleruntimeg:writeln.pl|writeln.pl}} |