Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding
You last visited: Today at 14:10

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Java ArrayList aus abstrakter Klasse gefüllt mit spezifischen Objekten

Discussion on Java ArrayList aus abstrakter Klasse gefüllt mit spezifischen Objekten within the General Coding forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Oct 2012
Posts: 3
Received Thanks: 0
Question Java ArrayList aus abstrakter Klasse gefüllt mit spezifischen Objekten

Hallo,

Folgende Situation:
Ich programmiere grade für mein Studium ein Point & Click Adventure (nach dem Model View Control Prinzip).

In dem package Model hab ich nun eine abstrakte Klasse Interac diese spezifizier ich in drei Kinderklassen Item, Navigation und Punkte. Dabei ist Interact die generelle Beschreibung von Objekten mit denen später der User "interagiert" bzw. den User zur aktuellen Beschreibung des Spiels informieren.

Ich erstell mir dann jeweils ein Objekt der Kinderklassen und schreib diese in eine ArrayList<Interact>.

In dem package View, der Klasse drawStage möchte ich jetzt die Objekte zeichnenlassen. drawStage wird eine ArrayList von stageObjekten übergeben und jedem stageObjekt bei der Erzeugung die ArrayList<Interact> mit allen "Interactions".

Hier meine Klasse. (link verweist auf pastebin)

In der For each Schleife geh ich nun alle IteractObjekte einzelnd durch und kann mir deren Klassen zurück geben. Meine Frage ist jetzt wie kann ich jetzt gezielt die einzelnen ObjektTypen ansprechen um weiter spezifisch mit ihnen zu arbeiten?

Vielen dank schonmal für Denkanstöße und Lösungsvorschläge!

mfg Whoruu
Whoruu is offline  
Old 05/28/2013, 16:27   #2
 
elite*gold: 42
Join Date: Jun 2008
Posts: 5,426
Received Thanks: 1,888
Du solltest mal ein wenig über polymorphie lesen.
MoepMeep is offline  
Thanks
1 User
Old 05/28/2013, 16:37   #3
 
Netzgeist's Avatar
 
elite*gold: 72
Join Date: Mar 2009
Posts: 265
Received Thanks: 72
Wenn du das Design unverändert lassen möchtest:


Code:
if (foo instanceof FooObject() { 
((FooObject) foo).fubar() ..
Netzgeist is offline  
Thanks
1 User
Old 05/28/2013, 17:01   #4
 
elite*gold: 0
Join Date: Oct 2012
Posts: 3
Received Thanks: 0
Ty!
Whoruu is offline  
Old 05/29/2013, 10:08   #5


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
Ein ziemlich hässlicher Weg.
Gib dem Interface einfach entsprechende Methoden um damit zu arbeiten (draw, move, was auch immer), implementier sie in den Kindklassen und ruf sie dann auf. Es wird automatisch die passende Methode aufgerufen.
Wenn du ohnehin den Typ auf so eine Art abfragen willst, verlierst du den Vorteil der Vererbung und kannst dir das mit dem Interface eigentlich sparen.
MrSm!th is offline  
Old 05/29/2013, 12:55   #6
 
Netzgeist's Avatar
 
elite*gold: 72
Join Date: Mar 2009
Posts: 265
Received Thanks: 72
Diesen "hässlichen" Weg brauchst du spätestenz wenn du clone oder equals überschreiben willst. Von etwas in der Art bin ich ausgegangen. Alles in seiner Liste implementiert ja eh dasselbe Interface, OP wird also irgendwas anderes nach der Typprüfung tun wollen. Grundsätzlich hast du aber recht, Lange if-else Ketten aus instanceof sind schlechter Stil(deshalb auch meine Annotation vor dem Link).
Netzgeist is offline  
Old 05/29/2013, 14:54   #7


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
Inwiefern soll das für equals und clone notwendig sein?
MrSm!th is offline  
Old 05/29/2013, 17:18   #8
 
Netzgeist's Avatar
 
elite*gold: 72
Join Date: Mar 2009
Posts: 265
Received Thanks: 72
equals:
Code:
return (ob1 instanceof obj2) ? (weitererSinnvollerVergleich) : false;
Bedeutsamer Effizienzgewinn.
clone:
nochmal drüber nachgedacht, man wird ohne auskommen.
Netzgeist is offline  
Thanks
1 User
Reply


Similar Threads Similar Threads
[C#]ArrayList
11/06/2012 - .NET Languages - 6 Replies
Ich hätte da mal eine frage zu der ArrayList in C# Und zwar ich möchte gerne in ihr String suchen jedoch wenn sie 1000 oder mehr inhalte hat dauert das sehr lange:( int anzahl = arra.Count; for(int i = 0;i < anzahl;i++) { if (arra.ToString() == "h") {
Suche einen spezifischen Film
10/21/2012 - Movies & Series - 2 Replies
Hallo, ich habe vor einiger Zeit einen Film gesehen, bei dem 2 Jugendliche (Mann, Frau) einen Nachbarn beobachten und dieser dann einen Mord begeht. Ich hoffe ihr wisst, wie der Film heißt. Lg.
Java - MinHeap als ArrayList
06/10/2012 - General Coding - 4 Replies
Meine Aufgabe (Studium zum Ingenieurinformatiker) für diese Woche lautet unter anderem: Hier mein Ansatz bisher: import java.util.*; public class MinHeap<T extends Comparable<T>> { private A - Pastebin.com Ich denke mal, ich zähle irgendwo ganz klar falsch... aber ich sehs nicht -.-
Problem mit Objekten
01/27/2012 - Flyff Private Server - 3 Replies
Hallo Ich habe ein problem mit ein paar objekten. Ich kann einfach durch diese objekte durchlaufen bzw kann nicht drauf stehen, ich falle immer durch. Das gleiche hab ich auch mit der brücke in Kalgas Dungon, das ich immer durchfalle beim drüber gehen. Ist da ihrgent wie was falsch eingestellt?



All times are GMT +2. The time now is 14:10.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.