• Wir präsentieren Dir heute ein Stellenangebot für einen Java Entwickler - m/w/d in Augsburg, München, Stuttgart oder Bamberg. Hier geht es zur Jobanzeige

Listenartige Speicherung verschiedener Objekte

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo,
ich habe folgendes Problem:

Ich besitzte 4 Klassen.

Rechteck, Oval, Model und DrawingPanel.

Rechteck und Oval sind 2 Objektklassen in denen ich informationen über die Position, Größe speichere und eine Methode zum zeichnen dieses Rechteckes bereitstelle(paint()).

Model soll die erzeugenden Rechtecke und Ovale irgendwie speichern und verwalten können. Löschen von einzelnen Objekte und neue Hinzufügen.

DrawingPanel bekommt beim erzeugen das Model mitgeliefert, dieses DrawingPanel soll nun, alle Objekte aus dem Model auslesen und diese dann mithilfe der funktion paint() der einzelnen Objekte(Rechteck oder Oval) zeichnen.

Mein Problem liegt nun bei der Objektspeicherung im Model. Ich habe versucht mit einer ArrayList die Objekte zu speichern. und dem Model eine getArrayList() funktion zum zurückgeben der ArrayListe verpasst. Nun kann das DrawingPanel natürlich auf die ArrayListe zugreifen, aber mit "ArrayList.get(0).paint()" bekomme ich einen Fehler da der Complier nicht weiß welches Objekt(Rechteck oder Oval) hinter der 0 steht. Gibt es dafür was anderes als die ArrayList? Oder hat sonstjemand eine Idee wie das zu realisieren ist?

Vielen Dank für die Hilfe schonmal!

Mit freundlichen Grüßen
Najjannnaj
 
N

Niki

Top Contributor
Bau dir ein Interface welches die paint Methode beinhaltet. Lass beide Klassen das Interface implementiere und setz die ArrayList auf den Typ des Interface oder caste dir die Objekte auf das Interface:

So z.B.
Code:
public interface Paintable{
  public void paint(Graphics g);
}

public class Oval implements Paintable{

//irgendwelche Methoden und Attribute für Größe und Position....

  //Methode paint des Interface implementieren
  public void paint(Graphics g){
    //
  }

}

//die ArrayList solltest du so erzeugen:

List<Paintable> list = new ArrayList<Paintable>();

//und irgendwo willst du dann alles Zeichnen:

public void paint(Graphics g){
  for(Paintable p : model.getArrayList()){
    p.paint(g);
  }
}
 
tfa

tfa

Top Contributor
Deine Oval- und Rechteck-Klassen müssen einen gemeinsamen Typ haben, also z.B. eine Oberklasse, von der sie abgeleitet sind oder eine Schnittstelle, die beide implementieren:

Code:
public interface Drawable {
   public void draw();
}

public class Oval implements Drawable { 
 ...
    public void draw() { ... }
}
public class Rechteck implements Drawable {
 ...
    public void draw() { ... }
}

Für die Liste benutzt du dann Generics:
Code:
List<Drawable> list = new ArrayList<Drawable>();
Danach kannst du die Liste ganz einfach abarbeiten und auf alle
Objekte draw() aufrufen.
 
N

Niki

Top Contributor
Echt lustig, die selbe Lösung innerhalb weniger Minuten gepostet :)
Wir haben einfach Skillzzzz :lol:
 
tfa

tfa

Top Contributor
Ja, du warst schneller. Obwohl du sogar kommentiert hast :)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
HorstSchröder Speicherung des Testzeitpunkts Java Basics - Anfänger-Themen 3
A Fehler bei der Speicherung von JOptionPane-Eingaben Java Basics - Anfänger-Themen 4
N Probleme bei Speicherung eines Integer-Array in Datei speichern Java Basics - Anfänger-Themen 3
fLooojava Speicherung einer Usereingabe Java Basics - Anfänger-Themen 2
S Input/Output Datei für Speicherung von Variablen Java Basics - Anfänger-Themen 5
L Persistente Speicherung Java Basics - Anfänger-Themen 19
GianaSisters Input/Output Speicherung über FTP-Problem Java Basics - Anfänger-Themen 7
Guybrush Threepwood Effizientester Datentyp zur Speicherung einer ungeordneten Menge von ints Java Basics - Anfänger-Themen 8
B Probleme bei XML-Speicherung Java Basics - Anfänger-Themen 7
N Sequentielle Speicherung Java Basics - Anfänger-Themen 2
A begrenzte Datenstruktur zur Speicherung von bytes Java Basics - Anfänger-Themen 6
F Speicherung von Werten?!? Java Basics - Anfänger-Themen 7
H Speicherung mit XML Java Basics - Anfänger-Themen 3
C JTable und dynamische Speicherung Java Basics - Anfänger-Themen 2
D speicherung Java Basics - Anfänger-Themen 8
E Programm zu Speicherung von Daten ---Totaler Anfänger Java Basics - Anfänger-Themen 7
G Speicherung von Referenzen auf Instanzen Java Basics - Anfänger-Themen 5
W Best Practice Tabulatoren verschiedener Länge ersetzen Java Basics - Anfänger-Themen 8
S Array erzeugen mit verschiedener Verteilung Java Basics - Anfänger-Themen 11
H Anzahl verschiedener Buchstaben im String Java Basics - Anfänger-Themen 41
F Interaktion von Objekten verschiedener Klassen... Java Basics - Anfänger-Themen 13
D Liste verschiedener konkreter Klassen möglich? Java Basics - Anfänger-Themen 2
P Liste sortieren verschiedener generischer Typen Java Basics - Anfänger-Themen 4
E Array Anzahl verschiedener Werte ausgeben Java Basics - Anfänger-Themen 3
P Windows vs. Ubuntu verschiedener Output Java Basics - Anfänger-Themen 31
L Vererbung - Wie Objekte verschiedener Klassen unterscheiden Java Basics - Anfänger-Themen 3
J OOP Ausgabe verschiedener Variabeln aus verschiedenen Subclasses Java Basics - Anfänger-Themen 2
B EreignisListener verschiedener Klassen aus einer Ereignisklasse verwalten Java Basics - Anfänger-Themen 9
N Folge verschiedener Nährwerte zur Kubikwurzel Java Basics - Anfänger-Themen 15
4 OOP Problem beim Speichern verschiedener Klassen in verschiedenen Dateien Java Basics - Anfänger-Themen 25
T Collection von Objekten verschiedener Klassen Java Basics - Anfänger-Themen 4
T Rückgabewerte verschiedener Typen Java Basics - Anfänger-Themen 3
N Vergleich zweier Elemente verschiedener Vectoren Java Basics - Anfänger-Themen 2
S Zugriffsdeklinationen verschiedener Klassen? Java Basics - Anfänger-Themen 3
V Threads verschiedener Klassen synchronisieren Java Basics - Anfänger-Themen 5
G Installation verschiedener JREs Java Basics - Anfänger-Themen 3
W Berechnung verschiedener Eigenschaften von Geraden Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Anzeige

Neue Themen


Oben