tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
491
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    lafilia lafilia ist offline Grünschnabel
    Registriert seit
    Dec 2010
    Beiträge
    2
    Hallo,

    eine vermutlich blöde Frage, aber ich weiß einfach nicht, wie ich Folgendes lösen soll:

    Ich habe ein Objekt Spieler mit der Exemplarvariablen spielVerhalten.
    Das Spielerobjekt hat entweder spielVerhaltenA oder spielVerhaltenB.
    Auf dem Spieler wird nun eine Methode spielZug() aufgerufen, welche der Spieler eigentlich nur an sein spielVerhalten weitergibt.
    Nun liefern die beiden spielVerhalten-Objekte aber verschiedene Rückgabetypen. Das eine ein int und das andere ein Array.
    Dass ich das Verhalten kapsele, soll ja nun aber eigentlich dazu führen, dass ich sagen kann spieler.spielZug(), ohne dass ich weiß, was der Spieler für ein spielVerhalten hat.
    Aber nun muss ich ja im Spieler bei der Implementation der Methode den Rückgabetyp angeben und würde natürlich gerne reinschreiben: int oder Array.

    Mir ist bisher nichts Besseres eingefallen, als eigene Klassen zu schreiben, die Integer und Array erweitern und zusätzlich noch ein selbst definiertes Interface implementieren, nur um eine Schnittstelle zu schaffen.
    Aber so ein leeres Interface, das wirklich nur als Schnittstelle gilt, ist doch irgendwie unschön, oder?

    Gibt es da einen einfacheren und schöneren Weg?

    Vielen Dank für die Hilfe!
     

  2. #2
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    Hallo,

    warum schreibst du dir nicht einfach eine Klasse Spielverhalten, die deine Daten beinhaltet. Oder ein Interface, welches Methoden beinhaltet, um an die Informationen des Spielverhaltens dran zu kommen?

    Also grob gesagt das Ziel wäre ja, dass du immer den gleichen Typ zurückbekommst und dort über bestimmte Methoden die Werte zurück bekommst. Und nicht, dass du abfragen musst ist es ein int oder ist es ein Array.

    Ich kann dir aber nichts konkretes sagen, da ich dein Spiel und die einzelnen Spielverhalten nicht kenne.

    Gruß

    Sascha
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  3. #3
    DEV DEV ist offline Mitglied
    Registriert seit
    Dec 2010
    Beiträge
    11
    Hallo,

    wie wäre es wenn du z.B. IMMER ein Array zurückgibst? Im Zweifel (bei dem Fall "int" beinhaltet das Array halt nur 1 Wert. Nur so als Denkanstoss...

    Gruß
    DEV
     

  4. #4
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.394
    Hi,

    oder du arbeitest temporär mit einem Object. Ist zwar nicht schön (wenn man es so machen muss, dann stimmt was mit der Objektstruktur / Vererbung nicht):

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    Object val;
     
    val = abc.getWert();
     
    if(val instanceof Integer) {
      int i = (int) val;
    }
     
    if(val instanceof Array) {
      int[] a = (int[]) val;
    }

    Evtl stimmt das oben nicht ganz, aber vom Ansatz sollte es zeigen wie es gehen könnte.
    Aber wie schon in Post #2 angemerkt solltest du deine Struktur etwas überdenken.

    Gruß
    BK
     
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"

Ähnliche Themen

  1. Zwei ähnliche Abfragen: eine funktioniert, eine nicht...
    Von it-bergmann im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 19.02.08, 23:33
  2. Zwei Qbjekte-zwei Splines-eine Geschwindigkeit
    Von Padrenuestro im Forum Cinema 4D
    Antworten: 1
    Letzter Beitrag: 04.12.07, 14:17
  3. Antworten: 0
    Letzter Beitrag: 12.11.07, 10:36
  4. Antworten: 2
    Letzter Beitrag: 06.06.07, 18:37
  5. Antworten: 0
    Letzter Beitrag: 28.01.06, 13:59