Objektverwaltung bei verschachtelten Klassen

Marti

Mitglied
Hallo.

Ich würde gerne mal wissen, was denn nun der eleganteste Weg ist wenn ich folgendes habe:

In der mainClass HauptKlasse werden Objekte der KlasseA instanziert.
In der KlasseA werden wiederrum Objekte der KlasseB instanziert. Diese Objekte sollen nun wieder in der Hauptklasse in einem Array verwaltet werden.
Jetzt gäbe es die Möglichkeit eine Instanz der Hauptklasse "durchzureichen" damit sich das Objekt selbst dem Array, dass auf der Hauptklase liegt hinzuzufügen. Oder Objekt der Klasse A hält eine Referenz auf Hauptklasse und fügt das Objekt der Klasse B in das Array ein, wenn es instanziiert wird.
Hinzu kommt, dass auch eine bestimmte function in der Hauptklasse ausgelöst werden soll,wenn ein neues Objekt der KlasseB instanziiert wird.
Sollte ich da evtl. mit Events arbeiten?
 

Michael...

Top Contributor
Vielleicht kannst Du Deine Klasse mal ein bisschen konkretisieren. Wenn die Hauptklasse eine Liste mit Objekten der KlasseB verwalten soll, sollte die Hauptklasse diese eventuell selbst erzeugen.
 

Marti

Mitglied
Hi.

In meinem konkreten Fall erzeuge ich in der mainclass (dass auf der JPanel Klasse basiert) Spielobjekte, deren Animationen und visuelle Wiedergbe, Kollisionsprüfungen etc.. von der mainklasse organisiert werden, indem sie nach der Instanzzierung in einem Array abgelegt werden.
Nun wollte ich diese Spielobjekte ihrerseits die Möglichkeit geben Kanonenkugeln abzufeuern, die ich dann gerne wieder wieder in der mainklasse ablegen möchte, um sie den sonstigen Spielobjekten beizufügen, sie verfügen über die gleiche Spiellogik, können problemlos im gleichen Array abgelegt werden.
Es macht Sinn, dass eine abgefeuerte Kugel eines Spielobjekts auch vom dem Spielobjekt selbst instanziiert wird. Allerdings müßte in meinem Fall das Spielobjekt keine Instanz halten, es muss nicht mehr darauf zugreifen.
Also mach ich es so wie Du gesagt hast, ich werde sie auch in der mainclass erzeugen:
Jedes Spielobjekt darf z.B. alle 3 sec. abfeuern. Ich werde also über einen Timer einen
Boolean darfSchiessen = true setzen im Spielobjekt. Die mainclass iteriert druch das Array der Spielobjekte, prüft diesen Wert und instanziiert dann entsprechend der Position des Spielobjektes eine neue Kanonenkugel. Das Spielobjekt selbst bleibt aussen vor.
 

Michael...

Top Contributor
Unabhängig davon wie das Schiessen ausgelöst wird, sollte das über die Hauptklasse verwaltet werden.

Man könnte den Spielobjekten durchaus eine Methode ala
Java:
public CanonBall fireCanonBall() {
    CanonBall ball = new CanonBall(...);
    ...
    return ball;
}
spendieren, um z.B. die Position des Spielobjekts als Startposition der Kugel zu übergeben.
Aufgerufen werden, sollte die Methode aber aus der Hauptklasse heraus, um die Referenz auf die Kugel entgegen und diese in die Liste aufzunehmen.
 

Marti

Mitglied
Ja, das klingt sehr schlüssig. So werde ich das händeln und hatte das schon so angedacht.
Eins würde mich aber noch brennend interessieren. Was wäre die eleganteste Art für das Spielobjekt, der Hauptklasse bescheid zu sagen, "bitte ruf function canonfireball " auf. (Ich könnte die Entscheidung auch in die mainclass verlegen evtl., aber das würde mich mal interessieren). Meine Variante mit der Überprüfung von boolean-Werten funktioniert natürlich, aber scheint mir nicht so elegant. Aber evtl. gibts da auch nicht den einzigen richtigen Weg.
 

Michael...

Top Contributor
Wer oder was legt denn fest, dass gefeuert werden soll? Soll das aufgrund einer spezifischen Aktion oder zeitgesteuert passieren? Was Du da mit dem boolean vorhast hab ich nicht wirklich verstanden.
 

