Article View: pl.comp.objects
Article #15578Re: Hello world w UML... (+ C++)
From: Maciej Sobczak
Date: Wed, 18 Oct 2006 07:01
Date: Wed, 18 Oct 2006 07:01
85 lines
4620 bytes
4620 bytes
Seweryn Habdank-Wojewódzki wrote:
>> UML jest
>> wystarczająco bogaty (i rozszerzalny, chociażby przez stereotypy), żeby
>> pokryć całkiem spory kawałek procesu produkcyjnego.
>
> Hmm... Jakoś nie dotarłem do tak obszernego kursu UML, czy coś
> polecasz?
No nie wiem. Cokolwiek - chociaż i tak ostatecznym ograniczeniem będą
możliwości danego programu rysunkowego. Większość z nich jest raczej
sztywna w tym temacie.
> Kłopot polega na tym jak np. zaznaczyć, żeby genrator stworzył
> pewną ilość
> specjalizacji szablonu w C++.
Dobre pytanie. W ogólym podejściu rozwiązaniem może być komentarz
przyczepiony do szablonu, w formacie rozpoznawanym przez generator
(zakładam, że taki komentarz i jego relacja z szablonem będą zaznaczone
w XMI - jeśli nie, to jest problem).
W wersji najbardziej wypasionej program rysunkowy mógłby umożliwiać
rozszerzenie metamodelu UML - wtedy mogłbyś dodać sobie nowe elementy do
składni UML a z drugiej strony nauczyć generator ich obsługi.
Ale nie słyszałem o takich cudach.
(Oczywiście, nie mam na myśli samodzielnego hackowania open-source'owego
programu UML, tylko rozszerzalność metamodelu przewidzianą przez
projektantów tego programu. :-) )
> A druga sprawa. jak ładnie można pokazać np.: Javowe
>
> class Foo < ? extends Bar >
> {}
>
> To jest relatywnie silny kontrakt. I zapis ten dość mocno wpływa na
> wygląd klasy
> Foo i łączy ją z wyglądem klasy Bar, jaki on by nie był.
> Oczywiście z punktu widzenia
> konwersji UML -> Kod moge poprostu w << >> wpisać << ? extends Bar >>
> i powinien
> mi kod powstać dobry, bo generator powinien po prostu przepisać to co
> jest w << >>. Ale na rysunku jakby coś ginie. Poza wpiszem w << >> nie
> jest odnotowana żadna relacja.
Można to << >> przykleić nie do klasy Foo, ale do relacji pomiędzy Foo i
Bar. Wtedy będzie widać, że jest to cecha relacji a nie cecha jednej klasy.
> Już nie mówię o C++ konstrukcjach typu:
>
> // -- if construct ------------------------------------------------
> // Proposed by Krzysztof Czarnecki and Ulrich Eisenecker
>
> template <bool If, class Then, class Else> struct IF { typedef Then
> RET; };
>
> template <class Then, class Else> struct IF<false, Then, Else> {
> typedef Else RET;
>
> };
>
> Takie kwiatki w kodzie bardzo wiele potrafią zrobić.
A ja bym tego nie modelował w UML tylko raczej potraktował jako element
języka. Obecność czegoś takiego na diagramie kompletnie niczego nie
wnosi, bo ostatecznie struct IF jest tylko narzędziem do wyrażania
relacji pomiędzy tymi typami, które są właściwą domeną dla
analityka/projektanta. Dlatego posłużyłbym się raczej pojęciem IF w
stereotypach albo innych dekoracjach w relacjach pomiędzy tymi
właściwymi typami, zakładając, że IF jest już częścią języka
programowania (dotyczy to wszystkich konstrukcji typu MPL).
Odpowiedni generator potrafiłby taką iluzję stworzyć.
> Tak więc jeśli możesz wskazać na
> jakieś opracowania
> w których podjęte jest wyzwanie narysowania takich konstrukcji jak
> "boost::" to chętnie
> poczytam.
Nie znam żadnych takich opracowań. :-)
--
Maciej Sobczak : http://www.msobczak.com/
Programming : http://www.msobczak.com/prog/
Technical Details
Message-ID:
<eh4jgr$8qq$1@cernne03.cern.ch>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.nask.pl!news.nask.org.pl!newsfeed00.sul.t-online.de!newsfeed01.sul.t-online.de!t-online.de!solnet.ch!solnet.ch!news-zh.switch.ch!switch.ch!cernne03.cern.ch!not-for-mailReferences:
<egatg3$h6n$1@inews.gazeta.pl> <r51ii2pu5ro0ols7918sea327gh82f5h5e@4ax.com> <egb132$sid$1@inews.gazeta.pl> <k72ii2l3guqhpao3ta5eugihjlvr6uc0ec@4ax.com> <egvfml$4nf$1@cernne03.cern.ch> <1160997358.424685.59720@i3g2000cwc.googlegroups.com> <eh03e7$er2$1@cernne03.cern.ch> <1161085812.007187.178150@i3g2000cwc.googlegroups.com>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.nask.pl!news.nask.org.pl!newsfeed00.sul.t-online.de!newsfeed01.sul.t-online.de!t-online.de!solnet.ch!solnet.ch!news-zh.switch.ch!switch.ch!cernne03.cern.ch!not-for-mail From: Maciej Sobczak <no.spam@no.spam.com> Newsgroups: pl.comp.objects Subject: Re: Hello world w UML... (+ C++) Date: Wed, 18 Oct 2006 09:01:46 +0200 Organization: CERN News Lines: 85 Message-ID: <eh4jgr$8qq$1@cernne03.cern.ch> References: <egatg3$h6n$1@inews.gazeta.pl> <r51ii2pu5ro0ols7918sea327gh82f5h5e@4ax.com> <egb132$sid$1@inews.gazeta.pl> <k72ii2l3guqhpao3ta5eugihjlvr6uc0ec@4ax.com> <egvfml$4nf$1@cernne03.cern.ch> <1160997358.424685.59720@i3g2000cwc.googlegroups.com> <eh03e7$er2$1@cernne03.cern.ch> <1161085812.007187.178150@i3g2000cwc.googlegroups.com> NNTP-Posting-Host: abpc10883.cern.ch Mime-Version: 1.0 X-Trace: cernne03.cern.ch 1161154907 9050 137.138.37.241 (18 Oct 2006 07:01:47 GMT) X-Complaints-To: news@@cern.ch NNTP-Posting-Date: Wed, 18 Oct 2006 07:01:47 +0000 (UTC) User-Agent: Thunderbird 1.5.0.7 (X11/20060922) In-Reply-To: <1161085812.007187.178150@i3g2000cwc.googlegroups.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit