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_ruleruntimeg [2008/04/22 16:17]
gjn
pl:miw:miw08_ruleruntimeg [2019/06/27 15:50] (aktualna)
Linia 1: Linia 1:
 ====== Opis ====== ====== Opis ======
 +
 +__**Projekt zakończony**__
 +
 Filip Haftek ​   <​filiphaftek@o2.pl>​ Filip Haftek ​   <​filiphaftek@o2.pl>​
  
Linia 16: Linia 19:
  
 ====== 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 +
- +
  
 ============ ​ Projekt ====== ============ ​ Projekt ======
Linia 95: Linia 78:
 </​code>​ </​code>​
 [[pl:​miw:​miw08_ruleruntimeg:​car|Plik car.pl]] [[pl:​miw:​miw08_ruleruntimeg:​car|Plik car.pl]]
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
  
  
Linia 105: Linia 105:
  
 ============ ​ 2. ZAAWANSOWANE SYSTEMY EKSPERCKIE ====== ============ ​ 2. ZAAWANSOWANE SYSTEMY EKSPERCKIE ======
-GUI wykonane w Javielogika ​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 ​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}}
pl/miw/miw08_ruleruntimeg.1208873827.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