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) |
:- 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]] |