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:2009:miw09_logtalk_umlgraph:prezentacja [2009/06/06 02:40]
jsi08
pl:miw:2009:miw09_logtalk_umlgraph:prezentacja [2019/06/27 15:50] (aktualna)
Linia 188: Linia 188:
 :- end_object. :- end_object.
 </​code>​ </​code>​
 +
 +===== Uzyskiwanie informacji o obiektach. =====
 +
 +  * | ?- instantiates_class(InstanceName,​ ClassName). - Sprawdza czy zachodzi relacja //​instantiates//​. ​
 +  * | ?- specializes_class(ClassName,​ SuperclassName). ​ - Sprawdza czy zachodzi relacja //​specializes//​.
 +  * | ?- extends_object(ObjectName,​ ParentName). ​ - Sprawdza czy zachodzi relacja //​extends//​.
 +  * | ?- imports_category(ObjectName,​ CategoryName). ​ - Sprawdza czy zachodzi relacja //​imports//​.
 +  * | ?- implements_protocol(ObjectName,​ ProtocolName). ​ - Sprawdza czy zachodzi relacja //​implements//​.
 +  * | ?- object_property(ObjectName,​ PropertyName). ​ - Sprawdza czy ObjectName posiada właściwość PropertyName.
 +
 +===== Uzyskiwanie informacji o protokołach. =====
 +
 +  * | ?- extends_protocol(ProtocolName1,​ ProtocolName2). ​ - Sprawdza czy zachodzi relacja //​extends//​.
 +  * | ?- implements_protocol(ObjectOrCategoryName,​ ProtocolName). ​ - Sprawdza czy zachodzi relacja //​implements//​.
 +  * | ?- protocol_property(ProtocolName,​ PropertyName). ​ - Sprawdza czy ProtocolName posiada właściwość PropertyName.
 +
 +
 +===== Uzyskiwanie informacji o kategoriach. =====
 +
 +  * | ?- extends_category(CategoryName1,​ CategoryName2). ​ - Sprawdza czy zachodzi relacja //​extends//​.
 +  * | ?- imports_category(ObjectName,​ CategoryName). ​ - Sprawdza czy zachodzi relacja //​imports//​.
 +  * | ?- implements_category(ObjectName,​ CategoryName). ​ - Sprawdza czy zachodzi relacja //​implements//​.
 +  * | ?- category_property(CategoryName,​ PropertyName). ​ - Sprawdza czy CategoryName posiada właściwość PropertyName.
 +
 +
 +===== Instalacja i uruchamianie programów LogTalk. =====
 +
 +  - Odpowiednie pakiety w zależności od tego na jakim systemie operacyjnym pracujemy pobieramy ze strony: http://​logtalk.org/​download.html
 +  - Uruchomienie LogTalk to po prostu uzgodnienie dwóch plików:
 +
 +<code prolog>
 +:​-consult('/​usr/​share/​logtalk/​configs/​swi'​).
 +:​-consult('/​usr/​share/​logtalk/​compiler/​logtalk'​).
 +</​code>​
 +
 +Kompilowanie plików LogTalk:
 +<code prolog>
 +logtalk_compile([source_file1,​ source_file2,​ ...]).
 +logtalk_load([source_file1,​ source_file2,​ ...]).
 +</​code>​
 +
 +===== Zaproponowane rozwiązanie.=====
 +
 +Obiekt javaobject - zawiera następujące publiczne predykaty:
 +
 +  * //​object_drow/​1//​ - zapisuje obiekty, za pomocą skłądni Java.
 +  * //​category_drow/​1//​ - zapisuje kategorie, za pomocą skłądni Java.
 +  * //​predicate_drow/​1//​ - zapisuje predykaty, za pomocą skłądni Java.
 +
 +Obiekt javacomment - zawiera następujące publiczne predykaty:
 +
 +  * //​setComment/​1//​ - przyjmuje listę stringów. Stosuje się go do umieszczenia dodatkowych definicji opisującymi tworzone diagramy.
 +  * //​setAsUMLMainComment/​0//​ - ustawia zasięg komentarza dla całego diagramu.
 +
 +===== Zaproponowane rozwiązanie.=====
 +
 +Obiekt javaobject - zawiera następujące publiczne predykaty:
 +
 +  * //​object_drow/​1//​ - zapisuje obiekty, za pomocą skłądni Java.
 +  * //​category_drow/​1//​ - zapisuje kategorie, za pomocą skłądni Java.
 +  * //​predicate_drow/​1//​ - zapisuje predykaty, za pomocą skłądni Java.
 +
 +Obiekt javacomment - zawiera następujące publiczne predykaty:
 +
 +  * //​setComment/​1//​ - przyjmuje listę stringów. Stosuje się go do umieszczenia dodatkowych definicji opisującymi tworzone diagramy.
 +  * //​setAsUMLMainComment/​0//​ - ustawia zasięg komentarza dla całego diagramu.
 +
 +===== Zaproponowane rozwiązanie.=====
 +
 +Obiekt mainobject - zawiera następujące publiczne predykaty:
 +
 +  * //​mainFunction/​0//​ - ten predykat należny zdefiniować samemu. Zawiera on definicję diagramu. Opisujemy tutaj elementy, które chcemy rysować na diagramie za pomocą //​javaobject//,​ dodając komentarze opisujące diagram za pomocą //​javacomment//​.
 +
 +Plik drow.pl:
 +
 +  * //drow/0// - predykat ładuje wybrany plik LogTalk i zapisuje go do pliku. ​
 +
 +
 +Obiekty w pliku drowobject.lgt.
 +
 +  * plik służy do zademonstrowania przykładu działania prezentowanego rozwiązania.
 +
 +
 +===== Zaproponowane rozwiązanie.=====
 +
 +Skrypt umlgraph gdzie:
 +
 +  * ${1} oznacza nazwę kompilowanego pliku prologa.
 +  * ${2} oznacza nazwę wywoływanego predykatu.
 +  * ${3} oznacza format w jakim zostanie zapisany diagram. ​
 +
 +Za pomocą poniższej komendy dostajemy plik .java i diagram drow.png
 +
 +<code prolog>
 +./umlgraph drow drow png
 +</​code>​
 +
 +
 +===== Diagram drow.png =====
 +
 +{{:​pl:​miw:​2009:​miw09_logtalk_umlgraph:​drow.png|}}
 +
 +
 +===== Ograniczenia i problemy.=====
 +
 +  * Ograniczenia UmlGraph - interpretuje tylko Javę
 +  * Problem z inną semantyką LogTalk i JAVA - brak kategorii w Javie
 +  * Brak typów w LogTalk - konieczność dodania sztucznych typów.
 +  * Brak możliwości dostępu do predykatów prywatnych - nie można ich pokazać na diagramie.
 +
 +
 +===== Materiały =====
 +
 +
 +  * [[http://​www.umlgraph.org/​ | UMLgraph - główna strona projektu ]]
 +  * [[http://​www.umlgraph.org/​doc/​index.html| Tworzenie diagramów UML za pomocą UMLgraph - tutorial ]]
 +  * [[http://​www.umlgraph.org/​download.html| UMLgraph - download]]
 +
 +----
 +
 +
 +  * [[http://​logtalk.org/​ | LogTalk - główna strona projektu ]]
 +  * [[http://​blog.logtalk.org//​ | LogTalk - blog ]]
 +  * [[http://​logtalk.org/​manuals/​userman/​index.html|User Manual]]
pl/miw/2009/miw09_logtalk_umlgraph/prezentacja.1244248802.txt.gz · ostatnio zmienione: 2019/06/27 15:57 (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