Datenstruktur elegant zerlegen

Status
Nicht offen für weitere Antworten.

Biesterfeld

Aktives Mitglied
Hej,

man stelle sich vor, man habe eine relativ große Datenstruktur (eigentlich ein Container der mehrere Sets verschiedener Elementtypen enthält).
Dieser Container soll hierarchisch modularisiert werden. Also die Inhalte des Containers werden nach einem Bestimmten Kriterium in verschiedene Subcontainer gepackt, die dann wiederrum weiter zerlegt werden können, usw...

Wichtig noch: Die Modularisierung soll zwar jeweils immer nur nach einem Kriterium erfolgen, es sollen aber verschiedene Kriterien angeboten werden, nach denen zerlegt werden kann.

Nun die Frage welcher Ansatz der eleganteste ist:

a) der Container bringt selber die Methoden seiner Zerlegung mit.
b) es gibt einen abstrakten Zerleger, der je nach Kriterium eine konkreten Zerleger beerbt, dieser wird mit dem Container gefüttert und gibt als Ergebnis das Zerlegungsobjekt zurück.
c) das Ergebnisobjekt wird beim instanzieren mit dem Container und der Zerlegungsklasse gefüttert.

Beste Grüße
Biesterfeld
 

Campino

Top Contributor
Biesterfeld hat gesagt.:
b) es gibt einen abstrakten Zerleger, der je nach Kriterium eine konkreten Zerleger beerbt, dieser wird mit dem Container gefüttert und gibt als Ergebnis das Zerlegungsobjekt zurück.

Ich würde den nehmen, Frag mich nicht warum...Also eine hochqualifizierte Antwort *wink*
 

Illuvatar

Top Contributor
Campino nimmt im Zweifelsfall das was er nicht versteht :bae:

Ne, im Ernst, ich wär auch für b), da das am Besten veränderbar/erweiterbar ist wenn man den konkreten Zerleger ändert.
 

Campino

Top Contributor
Illuvatar hat gesagt.:
Campino nimmt im Zweifelsfall das was er nicht versteht :bae:

Ne, im Ernst, ich wär auch für b), da das am Besten veränderbar/erweiterbar ist wenn man den konkreten Zerleger ändert.

Wenn du kein Mod wärst...
 

Snape

Bekanntes Mitglied
Biesterfeld hat gesagt.:
Hej,

man stelle sich vor, man habe eine relativ große Datenstruktur (eigentlich ein Container der mehrere Sets verschiedener Elementtypen enthält).
Dieser Container soll hierarchisch modularisiert werden. Also die Inhalte des Containers werden nach einem Bestimmten Kriterium in verschiedene Subcontainer gepackt, die dann wiederrum weiter zerlegt werden können, usw...

Wichtig noch: Die Modularisierung soll zwar jeweils immer nur nach einem Kriterium erfolgen, es sollen aber verschiedene Kriterien angeboten werden, nach denen zerlegt werden kann.

Nun die Frage welcher Ansatz der eleganteste ist:

a) der Container bringt selber die Methoden seiner Zerlegung mit.
b) es gibt einen abstrakten Zerleger, der je nach Kriterium eine konkreten Zerleger beerbt, dieser wird mit dem Container gefüttert und gibt als Ergebnis das Zerlegungsobjekt zurück.
c) das Ergebnisobjekt wird beim instanzieren mit dem Container und der Zerlegungsklasse gefüttert.

Beste Grüße
Biesterfeld

Prinzipiell klingen a) und b) fast gleichwertig. Allerdings habe ich nicht so recht verstanden, was Du mit dem Beerben eines konkreten Zerlegers meinst, mit Container füttern usw. Sollen die Subcontainer abgeleitete Klassen von Container werden? Wenn ja, dann würde ich b) bevorzugen, ist alles schön sauber getrennt und jeder Container kann sich die Subsets holen/erstellen, die er braucht.
 

Bleiglanz

Gesperrter Benutzer
würde sagen "Strategy-Pattern" ausnahmsweise mal angebracht

Container hat eine Membervarialbe Zerleger

Zerleger ist ein Interface

über einen setter kannst du einem Container dann einen konkreten Zerleger unterjubeln

Container hat methode zerlegMich(), die einfach an den Member-Zerleger delegiert
 

Biesterfeld

Aktives Mitglied
Hej,

Snape hat gesagt.:
Biesterfeld hat gesagt.:
a) der Container bringt selber die Methoden seiner Zerlegung mit.
b) es gibt einen abstrakten Zerleger, der je nach Kriterium eine konkreten Zerleger beerbt, dieser wird mit dem Container gefüttert und gibt als Ergebnis das Zerlegungsobjekt zurück.
Prinzipiell klingen a) und b) fast gleichwertig. Allerdings habe ich nicht so recht verstanden, was Du mit dem Beerben eines konkreten Zerlegers meinst, mit Container füttern usw. Sollen die Subcontainer abgeleitete Klassen von Container werden?

Also a) und b) sind in meinen Augen vollkommen verschieden:

a) :
Code:
class Container implements SuperContainer{
  ...
  public ZerlegterContainer zerlegMich(int kriterium){
    case(kriterium){
      switch 1:
       ...
    }
    return output;
  }
}

b) :
Code:
abstract class Zerleger{
  
  protected SuperContainer     input;
  protected ZerlegterContainer output;
  
  public Zerleger(Supercontainer input) {
    this.input = input;
  }

  public ZerlegterContainer gibZurueck(){
    return output;
  }

  private void zerlege();
}

public class ZerlegeNachKriterium1 extends Zerleger{
  
  public ZerlegeNachKriterium1(SuperContainer input){
    super(input);
  }

  private void zerlege{
    ...
  }
}

Und die dritte Idee:
Code:
public final class Zerleger{
  int kriterium;
  public static final Zerleger ZERLEGE_NACH_KRITERIUM = new ZERLEGER(1);
  ...

  private Zerleger(int kriterium){
    this.criterion = kriterium;
  }

  public zerlege(SuperContainer){
    switch (this.kriterium){
      case 1:
      ....
    }
  }
}

public class ZerlegterContainer implements SuperContainersErbe{
  ...
  public ZerlegterContainer(Supercontainer input, Zerleger zerleger){
    zerleger.zerlege(input);
  }
  ...
}

Ich denke das es jetzt klar geworden ist?

Die Idee ist vor allem, dass ich den orginal Container nicht ändern möchte, weil ich ihn eben mehrmals auf verschiedene art und weise zerlegen muss. Daher ist jede Zerlegung eine neue Instanz.
Zerlegung und Container gehören auch dem gleichen Superinterface an, implementieren aber dessen verschiedene Erben.

Naja, is jetzt schon etwas sehr ausführlich geworden. Der Grundtenor war ja dass die Methode b) wohl die gebräuchlichste sei. Allerdings fühlte ich mich etwas (da ich die letzten Tage viel damit gearbeitet hatte) durch die Interfaces Comparator und Comparable inspiriert, die ja eher die Methoden a) bzw. c) repräsentieren.

