Kompositum Vorteile

Machiavelli

Mitglied
Hallo,

welche Vorteile hat das Kompositum Entwurfsmuster bei der Implementierung eines binären Suchbaums?

Bisher weiß ich nur, dass die Implementierung verkürzt wird, weil man nicht mehr nachprüfen muss, ob es einen Nachfolger gibt oder nicht. Dadurch wird weniger Speicherplatz benötigt und das Programm geht schneller.

Sind das die einzigen Vorteile des Kompositums?

Danke in Vorraus!
Grüße,
Machiavelli
 

Machiavelli

Mitglied
OK, danke.
Ich sollte vielleicht anfügen, dass das Oberstufenstoff des Gymnasiums ist und ich deswegen nicht so viel darüber weiß.

UML:
show.php


Methode Suchen mit Komp (Klasse KNOTEN):

Java:
public DATENELEMENT Suchen(String suchSchluessel){
        if(daten.SchluesselIstGleich(suchSchluessel)){
            return daten;
        } else {
            if(daten.SchluesselIstGroesserAls(suchSchluessel)){ //falls der eigene Schlüssel von daten größer ist als der Suchschlüssel
                return linkerNachfolger.Suchen(suchSchluessel);
            } else {   
                return rechterNachfolger.Suchen(suchSchluessel);
            }
        }
    }

Methode Suchen ohne Komp (Klasse KNOTEN):

Java:
public DATENELEMENT Suchen(String suchSchluessel){
        if(daten.SchluesselIstGleich(suchSchluessel)){
            return daten;
        } else {
            if(daten.SchluesselIstGroesserAls(suchSchluessel)){ //falls der eigene Schlüssel von daten größer ist als der Suchschlüssel
                if(linkerNachfolger != null){
                    return linkerNachfolger.Suchen(suchSchluessel);
                } else {
                    return null;
                }
            } else {   
                if(rechterNachfolger != null){
                    return rechterNachfolger.Suchen(suchSchluessel);
                } else {
                    return null;
                }
            }
        }
    }

Wenn man Kompositum verwendet, fallen die Abfragen nach dem Nachfolger, ob dieser gleich null ist, weg.
(Deswegen weniger Speicherplatzverbrauch => Programm ist schneller)

Wenn ich auf Wikipedia die Vorteile anschaue:
  • einheitliche Behandlung von Primitiven und Kompositionen
  • leichte Erweiterbarkeit um neue Blatt- oder Container-Klassen
weiß ich nicht, was damit genau gemeint sein soll.
 

mrBrown

Super-Moderator
Mitarbeiter
Wenn man Kompositum verwendet, fallen die Abfragen nach dem Nachfolger, ob dieser gleich null ist, weg.
(Deswegen weniger Speicherplatzverbrauch => Programm ist schneller)
Dafür braucht man mehr Klassen -> Mehr Speicherplatz (Mit Geschwindigkeit hat das erstmal nichts zu tun)

  • einheitliche Behandlung von Primitiven und Kompositionen:
Dein Beispiel ist leider etwas zu kurz dafür, da es nur die Wurzelelemente sind. Stell dir die passenden Blatt-Knoten zusätzlich vor, bei denen enthält die #Suchen nur das erste if.
Ohne Kompositum ist die Wurzel auch das Element für's Blatt, deshalb muss da auf Null geprüft werden (beide Nachfolger == null -> Blattknoten)
  • leichte Erweiterbarkeit um neue Blatt- oder Container-Klassen
Du kannst zB einfach einen Knoten hinzufügen, der 3 Elemente hat, statt 2. Ohne Kompositum müsste man den gesamten Teil umschreiben.
 

Ähnliche Java Themen

Neue Themen


Oben