Marti

Mitglied
Zunächst einfach nur im Intervall von 3 sec pro Gameobjekt. Ich wollte einen Timer in jedem Gameobjekt implementieren, der alle 3 sec. z.B den boolean "readytoFire" auf true setzt.

In der mainclass könnte dann sowas stehen wie:

Java:
if (gameObject.readytoFire)
{
CanonBall canonBall= gameObject.fireCanonBall();
gameObject.readytoFire = false;
}
Die mainclass prüft einfach in jedem Durchgang ob geschossen werden soll oder nicht, was über die Prüfung von readytoFire geschieht.
Ich wäre dann auch sehr flexibel die Bedingungen die readytoFire auf true setzt, einfach zu ändern, bzw. weitere Bedingungen im gameobjekt hinzuzufügen, z.B. wenn bedrohliche Situationen auftreten usw...
 

Michael...

Top Contributor
Wenn der Timer für alle Objekte gültig ist, könnte man hieraus die Objekte direkt feuern lassen. Oder soll das eher so eine rundenbasierende Geschichte werden?
 

Marti

Mitglied
Du meinst den Timer in der mainclass benutzen? Ich wollte jedem Objekt einen eigenen Timer spendieren, der bei der Instanzierung startet. Wenn ich einen zentralen Timer verwende, feuern alle immer zu gleichen Zeit, das will ich nicht. Der Timer soll abhängig vom Eintrittspunkt (bzw. der Instanzierung) des gameObjekts im Intervall von 3 sec. agieren. Das Geballer der Objekte soll nicht synchron sein.
 

Michael...

Top Contributor
Du meinst den Timer in der mainclass benutzen? Ich wollte jedem Objekt einen eigenen Timer spendieren, der bei der Instanzierung startet. Wenn ich einen zentralen Timer verwende, feuern alle immer zu gleichen Zeit, das will ich nicht. Der Timer soll abhängig vom Eintrittspunkt (bzw. der Instanzierung) des gameObjekts im Intervall von 3 sec. agieren. Das Geballer der Objekte soll nicht synchron sein.

In dem Fall würde ich im Konstruktor der Objekte einen Timer erzeugen und starten. Die Hauptklasse würde ich (z.B. als Listener) an dem Objekt registrieren, um sie dann über jeden Abschuss zu informieren.
 

Marti