So far, vielen Dank und beste Grüße
Biesterfeld
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Eigene Datenstruktur um eine Menge zu speichern Allgemeine Java-Themen 3
Kirby.exe Union Find Datenstruktur Allgemeine Java-Themen 27
U Klassen Komplexe Datenstruktur in Java Allgemeine Java-Themen 4
J Datenstruktur für eine Map erstellen Allgemeine Java-Themen 2
B Suche geeignete Datenstruktur Allgemeine Java-Themen 5
ruutaiokwu datenstruktur welche sich "im kreis" dreht Allgemeine Java-Themen 26
P Große Datenstruktur im Speicher halten Allgemeine Java-Themen 13
B Suche passende Datenstruktur für 2 Einträge Allgemeine Java-Themen 19
G Welche Datenstruktur? Allgemeine Java-Themen 19
R Collections Datenstruktur gesucht Allgemeine Java-Themen 12
D Datenstruktur für Hierarchie/Baum mit Tiefe 3 Allgemeine Java-Themen 8
D Datenstruktur .. BlockingQueue (LIFO) Allgemeine Java-Themen 3
P Suche Datenstruktur Allgemeine Java-Themen 2
S Welche Datenstruktur für verschiedene Sprachen sinnvoll? Allgemeine Java-Themen 2
ruutaiokwu schnelle datenstruktur... Allgemeine Java-Themen 13
S Baumstruktur/Datenstruktur in Datei speichern Allgemeine Java-Themen 23
D Datenstruktur Allgemeine Java-Themen 2
B Datenstruktur: Liste Allgemeine Java-Themen 5
A Thread sichere Datenstruktur Allgemeine Java-Themen 5
J Arrayähnliche Datenstruktur Allgemeine Java-Themen 4
B Script Problem "Dynamische Datenstruktur" Allgemeine Java-Themen 13
S Frage zum Design der Datenstruktur Allgemeine Java-Themen 10
G Datenstruktur: LISTEN Allgemeine Java-Themen 7
D Suche nach passender Datenstruktur Allgemeine Java-Themen 4
N Datenstruktur für Netze gesucht Allgemeine Java-Themen 8
G Daten von Excel kopieren - sinnvolle Datenstruktur? Allgemeine Java-Themen 3
U eigene Datenstruktur ArrayList<String> nach Object [][ Allgemeine Java-Themen 2
F welche Datenstruktur? Allgemeine Java-Themen 9
F Welche Datenstruktur Allgemeine Java-Themen 2
T Datenstruktur gesucht Allgemeine Java-Themen 18
T Datenstruktur für großes Netz Allgemeine Java-Themen 2
Z Welche Datenstruktur verwende ich h_ier bloss ? Allgemeine Java-Themen 14
G NullPointer. in einer Datenstruktur Allgemeine Java-Themen 2
S Welche Datenstruktur passt bei mir? Allgemeine Java-Themen 6
H Speicheverbrauch einer Datenstruktur ermitteln Allgemeine Java-Themen 29
S Suche geeignete Datenstruktur Allgemeine Java-Themen 27
S Datenstruktur für einen Baum Allgemeine Java-Themen 5
D Welche Datenstruktur? Allgemeine Java-Themen 2
T Datenstruktur für Straße ! Allgemeine Java-Themen 5
G Datenstruktur gesucht: Allgemeine Java-Themen 3
A Datenstruktur und Sortierung Allgemeine Java-Themen 12
S Elegant merken, wo man ist? Allgemeine Java-Themen 7
J elegant aus Datei n Objekte lesen? Allgemeine Java-Themen 5
Ü Eurobeträge in möglichst wenig Scheine/Münzen zerlegen (2D-Arrays) Allgemeine Java-Themen 27
J Zerlegen einer Zahl Allgemeine Java-Themen 6
Neumi5694 Parser - Zerlegen verschachtelter Funktionen Allgemeine Java-Themen 2
A ALTER TABLE mit Hilfe von RegEx zerlegen, splitten Allgemeine Java-Themen 5
C Datentypen int in bytes zerlegen und wieder zusammen setzen Allgemeine Java-Themen 13
F String in feste Größe zerlegen Allgemeine Java-Themen 11
H String zerlegen Allgemeine Java-Themen 2
S Threads Liste mit Objekten in Teillisten zerlegen und abarbeiten Allgemeine Java-Themen 3
J String zerlegen in einzelne Strings Allgemeine Java-Themen 7
D String zerlegen Allgemeine Java-Themen 12
R JAI - RGB Bild in 3 Einzelbilder zerlegen Allgemeine Java-Themen 4
X String zerlegen mittels regulärem Ausdruck Allgemeine Java-Themen 31
N String in einzelne Zeichen zerlegen Allgemeine Java-Themen 8
K List in Teillisten zerlegen Allgemeine Java-Themen 2
H Log zerlegen Allgemeine Java-Themen 23
G Strings zerlegen und substrings auslesen Allgemeine Java-Themen 2
K String zerlegen wie? Allgemeine Java-Themen 8
A Wort in seine Buchstaben zerlegen Allgemeine Java-Themen 37
M Link parsen bzw. zerlegen Allgemeine Java-Themen 9
S String analysieren, zerlegen und überarbeiten Allgemeine Java-Themen 4
T Objekte eindeutig zerlegen und wieder zusammen bauen? Allgemeine Java-Themen 6
Luma String in seine Buchstaben zerlegen? Allgemeine Java-Themen 3
B Strings zerlegen Allgemeine Java-Themen 9
M String zerlegen? Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben