Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [java] help su organizzazione di un programmino

    ciao a tutti...dovrei fare una specie di MUD (MultiUserDungeon) per queste vacanze, senza socket ne altra roba, una semplice avvntura testuale...volevo porvi un quesito:

    ho creato una classe Contenitore, che mi definisce proprietà e metodi un un contenitore qualsiasi (sia questo una cassa, un bicchiere o un'inventario), e vorrei far si che, se venga digitato
    "apri cassa"
    mi venga visualizzato il contenuto del Contenitore Cassa (il metodo è printCont() )...
    io divido in 2 la stringa, vedo il comando ed agisco di conseguenza sulloggetto seguente...ma come faccio a dire al programma di agire sul contenitore "cassa" o su un altro??Preferirei evitare i cicli di IF, così da scrivere un unico metodo (tipo actOn(String oggetto)) che mi permetta di agire su QUELL'oggetto e non su un'altra istanza...

    avevo pensato di organizzare il tutto in array tipo:
    "nome" => isatnza,
    "nome2" => istanza2,

    ma con HashTable (che ho usato in queso caso), non riesco a "prendere" l'istanza che mi interessa...

    spero di essere stato chiaro...un'idea?
    eXtending-Php.net coming soon ...

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    315
    Potresti semplicemente considerare solo la parola "apri", che identifica il nome del metodo. Chiami il metodo open() sul contenitore che stai prendendo in considerazione, e poi il polimorfismo fa si che venga chiamato il metodo open dell'oggetto effettivamente puntato.
    Altrimenti devi usare per forza una serie di if per determinare il tipo dell'oggetto a cui stai puntando, e fare un casting esplicito... ma e' decisamente un brutto modo per risolvere il problema.
    Ciao,
    Lorenzo

  3. #3
    ok,ma open() riceverà come argomento una stringa (il secondo parametro del comando), che gli dirà "cosa" aprire...come faccio a trasformare questa stringa in un oggetto??

    ex:

    scrivo "apri cassa"...
    quindi chiamo
    open("cassa");

    open mi dice di fare qualcosa su l'oggetto cassa, che nel mio caso è un'istanza di Contenitore, ma se l'oggetto è passato come stringa che posso fare??Avevo pensato una cosa del genere:

    HashTable items = new HashTable();
    items.put("cassa",istanzaCassa);
    ....
    open(String itm){
    Object obj = items.get(itm);
    //e poi con istanceOf fare il casting di obj ed "aprire" l'oggetto
    }

    soltanto che non mi funziona...
    eXtending-Php.net coming soon ...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.