ArrayList<xyz> Verschachtelung oder Vererbung?

Da_Tebe

Mitglied
Hallo!

Ich habe eine Frage bezüglich der besten Methode einer Art Verschachtelung. Mir geht es besonders darum wie man am Besten auf die einzelnen Objekte zugreifen kann.

Sagen wir ich habe folgende Klassen:
-Universum
-Galaxie
-Sonnensystem
-Planet

Die Hierarchie sieht so aus wie oben dargestellt: Universum besteht aus Galaxien, diese aus Sonnensystemen und diese wiederum aus Planeten.

Bis jetzt dachte ich mir, dass jede Klasse eine ArrayList <E> seines Kindes enthält. Sonnensystem enthält also eine ArrayList<Planet> usw.

Ist das so zu umständlich und ich sollte lieber mit Vererbung arbeiten? Oder ist das gar keine Option?

MfG
Daniel 🙂
 
Hi 🙂
Danke für die schnelle Antwort. Ich arbeite mit dem MVC Modell. Irgendwie habe ich das Gefühl das alle meine Klassen das 'Hauptobjekt' Universum als Parameter benötigen und damit sehr viele Referenzen unterwegs sind. Würde da Sinn machen das erzeugte Objekt 'public' zu setzen? Oder lieber jeder klasse das Universum übergeben?ws
 
Oder lieber jeder klasse das Universum übergeben?
Ja auf jedenfall. Entweder "per Hand" oder nen DI Framework dafür nutzen, z.b. Guice. Aber da du eher Anfänger bist (?), würde ich das per Hand machen.

Würde da Sinn machen das erzeugte Objekt 'public' zu setzen?
Das ist immer ne ganz schlechte Idee. Abhängigkeiten solltest du im Konstruktor übergeben.
 
Anfänger nicht wirklich. Aber manche Sachen benutze ich so gut wie nie, da meine Projekte immer einen sehr Überschaubaren Rahmen haben =) Somit musste ich mich während des Studiums nur kurz damit auseinander setzen.
 
Ein Alternativvorschlag: Du erstellst ein Interface SpaceObject
Java:
interface SpaceObject
{
public Universum getUniversum();
}

Und lässt deine Klassen dieses Interface implementieren. Die Klassen müssten sich dann quasi immer das übergeordnete SpaceObject merken - Universum gibt this zurück, alle anderen callen getUniversum vom parent SpaceObject. Im allgemeinen ist eine Objektreferenz pro Objekt mehr aber nicht wirklich schlimm (Speicher ist billiger als Rechenzeit).
 
Warum sollen alle Klassen das Hauptobjekt "Universum kennen" ?
Durch die hierarchische Struktur ist die Beziehung zum jeweils übergeordeten System,
schon gegeben.

Ok, Navigierbarkeit. Du willst vom Planeten das Sonnensystem ermitteln, von diesem wiederum die Galaxie usw.
so etwa:
Code:
erde.getSonnensystem.getGalaxie().getUniversum()

dazu musst Du dem den Kind die Referenz des Übergeordneten Systems übergeben.
z.B
Java:
class Sonnensystem
{
   ...
   public add(Planet planet)
   {
      planet.setParent(this);
      arraylist.add(planet);
   }
   ...   
}
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben