Hallo Java Forum,
ich muss nächste Woche eine Präsentation über das OOA-Muster "Wechselnde Rollen" halten.
Ich habe jetzt versucht ein Beispiel für dieses Muster zu erstellen, habe aber ein paar Probleme in der Umsetzung.
In meinem Beispiel gibt es 3 Klassen, dabei nur eine Rolle um die komplexität gering zu halten.
Die Klasse Besucher hat in diesem Fall eine Rolle, Zuschauer. In der Klasse Kino sollen später durch die Methode addZuschauer() neue Zuschauer erstellt werden.
Die Objekte von Zuschauer sollen in einer ArrayList abgespeichert werden, dafür hab ich eine ArrayList vom Typ Besucher erstellt. In der Klasse Besucher befindet sich auch noch die Methode toString(), um die erzeugten Objekten (der Rollen) mit einem String zu identifizieren.
Das Problem:
In der Klasse Kino sollen jetzt Rollen erzeugt werden. dafür habe ich eine Methode addZuschauer()
erstellt. Später möchte ich die ArrayList durchgehen (foreach) und gucken wie viele Zuschauer in der Liste sind. Dafür benutze ich .equals() .Das Problem ist aber, dass immer 0 beim vergleichen zurückgegeben wird, auch wenn bereits Objekte von Zuschauer vorhanden sind. Später soll es nämlich die Möglichkeit geben, mehrere Rollen zu benutzen z.B. Putzfrau und Popcornverkäufer.
Der Quelltext:
Zuschauer :
Besucher:
Kino:
Wenn zaehleZuschauer() aufrufe kommt immer 0 raus, auch wenn Zuschauer vorhanden sind.
In der ArrayList wir auf das Objekt Zuschauer verwiesen, aber da müsste ja zum vergleichen irgendwie "Zuschauer" abgespeichert sein. Hier der Link zu einem Bild auf dem man erkennt auf was das erstellte Objekt verweist:
http://s7.directupload.net/images/131107/qp7etcgn.png
Falls ihr irgendwelche Rückfragen habt, beantworte ich diese gerne.
LG
Lucas
@Edit
Habe vergessen Tags zu erstellen, kann man das nachträglich noch machen?
ich muss nächste Woche eine Präsentation über das OOA-Muster "Wechselnde Rollen" halten.
Ich habe jetzt versucht ein Beispiel für dieses Muster zu erstellen, habe aber ein paar Probleme in der Umsetzung.
In meinem Beispiel gibt es 3 Klassen, dabei nur eine Rolle um die komplexität gering zu halten.
Die Klasse Besucher hat in diesem Fall eine Rolle, Zuschauer. In der Klasse Kino sollen später durch die Methode addZuschauer() neue Zuschauer erstellt werden.
Die Objekte von Zuschauer sollen in einer ArrayList abgespeichert werden, dafür hab ich eine ArrayList vom Typ Besucher erstellt. In der Klasse Besucher befindet sich auch noch die Methode toString(), um die erzeugten Objekten (der Rollen) mit einem String zu identifizieren.
Das Problem:
In der Klasse Kino sollen jetzt Rollen erzeugt werden. dafür habe ich eine Methode addZuschauer()
erstellt. Später möchte ich die ArrayList durchgehen (foreach) und gucken wie viele Zuschauer in der Liste sind. Dafür benutze ich .equals() .Das Problem ist aber, dass immer 0 beim vergleichen zurückgegeben wird, auch wenn bereits Objekte von Zuschauer vorhanden sind. Später soll es nämlich die Möglichkeit geben, mehrere Rollen zu benutzen z.B. Putzfrau und Popcornverkäufer.
Der Quelltext:
Zuschauer :
Java:
public class Zuschauer extends Besucher
{
public String toString(){
return "Zuschauer";
}
}
Besucher:
Java:
public abstract class Besucher
{
@Override
public abstract String toString();
}
Kino:
Java:
import java.util.ArrayList;
public class Kino{
ArrayList<Besucher> besucher = new ArrayList<Besucher>();
//Bin mir noch sicher welcher Typ die Methode haben muss, irgendwie muss auf toString() verwiesen werden.
public void addZuschauer(){
besucher.add(new Zuschauer());
}
//Ansatz zum durchzählen der vorhandenen Zuschauer
//
// public int zaehleZuschauer(){
// int z = 0;
// for( Besucher b : besucher){
// if("Zuschauer".equals(toString())){
// z++;
// }
// }return z;
// }
// }
}
Wenn zaehleZuschauer() aufrufe kommt immer 0 raus, auch wenn Zuschauer vorhanden sind.
In der ArrayList wir auf das Objekt Zuschauer verwiesen, aber da müsste ja zum vergleichen irgendwie "Zuschauer" abgespeichert sein. Hier der Link zu einem Bild auf dem man erkennt auf was das erstellte Objekt verweist:
http://s7.directupload.net/images/131107/qp7etcgn.png
Falls ihr irgendwelche Rückfragen habt, beantworte ich diese gerne.
LG
Lucas
@Edit
Habe vergessen Tags zu erstellen, kann man das nachträglich noch machen?
Zuletzt bearbeitet: