Polymorphie als UML

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Polymorphie als UML

    Hallo Jungs und Mädels,

    ich (bzw. mein Sohn) bräuchte einmal Eure Hilfe:

    Objekt-orientierte Programmierung habe ich mir - als alter prozeduraler Programmierer - selber beigebracht und komme auch ganz gut klar. Nun kommt mein Sohn im Rahmen seines Studiums mit der Frage, wie man Polymorphie durch ein UML-Diagramm darstellen würde ... und ich habe keine Ahnung ?(

    Das Prinzip der Polymorphie ist ihm klar, auch ein Beispiel in Code, aber bei der Darstellung im UML-Diagramm ist unklar, wie die Unterscheidung zur normalen Vererbung dargestellt wird. Leider wirft Tante Google auch keine hilfreichen Ergebnisse aus (bzw. diese sind schwer zu identifizieren).

    Hat eine(r) von Euch ein gute Quelle für eine beispielhafte Darstellung?

    Sonnige Grüße, Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • Was meinst du mit Polymorphie? Der Bedeutung des Begriffs in der Programmierung ist nämlich selber polymorph.

    Das Gleiche gilt übrigens auch für die UML.

    Wenn dein Sohn Code-Beispiele geben kann, dann sollte er die mal mit seinen UML-Mitteln ausdrücken. Der Wikipedia-Artikel gibt da schon einen Hinweis. Vielleicht zuerst aber noch mal Begriffe klar machen.
    „Meine Komplikation hatte eine Komplikation.“
  • Wow ... es geht doch nicht über eindeutige Bezeichnungen :S

    Wenn ich es recht verstehe, geht es ihm um die im Artikel genannte "parametrische Polymorphie". Zur Verdeutlichung hier ein kurzer Beispiel-Code (sorry, in Java):

    Java-Quellcode

    1. abstract class Fortbewegungsmittel{
    2. public abstract void fortbewegen();
    3. }
    4. class Flugzeug extends Fortbewegungsmittel{
    5. public void fortbewegen(){
    6. System.out.println("Antrieb: Propeller");
    7. }
    8. }
    9. class Auto extends Fortbewegungsmittel{
    10. public void fortbewegen(){
    11. System.out.println("Antrieb: Benzinmotor");
    12. }
    13. }
    14. class Pferd extends Fortbewegungsmittel{
    15. public void fortbewegen(){
    16. System.out.println("Antrieb: Muskelkraft");
    17. }
    18. }
    19. public class Polymorphie {
    20. public static void fortbewegen(Fortbewegungsmittel f){
    21. f.fortbewegen();
    22. }
    23. public static void main(String[] args){
    24. Flugzeug f = new Flugzeug();
    25. Auto a = new Auto();
    26. Pferd p = new Pferd();
    27. fortbewegen(f);
    28. fortbewegen(a);
    29. fortbewegen(p);
    30. }
    31. }
    Alles anzeigen
    In einem "einfachen" UML-Diagramm sähe es so aus, als wären Flugzeug, Auto und Pferd nur Vererbungen von Fortbewegungsmittel. Wie würde man die Verwendung von Polymorphie kenntlich machen?

    Sorry, mir ist aus zwei Gründen etwas unwohl: (1.) Versuche ich etwas zu erfragen, das ich - mangels Wissen - kaum formulieren kann. (2.) Mißbrauche ich hier unser Entwicklerforum, weil mir eine andere Ansprechstelle fehlt. Sagt Bescheid, wenn Euch das ein oder andere zu doll nervt, bevor mir ein Moderator auf's Dach steigt :D

    Grüße, Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • Das ist keine parametrische Polymorphie (Templates, Generics), sondern das Überschreiben einer Methode. Das lässt sich meines Wissens doch prima in einem Klassendiagramm darstellen. Die Polymorphie in deinem Beispiel ist ja eben nicht die Verebung von Fahrzeug sondern dass beispielsweise Pferd eine Methode besitzt, die genauso heißt und die gleiche Signatur hat, wie eine Methode in Fahrzeug.

    Polymorphie = zwei Dinge haben den gleichen Namen, tun aber etwas Unterschiedliches.

    Den einzigen Missbrauch, den ich übrigens hier erkennen kann, ist, dass du die Hausaufgaben für deinen Sohn machst. ;)
    „Meine Komplikation hatte eine Komplikation.“

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von macmoonshine ()

  • macmoonshine schrieb:

    Den einzigen Mitßbrauch, den ich übrigens hier erkennen kann, ist, dass du die Hausaufgaben für deinen Sohn machst. ;)
    Naja, es ging eben mehr um eine Verständnisfrage zur anstehenden Klausur als um eine Hausarbeit. Da werde ich dann selber neugierig (man lernt ja gerne dazu) und kann mich nicht beherrschen :D

    Er hat nun beschlossen, statt URL- lieber Code-Beispiele zu liefern. Better safe than sorry...

    Danke für Deine Hilfe!

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • Thorsten Kreutz schrieb:

    Ich würde die Darstellung wählen, wie in dem Buchauszug (s. Abbildung 5.1 und 5.2)
    Danke, das sieht auch ziemlich so aus wie seine Diagramme ... konkret die Darstellung des o. g. Beispiels war aber unklar.

    Die Klausur ist geschrieben, statt UML-Diagramme konnte er auch Code-Beispiele liefern und das "Problem" wird sich bestimmt mit wachsendem Verständnis in den nächsten Jahren klären.

    Grüße, Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.