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/05/19 21:36]
miw
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, pliki java w wiki we wlasnym namespace +
- +
  
 ============ ​ Projekt ====== ============ ​ Projekt ======
Linia 109: Linia 91:
  
  
-============ ​ 2. ZAAWANSOWANE SYSTEMY EKSPERCKIE ====== 
  
-**2.1  XSHELL** System do rozpoznowania ryb.  + 
-Wykorzystane predykaty+ 
-    <code prolog>+ 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 +============ ​ 2. ZAAWANSOWANE SYSTEMY EKSPERCKIE ====== 
 +== 2.1  XSHELL System do rozpoznowania ryb:== 
 +  * Predykat question2/2 pokazuje okno z pytaniem oraz przyciskami YES i NO 
 +<code prolog>
     question2(Result,​Question):​-     question2(Result,​Question):​-
  jpl_datums_to_array(Question,​Q),​  jpl_datums_to_array(Question,​Q),​
Linia 120: Linia 114:
  jpl_call('​miw2.YNQuestion',​getValue,​[],​V),​  jpl_call('​miw2.YNQuestion',​getValue,​[],​V),​
  Result = V.  Result = V.
-    ​</​code>​ +</​code>​ 
-  * dfd +  * Predykat myQuestion/​3 pokazuje okno z przyciskami do wyboru( tylko jeden można zaznaczyć) 
-  <code prolog>+<code prolog>
   myQuestion(Question,​Choices,​Response):​-   myQuestion(Question,​Choices,​Response):​-
  jpl_datums_to_array(Choices,​L),​  jpl_datums_to_array(Choices,​L),​
Linia 130: Linia 124:
  jpl_call('​miw2.MyRBForm',​getValue,​[],​V),​  jpl_call('​miw2.MyRBForm',​getValue,​[],​V),​
  Response = V.  Response = V.
-  ​</​code>​+</​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.2  OOPS** System do produkcji zabawek. ​ 
  
-**2.3 Wymagane pliki** 
-Spakowany miw2.jar - zawiera niezbędne klasy: {{:​pl:​miw:​miw2.zip|miw2.zip}} 
  
  
Linia 143: Linia 178:
  
 ====== 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: 1. Klasy Javy wykorzystywane z poziomu języka Prolog:
-  * Info +  * Info - odpowiada za wyświetlanie okna z informacją [[pl:​miw:​miw08_ruleruntimeg:​info|Info.java]] 
-  * MyRBForm +  * MyRBForm ​- okno z RadioButtonami ​ [[pl:​miw:​miw08_ruleruntimeg:​myrbform|MyRBForm.java]] 
-  * MyCBForm +  * MyCBForm ​- okno z CheckBoxami  ​ 
-  * YNQuestion +  * YNQuestion ​- okno z pytaniem oraz przyciskami YES i NO  [[pl:​miw:​miw08_ruleruntimeg:​ynquestion|YNQuestion.java]] 
-  * MainForm +  * ControlForm - okno z przyciskami do sterowania aplikacją ​ [[pl:​miw:​miw08_ruleruntimeg:​controlform|ControlForm.java]] 
-  * PlFileChooser+  * PlFileChooser ​- okno z wyborem pliku prologu ​ [[pl:​miw:​miw08_ruleruntimeg:​plfilechooser|PlFileChooser.java]]
  
 2. Predykaty wykorzystyjuące klasy Javy: 2. Predykaty wykorzystyjuące klasy Javy:
Linia 155: Linia 201:
   * question2(Result,​Question)   * question2(Result,​Question)
   * info(X)   * info(X)
 +  * initial
 +  * readF(File)
 +  * control(X,​Buttons)
 + ​Dokładny opis predykatów znajduje się w części Projekt.
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
  
  
  
 ====== Materiały ====== ====== Materiały ======
-Pytania+ 
-- nazwa zwierzaka w MyCBForm +[[pl:miw:​miw08_ruleruntimeg:​wymagania|Wymagania]] 
-rozmiar Frame -  2 opcje + 
 +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.1211225794.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