1

Dienstag, 11. Januar 2011, 18:09

C++ Quelltext in UML umwandeln

Hallo,

kennt jemand ein Tool was aus C++ (*.cpp und *.h) UML Klassendiagramme generiert, also auch mit struct usw.?
Das Tool Umbrello was ich z.B. hab kann ich die sachen zwar importieren nur steigt die Prozessorauslastung auf 100% an und es wird kein UML dargestellt nur ein graues Fenster, daher frage ich euch ob ihr so ein Tool gesehen habt was dies kann. ArgoUML habe ich z.B. auch bereits probiert nur der Importiert Funktioniert nicht und wirft eine Exception, das die Datei nicht gefunden werden kann.

mfg -DK-

2

Mittwoch, 12. Januar 2011, 09:36

ich kenn noch dia aber das kann nur exportieren ... für welches system hättest dus gern? (windows or linux?)
ich hätt ja ideen was man da machen könnt, hab nur keine ahnung wie man pngs oder so generiert ... vllt mach ich dir was in ruby :/
Realität ist nur eine subjektive Wahrnehmungsstörung.

Alles ist wahr, wenn man für wahr einen bestimmten Wert annimmt.

Evrey

Oberschurke im Ruhestand

Motto: "Satzzeichen sind keine Rudeltiere." - Chesra

  • Nachricht senden

3

Mittwoch, 12. Januar 2011, 17:14

Ich kann zwar keine Lösung geben, da ich UML wenn, dann per Hand für mich selbst kritzel und da eh' nur das Nötigste d'rin steht, aber ich kann Hanmac um Wissen bereichern:
Spoiler: Windoof Bitmap

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
def complement(n) # 4-byte-String als Binär-Zahl: Little Endian
  n = n.unpack("ss").map() {|n| (~n)%65536}
  if (n[0]==65535) then n[1]+=1 end
  n[0]+=1
  n = n.pack("ss")
  return(n)
end # eof complement
 
module Head
  TYPE = "BM"
  SIZE = 0.chr()*4 # Platzhalter! Dateigröße
  RESV = 0.chr()*4 # Nichts
  OFFS = 0.chr()*4 # Platzhalter! Bild-Offset
end # eof Head
 
module Info
  module InfoHead
    SIZE = 40.chr()+0.chr()*3 # Größe des InfoHeads
    WIDT = 0.chr()*4          # Platzhalter! Breite des Bitmaps
    HEIG = 0.chr()*4          # Platzhalter! Höhe des Bitmaps
    PLAN = 1.chr()+0.chr()    # Ein Relikt
    BITC = 24.chr()+0.chr()   # 24b-Bitmap RGB
    CMPR = 0.chr()*4          # Kompressionsfrei, da 24b
    SIMG = 0.chr()*4          # Bei 24b nicht nötig
    XPPM = 0.chr()*4          # Nicht nötig
    YPPM = 0.chr()*4          # Nicht nötig
    CLUS = 0.chr()*4          # Keine Farbtabelle, also 0
    CLIM = 0.chr()*4          # Keine Farbtabelle, also 0
  end # eof InfoHead
  module Image # für 24b-Bitmap
    def self.make_image_data(arr) # [[B,G,R],[B,G,R],...]
      str = ""
      arr.each() {|c| str += c.pack("ccc")}
      return(str)
    end # eof make_image_data
  end # eof Image
end # eof Info
 
def make_my_bitmap(arr,w,h,dir) # [[B,G,R],[B,G,R],...]
  str = Head::TYPE
  dat = Info::Image.make_image_data(arr)
  siz = dat.size()
  str+= [dat&0xFFFF,(dat>>16)&0xFFFF].pack("ss") # Head::SIZE
  str+= Head::RESV
  str+= 54.chr()+0.chr()*3 # Head::OFFS; Da keine Zusatzdaten bestehen, beginnt das Bild ab dem 54. Byte
  str+= complement(Info::InfoHead::SIZE)
  str+= complement([w&0xFFFF,(w>>16)&0xFFFF].pack("ss")) # Info::InfoHead::WIDT
  str+= complement([h&0xFFFF,(h>>16)&0xFFFF].pack("ss")) # Info::InfoHead::HEIG
  str+= Info::InfoHead::PLAN
  str+= Info::InfoHead::BITC
  str+= Info::InfoHead::CMPR
  str+= Info::InfoHead::SIMG
  str+= complement(Info::InfoHead::XPPM)
  str+= complement(Info::InfoHead::YPPM)
  str+= Info::InfoHead::CLUS
  str+= Info::InfoHead::CLIM
  str+= dat # Unsere Bilddaten!
  File.open(dir,"wb") {|f| f.write(str)}
  return(str)
end # eof make_my_bitmap
 
# Test:
data   = [[0,0,196],[0,196,0],[196,0,0],[196,196,196]]
width  = 2
height = 2
path   = "./my_test.bmp"
make_my_bitmap(data,width,height,path)
zum Lesen den Text mit der Maus markieren
Es kann sein, dass ich mich mit Little Endian irgendwo vertan habe, da ich eher Bit Endian vor ziehe, aber nun gut. Das Prinzip sollte damit gut erklärt sein, da ich mir Mühe gab, jeden einzelnen Bestandteil getrennt ein zu bauen. Bloß in einem Punkt bin ich mir unsicher, und da wirst du selbst austesten müssen: Der Aufbau des Arrays. Ich bin mir nicht sicher, ob gilt id=x+y*width oder y+x*height; beides ist möglich! Du wirst es ja spätestens beim Testen merken ;3
  • :medal: Werbung

    Bild

    Cpp Quellcode

    1
    
    #define TRUE FALSE //Happy debugging suckers
    (Einfach nur wundervoll.)
  • :palette: 1plus3 :cake:

    Bild
  • :fires: Nuuuhminaaah

    Bild
  • :medal: compétences

    mes compétences
    :heart_full: :heart_full: :heart_full: :heart_full: :heart_full: max.
    :ruler-triangle: Maps machen :heart_full: :heart-empty: :heart-empty: :heart-empty: :heart-empty:
    :media-player: Musik machen :heart_full: :heart-half: :heart-empty: :heart-empty: :heart-empty:
    :cup: Scripts machen :heart_full: :heart_full: :heart_full: :heart_full: :heart-break:
    :paper: Story ausdenken :heart_full: :heart_full: :heart_full: :heart-empty: :heart-empty:
    :cut: Pixeln und so :heart-empty: :heart-empty: :heart-empty: :heart-empty: :heart-empty:
    :game: Events proggen :heart_full: :heart_full: :heart_full: :heart_full: :heart_full:
    (Dieser Tab ist rein satirisch.)
  • :folder-open: mes projets

    • :addressbook: Silentium
      :book: Name: Silentium
      :rmxp: Maker: Eigenbau (C++, x86-SSE/AVX-Assembly, Ruby/Lua)

      :paper: Story
      :game: NPCs
      :cup: Scripts
      :drill: Ressis
      :ruler-triangle: Maps
      :compile: Gesamt
      (3+4)% 42 69% 0815 -17.438 103.38% ± 6.3mm²

      (Die Tabelle erfüllt lediglich satirische Zwecke.)
    • :compile: Onyx
      Eine in C++ implementierte, modulare, plattformunabhängige, virtuelle Maschine. Die Test-Version ist bereits halb fertig. Ab dann gibt es vielleicht mehr Infos. Sie soll die auf dem ersten Blick LISP-artige und eigens dafür konstruierte Sprache Obsidian ausführen können. Experimentell wird auch ein Lua-Compiler für Onyx gebaut. Ziel ist eine leistungsfähige, virtuelle Maschine für beliebige Scriptsprachen. Theoretisch gesehen müsste man bloß noch einen kompatiblen Compiler schreiben, der Quellcode jener Sprache in Onyx-Assembly, oder direkt in Onyx-Bytecode übersetzt. Ob die jemand nutzen wird, ist eine andere Frage und nur ein sekundäres... nein, eher tertiäres Ziel dieser VM. Primär dient es mir lediglich dazu, mein Verständnis von Hardware, ISA, und Assembly zu vertiefen, sowie eigene Grenzen auszutesten.

      :exclamation: Warnung!
      Das Entwickeln einer virtuellen Maschine oder Programmiersprache (im wahnsinnigsten Fall beides) ist eine höchst komplizierte Tätigkeit, aus der viel Frust und Hirnmatsche hervor gehen. Sollte sich dennoch ein ähnlich wahnsinniger finden, der sowas zusammen schustern will, so lege ich ihm/ihr die folgenden Bücher ans Herz:
      • Compiler - Das Drachenbuch [978-3-8273-7097-6]
        Dieses Buch schlachtet ausführlich und leicht verständlich die Grundlagen bis hoch zu den Experten-Techniken des Compilerbaus aus. Es fängt mit der Automaten-Theorie und formalen Sprachen an, arbeitet sich durch Analysetechniken vor, und landet schließlich bei Techniken wie Optimierung und Register-Zuweisung. Das Buch wiegt 3Kg oder 4Kg. Hab's mal gewogen. Ist also nicht gerade die Lektüre für unterwegs.

      • Computerarchitektur [3-8273-7016-7]
        Hier werden leicht verständlich die wichtigsten Entwicklungen der Rechnerarchitekturen erklärt (Gut, das Buch ist in die Jahre gekommen, aber der Weg zu heute ist ein winziger Schritt, den man sich nach diesem Buch selbst erdenken kann). Hauptbestandteil des Buchs ist eine relativ umfassende Betrachtung der Funktionsweise dreier gänzlich unterschiedlicher, aber dominierender Prozessor-Typen am Beispiel des Pentium II, UltraSPARC II, sowie picoJava. Die meisten Elemente dieses Buchs sind zwar für die Konstruktion einer virtuellen Maschine irrelevant, oder aufgrund der Tatsache, dass die VM Software ist und z.B. Byte-Grenzen hat, sogar zu Leistungseinbußen führen kann, doch ist ein hinreichendes Verständnis dieser Maschinen, mit denen wir arbeiten, äußerst hilfreich für die Überlegungen, wie die VM arbeiten soll.

      Es kann sehr hilfreich und inspirierend sein, den Code quelloffener, virtueller Maschinen anderer Sprachen zu überfliegen. Meine Lieblings-Quelle war und ist stets die VM von Lua. Sie ist schlank, verständlich, in C implementiert, und basiert im Gegensatz zu vielen anderen Scriptsprachen-VMs auf einer Register-Maschine statt einer Stapelmaschine. Es wäre natürlich vorteilhaft, die entsprechende Sprache zu verstehen, in der man auch die eigene VM implementieren will. Weiterhin ist es äußerst vorteilhaft, eine leistungsstarke und bequeme Sprache wie C++ zu beherrschen, um die VM zu implementieren. Und bevor irgendwer auf die Idee kommt: Assembly ist NICHT als dominierende Sprache für den Bau einer VM geeignet. Wer die Frage des "Warum?" nicht beantworten kann, sollte zunächst die gewählte Sprache und Assembly hinreichend verstehen lernen, und es dann erneut mit der Frage versuchen. Es lohnt sich dennoch, Assembly zu lernen. Allein schon, um erneut das Verständnis zu vertiefen, zumal ihr mehr oder weniger gezwungen seid, auch für eure VM eine Assembler-Sprache zu entwickeln (Außer natürlich ihr schreibt eure Test-Programme Bit für Bit ;3).
  • :locale: enfin

    Je ne peux pas parler français.
    C'est tout ce que Goodle et les restes de cours de français.