Mitglied
Alles klar, danke.
Wenn ich jetzt noch ein bißchen ausgeklügelteres System haben will, als das 3 sec.-Intervall, (z.B. Feind ist in der Nähe, freie Schussbahn usw...das möchte ich augenblicklich noch offenlassen) , dann wäre es doch am geschicktesten ein eigenes Eventsystem zu basteln, oder? Damit könnte ich noch flexiber werden, unterschiedliche Reaktionen auf unterschiedliche Ereignisse auslösen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Objektverwaltung mit ArrayList in einer seperaten Klasse Java Basics - Anfänger-Themen 24
H Muster mit verschachtelten Schleifen kreieren. Java Basics - Anfänger-Themen 2
L Frage zur verschachtelten for-schleife Java Basics - Anfänger-Themen 2
L Blöcke bei verschachtelten Schleifen Java Basics - Anfänger-Themen 3
L Kurze Frage zu verschachtelten Schleifen Java Basics - Anfänger-Themen 3
R Anzahl der ineinander verschachtelten for-Schleifen von Variable abhängig machen Java Basics - Anfänger-Themen 5
Luk10 Index bei 2 verschachtelten Schleifen Java Basics - Anfänger-Themen 2
J Probleme mit verschachtelten for-Schleifen Java Basics - Anfänger-Themen 17
B Logik von verschachtelten For Schleifen Java Basics - Anfänger-Themen 6
J Ausgabe von verschachtelten ArrayListen Java Basics - Anfänger-Themen 2
G Gibt es in JAVA keine verschachtelten for-schleifen? Java Basics - Anfänger-Themen 9
J Methodenaufrufe abstrakte Klassen, Interfaces Java Basics - Anfänger-Themen 17
M Abstrakte Klassen - Notation Java Basics - Anfänger-Themen 9
Detlef Bosau Nachladen von Klassen zur Laufzeit Java Basics - Anfänger-Themen 24
M Anonyme Klassen - Warum wird in der Konsole nichts ausgegeben? Java Basics - Anfänger-Themen 1
MoxMorris Einige Methoden aus verschiedenen Klassen nacheinander auszuführen läuft seltsam Java Basics - Anfänger-Themen 2
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
I 2 verschiedene Klassen mit gleichen Property vergleichen Java Basics - Anfänger-Themen 13
C Array von Klassen Java Basics - Anfänger-Themen 2
monsterherz 2 Klassen daher Probs mit dem Dateinamen Java Basics - Anfänger-Themen 9
C Kommunikation zwischen 2 Klassen Java Basics - Anfänger-Themen 9
I JPA Query für mehrere Klassen Java Basics - Anfänger-Themen 3
I @Entity Klassen, Service Beans etc. aus einem Share Projekt beziehen? Java Basics - Anfänger-Themen 26
S IntelliJ geht alle Klassen durch Java Basics - Anfänger-Themen 9
I Gleiche Klassen und Methoden in unterschiedlichen Projekten nutzen Java Basics - Anfänger-Themen 2
T variablen klassen übergreifend Java Basics - Anfänger-Themen 12
N Klassen Methoden anderer Klassen aufrufen Java Basics - Anfänger-Themen 4
D Klassen Klassen Kommunikation Java Basics - Anfänger-Themen 12
Encera Auf Objekte aus anderer Klassen zugreifen Java Basics - Anfänger-Themen 20
berserkerdq2 Zwei Klassen Erben von der Klasse A, die eine Klasse kann ich an Methoden übergeben, die als Parameter A haben, die andere nicht? Java Basics - Anfänger-Themen 3
M Andere Methoden in anderen Klassen aufrufen Java Basics - Anfänger-Themen 11
L Methoden in anderen Klassen nutzen Java Basics - Anfänger-Themen 6
D Klassen und Vererbung Java Basics - Anfänger-Themen 2
L Best Practice Annotierte Klassen im Classpath herausfinden Java Basics - Anfänger-Themen 1
P Mit dem Scanner Klassen aufrufen Java Basics - Anfänger-Themen 3
O Klassen Zusammenspiel zwischen 2 Klassen Java Basics - Anfänger-Themen 1
K Zweite Ausgabe von vererbten Klassen Java Basics - Anfänger-Themen 3
M Wie können Klassen nicht-materialisierte Attribute haben, die nur über get/ set-Mehoden simuliert sind? Java Basics - Anfänger-Themen 6
Speedrunner klassen aufrufen Java Basics - Anfänger-Themen 41
M Log4J (v2) nachträglich in allen Klassen hinzufügen Java Basics - Anfänger-Themen 9
D importieren eigener Klassen Java Basics - Anfänger-Themen 12
W Wo ist der Wurm in meinem Grundverständnis von Klassen? Java Basics - Anfänger-Themen 22
S Daten/Klassen/Packages richtig updaten!? Java Basics - Anfänger-Themen 2
alice98 Erste Schritte Liste erstellen ohne vorgefertigte Klassen Java Basics - Anfänger-Themen 1
C Archiv für eigene Klassen Java Basics - Anfänger-Themen 9
S Objekte von zwei klassen in zwei verschiedene Textdateien schreiben Java Basics - Anfänger-Themen 5
elsaaaaaa Wochentag als String ausgeben mit JDK Klassen Java Basics - Anfänger-Themen 6
CptK Generics: Klassen die Interface implementieren, aber selbst nicht das Interface sind Java Basics - Anfänger-Themen 8
Z Mehtode bei Start des Programms ausführen (Klassen übergreifend) Java Basics - Anfänger-Themen 12
J Allgemeines Problem mit Klassen Java Basics - Anfänger-Themen 5
TimoN11 Java Klassen Global einbinden Java Basics - Anfänger-Themen 1
B Inventar als einzelne Klassen anlegen? Java Basics - Anfänger-Themen 12
G Java Klassen und Instanzmethoden Java Basics - Anfänger-Themen 15
C Kommunikation zwischen 2 Klassen Java Basics - Anfänger-Themen 3
T Vererbung Verschiedene Attribute für vererbte Klassen Java Basics - Anfänger-Themen 4
S Klassen instanziieren und verwenden von Getter und Setter Java Basics - Anfänger-Themen 4
B Variablen Variablen übertragen ohne Klassen Java Basics - Anfänger-Themen 5
C Fernseher-Aufgabe (Methoden, Klassen und Objekte) Java Basics - Anfänger-Themen 63
H Methoden in großen Klassen gruppieren oder auslagern? Java Basics - Anfänger-Themen 10
G Abstrakte Klassen Java Basics - Anfänger-Themen 11
Y Klassen Klassen und Objekte Java Basics - Anfänger-Themen 3
Y Klassen Klassen und Objekte mit set und get Java Basics - Anfänger-Themen 0
A Generischen Klassen Java Basics - Anfänger-Themen 8
A Vererbung Klassen im Bezug auf Auto´s Java Basics - Anfänger-Themen 18
A Generische Klassen/Interface Java Basics - Anfänger-Themen 1
A Klassen Vererbung und zusätzliche Unterklassen Java Basics - Anfänger-Themen 23
J 2 klassen benutzen Java Basics - Anfänger-Themen 5
A Klassen und methoden Java Basics - Anfänger-Themen 15
A Bankweverwaltung mit Klassen und Methoden Java Basics - Anfänger-Themen 14
J Klassen Problem Java Basics - Anfänger-Themen 8
I Java Klassen "Graphics" und "MouseEvent" kombinieren Java Basics - Anfänger-Themen 7
I Klassen als Datentyp nutzen? Java Basics - Anfänger-Themen 11
M Aufsplitten von Methoden in andere Klassen Java Basics - Anfänger-Themen 2
M (Sehr großes Problem) Listen als static in anderen Klassen verwendet Java Basics - Anfänger-Themen 12
C Klassen objektorientiert aufteilen Java Basics - Anfänger-Themen 6
hello_autumn Klassen Anzahl sowie die Anzahl der Junit Tests ermitteln? Java Basics - Anfänger-Themen 8
A Auf Eigenschaften von Objekten anderer Klassen zugreifen Java Basics - Anfänger-Themen 5
F Klassen und Pakete Projektübergreifend (Eclipse) Java Basics - Anfänger-Themen 6
V_Fynn03 Klassen Überweisungen tätigen und einzahlen mit 2 Klassen Java Basics - Anfänger-Themen 1
W Abarbeitungsreihenfolge Anonyme Klassen Java Basics - Anfänger-Themen 2
V_Fynn03 Bruchrechner programmieren (2 Klassen) Java Basics - Anfänger-Themen 9
D OOP- Eine Klasse in mehrere Klassen aufteilen Java Basics - Anfänger-Themen 7
J Problem mit Array: 2 Klassen Java Basics - Anfänger-Themen 2
W Frage zu anonymen Klassen Java Basics - Anfänger-Themen 4
Curtis_MC Parameter-Übergabe bei Klassen und Methoden Java Basics - Anfänger-Themen 12
E Klassen implementieren Java Basics - Anfänger-Themen 94
T Interfaces in erbenden Klassen Java Basics - Anfänger-Themen 2
C Methoden/Klassen Übergabewerte Java Basics - Anfänger-Themen 8
C Java Klassen/Methoden/Übergabeparameter Java Basics - Anfänger-Themen 4
L Wie geht man bei mehreren Action Klassen vor? Java Basics - Anfänger-Themen 0
P Datentypen, Klassen, Operatoren, Wrapperklassen Java Basics - Anfänger-Themen 2
L Wie teilt man ein Programm in vernünftige Klassen ein? Java Basics - Anfänger-Themen 10
T Klassen Denkfehler im Klassen "dynamisch" instanzieren? Java Basics - Anfänger-Themen 4
P Zugriff auf Variablen anderer Klassen in Greenfoot Java Basics - Anfänger-Themen 1
A Methode, Klassen Java Basics - Anfänger-Themen 3
B UML Klassen Diagramm zu Java Code Programmieren und ausführen Java Basics - Anfänger-Themen 21
J Zwei Klassen die sich gegenseitig referenzieren - Bad practice? Java Basics - Anfänger-Themen 4
G Klassen und Objekte Java Basics - Anfänger-Themen 2
Java The Hutt SetWerte über verschiedene Klassen Java Basics - Anfänger-Themen 16
D Klassen ausgeben Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben