Ankündigung

Einklappen
Keine Ankündigung bisher.

Implementation von UML-Diagrammen

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Implementation von UML-Diagrammen

    Hallo zusammen. ^^

    Ein Bekannter von mir lernt grade beim Studium UML-Diagramme zu machen, ich habe das mitbekommen und mir das auch Mal ein wenig angeguckt, aber irgendwie sind mir ein Paar Fragen gekommen, die mir bisher niemand wirklich beantworten konnte. Vielleicht gibt's ja hier jemanden, der sich auskennt...

    Habe mal im Internet als Beispiel dieses UML-Diagramm gefunden, dass dem, was mein Bekannter da veranstaltet recht ähnlich sieht:
    Klicke auf die Grafik für eine vergrößerte Ansicht

Name: klassen-diagramm-beherbergung.jpg
Ansichten: 1
Größe: 25,2 KB
ID: 4290800
    Meine erste Frage ist eine einfache Zeichenfrage: Sehe ich das richtig, dass z.B. eine Belegung genau ein Zimmer haben kann, ein Zimmer aber 0 oder mehr Belegungen haben kann? Eine Belegung müsste dann ja 1 oder mehr Gäste haben und ein Gast kann nur 0 oder 1 Belegungen haben.

    Worum es mir aber eigentlich geht ist die Implementation:
    Woher weiß z.B. meine Klasse Zimmer wie viele Belegungen es gibt? Müsste da nicht eigentlich noch eine Variable für die Anzahl Belegungen sein? Oder falls man nicht mit Zahlen, sondern mit Namen vorgeht, müsste es dann nicht in Zimmer eine Liste aller Instanzen von Belegung geben?
    Und nehmen wir Mal an man schreibt ein Programm, was dieses Hotel, oder was das im Beispiel sein soll, managt. Also sagen wir man macht dann ein Programm mit den Klassen wie sie im UML Diagramm sind plus eine Klasse für das Interface. Wie müsste ich dann diese Interface-Klasse mit dem allen verbinden, damit ich da sinnvolle Sachen rausbekomme?
    Wenn ich zum Beispiel mein Interface mit Gast und Zimmer verbinde, aber nicht mit Belegung, dann könnte ich ja eine Liste der Gäste und eine Liste der Zimmer anzeigen lassen und die Verfügbarkeit der Zimmer abrufen. Wenn ich aber dann auch noch die Belegung abrufen will, könnte ich dann z.B. in der Klasse Zimmer eine weitere Funktion machen "BelegungAbrufen()", die mir dann die Belegung ausgibt? Und überhaupt, müsste es nicht z.B. in der Klasse Gast eine Funktion geben, mit der man Name und Raucher setzen und abrufen kann??
    Oder werden diese Sachen alle in UML einfach als gegeben hingenommen??

  • #2
    Zitat von Robater Beitrag anzeigen
    Meine erste Frage ist eine einfache Zeichenfrage: Sehe ich das richtig, dass z.B. eine Belegung genau ein Zimmer haben kann, ein Zimmer aber 0 oder mehr Belegungen haben kann? Eine Belegung müsste dann ja 1 oder mehr Gäste haben und ein Gast kann nur 0 oder 1 Belegungen haben.
    Genau so.

    Zitat von Robater Beitrag anzeigen
    Worum es mir aber eigentlich geht ist die Implementation:
    Woher weiß z.B. meine Klasse Zimmer wie viele Belegungen es gibt? Müsste da nicht eigentlich noch eine Variable für die Anzahl Belegungen sein? Oder falls man nicht mit Zahlen, sondern mit Namen vorgeht, müsste es dann nicht in Zimmer eine Liste aller Instanzen von Belegung geben
    [...]
    Oder werden diese Sachen alle in UML einfach als gegeben hingenommen??
    Es klingt danach als würdest du wissen wollen, warum die Funktionalitäten wie du sie erwähnt hast dort in deinem Beispiel-Diagramm nicht aufgeführt sind. Dazu erstmal etwas Grundsätzliches:
    UML ist nur ein Werkzeug. Es gibt zig völlig verschiedene Arten von UML-Diagrammen, und wie und wofür jemand ein UML-Diagramm erzeugt ist vollkommen frei. Es muss nicht einmal dazu gedacht sein daraus direkt Code erzeugen zu können, es könnte auch einfach den Aufbau einer Datenbank darstellen, oder auch welche Schritte notwendig sind, damit Karlchen Müller sich morgens das perfekte Müsli zusammen mixen kann. Oder man baut daraus auch einfach nur bunte Bildchen, weil einem grad langweilig ist.

    Was ich damit sagen will: UML stellt nur das dar, was der Anwender davon gerade darstellen wollte, nicht mehr und nicht weniger. Wenn das Diagramm den Zweck verfolgt, den detaillierten Aufbau einer Hotel-Management-Software darzustellen, mit allen zu implementierenden Schnittstellen, dann, ja, dann müssen diese natürlich auch vollständig mit hinein.
    ABER: Je nachdem wie es verwendet werden soll reichen die "Verbindungslinien" mit den Mengen-Qualifikatoren jedoch aus um anzuzeigen, dass es in den entsprechenden Klassen auch die entsprechenden Schnittstellen (bzw. Variablen) geben soll. Also hier z.B. dass man über eine Schnittstelle die Belegungen eines Zimmers abrufen kann, sowie umgekehrt auch das Zimmer, das einer Belegung zugeordnet ist. Wie genau das dann umgesetzt ist, ist jedoch nicht mehr Sache des UML-Diagrammes.

    Es gibt Codegeneratoren, welche die Klassenstrukturen (z.B. in Java) auf Basis eines UML-Diagrammes automatisch erzeugen. Auf Basis des Beispiel-Diagrammes hätte dann das "Zimmer" automatisch eine Liste mit "Belegungen", und eine Belegung automatisch eine zusätzliche Eigenschaft namens "Zimmer", eine Liste mit Gästen und einen "GastAnmelder". Letzterer hätte automatisch eine Liste seiner von ihm gezeichneten "Belegungen". Usw., usf.

    Da diese Informationen alle in dem Diagramm enthalten sind (dafür sind die Verbindungen ja u.a. da), braucht man die entsprechenden Listen und Eigenschaften natürlich nicht alle noch mal extra als Eigenschaften angeben. Wobei das auch möglich wäre, nur je nach Anwendungsgebiet vllt. etwas unüblich und eben redundant.

    Kommentar


    • #3
      Zitat von Kelshan Beitrag anzeigen
      UML stellt nur das dar, was der Anwender davon gerade darstellen wollte, nicht mehr und nicht weniger. Wenn das Diagramm den Zweck verfolgt, den detaillierten Aufbau einer Hotel-Management-Software darzustellen, mit allen zu implementierenden Schnittstellen, dann, ja, dann müssen diese natürlich auch vollständig mit hinein.
      Ja ok, macht schon Sinn. Ich habe mir schon gedacht, dass sowas halt einfach als gegeben hingenommen wird. Nur der, der das für die Uni braucht hatte mich halt gefragt, ob man das jetzt genau so in ein Programm übernehmen kann und ich war mir halt nicht sicher, was ich darauf antworten soll, weil theoretisch ist es ja da nicht ganz komplett. ^^

      Zitat von Kelshan Beitrag anzeigen
      Es gibt Codegeneratoren, welche die Klassenstrukturen (z.B. in Java) auf Basis eines UML-Diagrammes automatisch erzeugen.
      Ich finde, dass gerade wenn man Leuten programmieren beibringen will, solche Sachen wegzulassen bzw. als gegeben hinzunehmen nicht der richtige weg ist. Wenn ich nichts gesagt hätte, wäre der, der es lernt niemals auf die Idee gekommen, dass sowas eventuell nötig sein könnte.

      Zitat von Kelshan Beitrag anzeigen
      Da diese Informationen alle in dem Diagramm enthalten sind (dafür sind die Verbindungen ja u.a. da), braucht man die entsprechenden Listen und Eigenschaften natürlich nicht alle noch mal extra als Eigenschaften angeben. Wobei das auch möglich wäre, nur je nach Anwendungsgebiet vllt. etwas unüblich und eben redundant.
      Zum Teil wäre es bestimmt redundant, aber es wäre ja zumindest eindeutig. ^^ Ich kann mir jedenfalls auch Implementationen von meinem Beispiel vorstellen, wo man nicht das alles braucht, was da von Java selbst erstellt wird.
      Aber wie du schon gesagt hast, ist UML ja nur ein Werkzeug, Muss ja also eigentlich jeder selbst wissen, was er damit anfängt.

      Kommentar

      Lädt...
      X