Signaturstand: 24.07.2013

4

Mittwoch, 12. Januar 2011, 17:46

Hallo, danke für die Anfrage, aber ich benötigte diese Wirklich als UML. Da ich diese noch bearbeiten müsste sowie müssen Vererbung usw. enthalten sein.
Naja wenn es nichts gibt muss ich dann wohl oder übel selbst ein Klassendiagramm zusammen bauen.

dennoch danke

StorMeye

Rekrut

Motto: Die Kunst ist, vor lauter Pixel nicht das große Ganze aus den Augen zu verlieren.

  • Nachricht senden

5

Mittwoch, 12. Januar 2011, 20:37

Hi,

ich weiß nicht, was für ein Tool Du zum Programmieren benutzt. Für das Visual Studio gibt es jedenfalls eine Funktion, mit der man automatisch Klassendiagramme in Visio erstellen kann. Allerdings braucht man natürlich das Visual Studio und Visio selbst dazu, könnte insgesamt also ziemlich teuer werden...

Grüße, StorMeye

Evrey

Oberschurke im Ruhestand

Motto: "Satzzeichen sind keine Rudeltiere." - Chesra

  • Nachricht senden

6

Mittwoch, 12. Januar 2011, 20:58

So weit ich weiß, ist DK ein Tux-Anhänger, wird schwierig mit Visual Studio^^"
Mir ist spontan eingefallen, dasses ein UML-Plugin (und eins für C++) für Eclipse gibt, aber ich glaub', dasses 'n bissl was kostet. Ist ein Trauma, das ich verdrängte, weil wir damit paar mal graphisch programmieren MUSSTEN -.-
  • :medal: Werbung

    Bild

    Cpp Quellcode

    1
    
    #define TRUE FALSE //Happy debugging suckers
    (Einfach nur wundervoll.)
  • :palette: 1plus3 :cake:

    Bild
  • :fires: Nuuuhminaaah

    Bild
  • :medal: compétences

    mes compétences
    :heart_full: :heart_full: :heart_full: :heart_full: :heart_full: max.
    :ruler-triangle: Maps machen :heart_full: :heart-empty: :heart-empty: :heart-empty: :heart-empty:
    :media-player: Musik machen :heart_full: :heart-half: :heart-empty: :heart-empty: :heart-empty:
    :cup: Scripts machen :heart_full: :heart_full: :heart_full: :heart_full: :heart-break:
    :paper: Story ausdenken :heart_full: :heart_full: :heart_full: :heart-empty: :heart-empty:
    :cut: Pixeln und so :heart-empty: :heart-empty: :heart-empty: :heart-empty: :heart-empty:
    :game: Events proggen :heart_full: :heart_full: :heart_full: :heart_full: :heart_full:
    (Dieser Tab ist rein satirisch.)
  • :folder-open: mes projets

    • :addressbook: Silentium
      :book: Name: Silentium
      :rmxp: Maker: Eigenbau (C++, x86-SSE/AVX-Assembly, Ruby/Lua)

      :paper: Story
      :game: NPCs
      :cup: Scripts
      :drill: Ressis
      :ruler-triangle: Maps
      :compile: Gesamt
      (3+4)% 42 69% 0815 -17.438 103.38% ± 6.3mm²

      (Die Tabelle erfüllt lediglich satirische Zwecke.)
    • :compile: Onyx
      Eine in C++ implementierte, modulare, plattformunabhängige, virtuelle Maschine. Die Test-Version ist bereits halb fertig. Ab dann gibt es vielleicht mehr Infos. Sie soll die auf dem ersten Blick LISP-artige und eigens dafür konstruierte Sprache Obsidian ausführen können. Experimentell wird auch ein Lua-Compiler für Onyx gebaut. Ziel ist eine leistungsfähige, virtuelle Maschine für beliebige Scriptsprachen. Theoretisch gesehen müsste man bloß noch einen kompatiblen Compiler schreiben, der Quellcode jener Sprache in Onyx-Assembly, oder direkt in Onyx-Bytecode übersetzt. Ob die jemand nutzen wird, ist eine andere Frage und nur ein sekundäres... nein, eher tertiäres Ziel dieser VM. Primär dient es mir lediglich dazu, mein Verständnis von Hardware, ISA, und Assembly zu vertiefen, sowie eigene Grenzen auszutesten.

      :exclamation: Warnung!
      Das Entwickeln einer virtuellen Maschine oder Programmiersprache (im wahnsinnigsten Fall beides) ist eine höchst komplizierte Tätigkeit, aus der viel Frust und Hirnmatsche hervor gehen. Sollte sich dennoch ein ähnlich wahnsinniger finden, der sowas zusammen schustern will, so lege ich ihm/ihr die folgenden Bücher ans Herz:
      • Compiler - Das Drachenbuch [978-3-8273-7097-6]
        Dieses Buch schlachtet ausführlich und leicht verständlich die Grundlagen bis hoch zu den Experten-Techniken des Compilerbaus aus. Es fängt mit der Automaten-Theorie und formalen Sprachen an, arbeitet sich durch Analysetechniken vor, und landet schließlich bei Techniken wie Optimierung und Register-Zuweisung. Das Buch wiegt 3Kg oder 4Kg. Hab's mal gewogen. Ist also nicht gerade die Lektüre für unterwegs.

      • Computerarchitektur [3-8273-7016-7]
        Hier werden leicht verständlich die wichtigsten Entwicklungen der Rechnerarchitekturen erklärt (Gut, das Buch ist in die Jahre gekommen, aber der Weg zu heute ist ein winziger Schritt, den man sich nach diesem Buch selbst erdenken kann). Hauptbestandteil des Buchs ist eine relativ umfassende Betrachtung der Funktionsweise dreier gänzlich unterschiedlicher, aber dominierender Prozessor-Typen am Beispiel des Pentium II, UltraSPARC II, sowie picoJava. Die meisten Elemente dieses Buchs sind zwar für die Konstruktion einer virtuellen Maschine irrelevant, oder aufgrund der Tatsache, dass die VM Software ist und z.B. Byte-Grenzen hat, sogar zu Leistungseinbußen führen kann, doch ist ein hinreichendes Verständnis dieser Maschinen, mit denen wir arbeiten, äußerst hilfreich für die Überlegungen, wie die VM arbeiten soll.

      Es kann sehr hilfreich und inspirierend sein, den Code quelloffener, virtueller Maschinen anderer Sprachen zu überfliegen. Meine Lieblings-Quelle war und ist stets die VM von Lua. Sie ist schlank, verständlich, in C implementiert, und basiert im Gegensatz zu vielen anderen Scriptsprachen-VMs auf einer Register-Maschine statt einer Stapelmaschine. Es wäre natürlich vorteilhaft, die entsprechende Sprache zu verstehen, in der man auch die eigene VM implementieren will. Weiterhin ist es äußerst vorteilhaft, eine leistungsstarke und bequeme Sprache wie C++ zu beherrschen, um die VM zu implementieren. Und bevor irgendwer auf die Idee kommt: Assembly ist NICHT als dominierende Sprache für den Bau einer VM geeignet. Wer die Frage des "Warum?" nicht beantworten kann, sollte zunächst die gewählte Sprache und Assembly hinreichend verstehen lernen, und es dann erneut mit der Frage versuchen. Es lohnt sich dennoch, Assembly zu lernen. Allein schon, um erneut das Verständnis zu vertiefen, zumal ihr mehr oder weniger gezwungen seid, auch für eure VM eine Assembler-Sprache zu entwickeln (Außer natürlich ihr schreibt eure Test-Programme Bit für Bit ;3).
  • :locale: enfin

    Je ne peux pas parler français.
    C'est tout ce que Goodle et les restes de cours de français.
Signaturstand: 24.07.2013

7

Donnerstag, 13. Januar 2011, 19:28

Hallo,

das Betriebssystem ist egal, ich habe alles in VirtualBox laufen XD

OKay ich schau mal ob ich eine Express Version von Visio finde.

danke für eure Hilfe

8

Freitag, 14. Januar 2011, 07:07

du kannst mir ja nochmal zeigen wie du dir das uml vorstellst ... so wie bei dia?

ich versuch mal die passende ruby zeichen lib zu finden
Realität ist nur eine subjektive Wahrnehmungsstörung.

Alles ist wahr, wenn man für wahr einen bestimmten Wert annimmt.

epic

Gesperrter Nutzer

  • »epic« wurde gesperrt

Motto: Minnesang-prolet

  • Nachricht senden

9

Dienstag, 18. Januar 2011, 07:07

bouml vielleicht.

http://bouml.free.fr/

Ähnliche Themen

Social Bookmarks