2010-01-11 12 views
25

UML jest najczęściej używany do modelowania systemu za pomocą C++. W moich projektach C jest językiem implementacji. Szukam zasobów dotyczących strategii UML, które mają zastosowanie dla C. Chcę używać UML podczas projektowania i reprezentować różne aspekty systemu.UML dla języka programowania C

+1

Moje pytanie nie dotyczy tego, jak można zrobić OOP w C. Do tego mamy wiele metod, takich jak www.state-machine.com/devzone/cplus_3.0_manual.pdf i www.planetpdf.com/codecuts/pdfs/ooc .pdf. Jak wspomniano steven, w C możemy chcieć użyć tylko diagramu sekwencji i diagramu komponentów. Szukam niektórych zasobów, które opisują te strategie. Mam pewne pojęcie, że plik reprezentuje moduł i można go używać zamiast obiektu w diagramie sekwencji. I pokazuję przepływ pomiędzy różnymi modułami za pomocą tej strategii. – Andy

+0

Dzięki za linki, Andy. –

Odpowiedz

29

Nie znam żadnych istniejących zasobów, które omawiają używanie UML specjalnie dla C. Jak wspomnieli inni, UML nie jest agnostykiem językowym.

Należy pamiętać, że w przypadku UML można mieć model dla domeny problemu, a inny dla implementacji. Staraj się nie modelować domeny problemu pod względem C, ale raczej jako OO wysokiego poziomu. Po odpowiednim zrozumieniu domeny problemu można rozpocząć modelowanie implementacji.

do modelowania implementacje proceduralny w stylu C, następujące schematy mogą być użyteczne:

  • schemat Klasa:
    • Pokaż C API
    • relacje Pokaż Moduł C Moduł (głównie Zależności dla nie- OO)
    • Pokazywanie struktur i wyliczeń (przy użyciu < < stereotypu>>)
  • Pakiet schemat: Pokaż zawartość (moduły) bibliotek, a relacje z zależnościami między bibliotekami
  • schemat
  • aktywny: flowchartów algorytmy nietrywialne
  • Sequence Diagram/współpraca: Pokaż, jak wydarzenia/komunikaty między modułami/podmiotów/wejścia/wyjścia pojawiają się w czasie
  • Schemat statechart: Oczywiście dla maszyn państwowych!

Rozszerzając diagramów klas, można „nadużycie” je w następujący sposób dla proceduralny w stylu C:

  • globalne funkcji extern -> metod publicznych
  • lokalne funkcje statyczne -> Metody prywatne
  • Globalne zmienne extern -> członkowie publiczne
  • lokalne zmienne statyczne -> Użytkownicy prywatni
  • elemencie -> klasa z "struct" stereotyp e
  • #define stałe -> klasa z "wyliczenia" stereotypu

doświadczeniu, a znajdziesz swoje własne konwencje za nadużywanie UML.

6

Problem z C polega na tym, że jest to bardziej proceduralny język programowania. Trudniej jest uzyskać drobnoziarnisty projekt za pomocą aplikacji C. Jeśli pracujesz z C, możesz chcieć trzymać się diagramów sekwencji i diagramów komponentów, ponieważ opisują one i przeglądują to, co się dzieje, a nie wykres zależności i interakcji.

+0

C nie jest "funkcjonalnym" językiem programowania. Uważam, że termin, którego szukano, jest "proceduralny". – coobird

+0

Masz rację, myślałem ... funkcje, ale nie klasy = funkcjonalne ... ale według najostrzejszej definicji jest funkcjonalna ... działa: P – monksy

+1

Zgadzam się, że UML nie jest dobrze przystosowany do C , biorąc pod uwagę, że UML pochodzi ze szkoły myśli zorientowanej na obiekt. Ale możesz * zhakować razem minimalną, opartą na relacjach, rozwodnioną konstrukcję obiektową w C używając struktur zawierających wskaźniki funkcji ... chociaż dziedziczenie i polimorfizm nie są tak proste. Tak czy inaczej, UML nie jest tak przydatny w C –

5

Projekt zorientowany obiektowo jest niezależny od języka i można oczywiście zaprojektować system przy użyciu języka UML. Niektóre narzędzia, takie jak Rhapsody, umożliwią także generowanie kodu i rundę w obie strony, używamy w niektórych specjalnych projektach, w których C++ nie wchodzi w grę. Jeśli chcesz napisać swój kod ręcznie, użyj konwencji nazewnictwa, takiej jak Subsystem_Module_Class_Method, aby nazwać twoje funkcje w sposób zorientowany obiektowo i użyj pliku .c dla każdej klasy. Używanie C nie przeszkadza w utrzymaniu czystego projektu.

+0

Nie jest przeszkodą dla czystego projektu ... ale nie będziesz miał poziomu abstrakcji i projektowania komponentów tak jak w przypadku języka OOP. Z tego powodu stworzono OOP. – monksy

+0

OOP można również wykonać w C: GTK jest tego dobrym przykładem. Znacznie wykorzystuje makra, ale syntaktycznie jest całkiem czysty. Zgadzam się, że inne języki integrują go lepiej w swojej składni, a kod wygląda może nieco czystszy, ale z C możesz osiągnąć te same cele. Abstrakcja jest w projekcie, kod po prostu odzwierciedla ją mniej więcej dobrze. – jdehaan

Powiązane problemy