To jest stara wersja strony!
Opis
Spotkania
08.02.19
Przydzielenie projektu, wstępne omówienie tematu.
08.03.04
Pytania:
1. pytanie dotyczące aplikacji którą pokazywał Pan na pierwszym spotkaniu (jak działa i jak ja zainstalować, i jak wygląda od środka)?
2. czy w razie problemów mogę się zgłaszać do Pana?
08.03.18
generowanie prostych grafów skierowanych w XPCE
możliwość edycji, sprzężenie zwrotne, t.j. klikam na węźle, krawędzi → odpala predykat w prologu, callback
08.04.01
generowanie ARD w XPCE z
varda
Sprawozdanie
1. Wstęp:
a. Środowisko pracy:
Przykład tworzenia grafu w XPCE był realizowany w środowisu Windows XP.
b. Oprogramowanie:
c. Biblioteka XPCE w Prologu:
XPCE to zestaw narzędzi wspomagający tworzenie GUI pod język Prolog. Jest zorientowane obiektowo, daje możliwość tworzenia klas, metod, waruków, iteracji… Procedury zawarte w XPCE tworzone są w C. Jest możliwe do uruchomienia w różnych środowiskach pracy. Dane z Prologa mogą być powiązane ze zmiennymi w XPCE. Zaimplementowane jest za pomocą własnej biblioteki VWS (Virtual Window System) która, definiuje metody do tworzenia i manipulacji oknami, prostymi obiektami jak: linie, kółka, tekst oraz obsługi zdarzeń. Dzięki swojej budowie, programy używające XPCE są w pełni przenośne pomiędzy różnymi środowiskami pracy.
d. Konstrukcja grafów ARD (Atribute Relationship Diagram):
Diagram ARD identyfikuje atrybuty systemu i wskazuje na zależności pomiędzy nimi. W ARD występują dwa rodzaje elementów: atrybuty (attributes) i właściwości (properties). Poniżej przedstawiam przykład diagramu ARD dla problemu budowy kontrolera temperatury:
4. Wiadomości wstępne o XPCE:
Jednymi z ważniejszych predykatów wykorzystywania XPCE w Prologu są:
a. Tworzenie obiektów NEW:
new(?Reference, +NewTerm) – tworzy obiekt oraz przypisuje do niego dana referencję, która jest wykorzystywana do komunikacji pomiędzy obiektami.
Przykład:
?- new(@demo, dialog(‘Okno Dialogowe’)). – tworzy okno dialogowe, w którym umieszcza się napisy, przyciski, itp.
b. Modyfikacja stanu obiektów SEND:
send(+Receiver, +Selector(..Argumenty..)). – za pomocą tej komendy dokonuje się zmiany stanu obiektów. Pierwszy argument tego predykatu jest referencją do obiektu, natomiast drugi to term, którego nazwa jako funktor jest nazwą metody do wywołania, a argumenty są argumentami operacji.
Przykład:
?- send (@demo, append(text_item(Nazwa)). – wywołuje metodę append klasy dialog, dodaje komponent do okna dialogowego.
c. Zapytanie do Obiektów GET:
Służy do pobierania informacji o stanie obiektu. Dwa pierwsze argumentu są podobne jak w predykacie SEND, trzeci zwraca wartość.
Przykład:
?- get(@demo, display, D). – zwraca obiekt display, na którym @demo jest wyświetlane.
d. Niszczenie obiektów FREE:
Argumentem jest referencja na obiekt (stworzona przy użyciu NEW i GET). Predykat usuwa obiekt.
Przykład:
?-free(@demo).
5. Projekt:
Jedynym pomysłem na tworzenie diagramów ARD w XPCE, jest ręczne przygotowanie pliku *.pce, który po załadowaniu wyświetli zawarte w nim informacje. Uproszczeniem procesu tworzenia pliku była by prosty edytor. Aby móc przygotować potrzebny plik musimy widzieć jak tworzyć odpowiednie figury, jak je ze sobą łączyć, w jaki sposób możemy mieć na nie wpływ.
a. Tworzenie figur:
arrow - Arrow-head. Normally used implicitly by class line.
bezier - Bezier curve. Both quadratic and cubic Biezer curves are supported.
bitmap - Visualisation of an image. Both monochrome and full-colour images are
supported. Images can have shape.
pixmap - Subclass of bitmap only for coloured images.
box - Rectangle. Can be rounded and filled.
circle - Special case of ellipse.
ellipse - Elliptical shape. May be filled.
arc - Part of an ellipse. Can have arrows. Can show as pie-slice.
line - Straight line segment. Can have arrows.
path - Poly-line through multiple points. Can have arrows. Can be smooth.
text - Visualisation of a string in some font. Can have various attributes, can be
clipped, formatted, etc.
Przykład:
?- send(@p, display,
new(@box, box(100,100))). - kwadrat
b. Łączenie figur:
device - Most generic compound graphical object. The window is a subclass of
device and all graphical operations are defined on class device.
figure - Subclass of device, provides clipping, background, containing rectangle,
border and the possibility to show a subset of the displayed graphical objects.
format - A format object specifies a two-dimensional table layout. Formats may be
associated to graphical devices using ‘device ! format’.
table - The successor of format realises tabular layout compatible to the HTML-3
model for tables.
connection - Subclass of class line. A connection can connect two graphicals
on the same window that have handles. The line is automatically
updated if either of the graphicals is moved, resized, changed
from device, (un)displayed, hidden/exposed or destroyed.
handle - Defines the location, nature and name of a connection point for a
connection. Handles can be attached to individual graphicals as
well as to their class.
link - Defines the generic properties of a connection: the nature (‘kind’)
of the handle at either side and the line attributes (arrows, pen
and colour).
connect - gesture Event-processing object used to connect two
graphical objects.
Przykład:
:- pce_global(@in_out_link, make_in_out_link).
make_in_out_link(L) :-
new(L, link(in, out, line(arrows := second))).
linked_box_demo :-
new(P, picture(’Linked Box demo’)),
send(P, open),
send(P, display, new(B1, box(50,50)), point(20,20)),
send(P, display, new(B2, box(25,25)), point(100,100)),
send(B1, handle, handle(w, h/2, in)),
send(B2, handle, handle(w/2, 0, out)),
send_list([B1, B2], recogniser, new(move_gesture)),
send(B1, connect, B2, @in_out_link).
c. Działanie na figurach:
6. Wnioski:
Pierwsze podejście do stworzenia przykładowego grafu podjąłem w systemie Ubuntu 8.04. Po zainstalowaniu z internetu odpowiednich paczek aplikacja nie odpalała się. Mimo prób uzyskania możliwości pracy z prologiem i XPCE pod Linuxem nie otrzymałem żadnych pozytywnych wyników.
Drugie podejście podjąłem w bardziej znanym mi środowisku jakim jest Windows XP. Aplikacja działa poprawnie.
XPCE nie jest tak proste i przyjazne w użytkowaniu jak może się wydawać na pierwszy rzut oka. Trzeba spędzić dużo czasu zanim się nauczy w nim programować. Jest ono ściśle związane z językiem Prolog.
Materiały
Nalepa, G. J. (2008). UServ Case Study, Conceptual Design with ARD+ Method. Paper presented at the FLAIRS-21: Proceedings of the twenty-first international Florida Artificial Intelligence Research Society conference: 15–17 may 2008, Coconut Grove, Florida, USA, Menlo Park, California.
Nalepa, G. J., & Wojnicki, I. (2008). Towards Formalization of ARD+ Conceptual Design and Refinement Method. Paper presented at the FLAIRS-21: Proceedings of the twenty-first international Florida Artificial Intelligence Research Society conference: 15–17 may 2008, Coconut Grove, Florida, USA, Menlo Park, California.