Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    88

    [JAVA] cast automatico di oggetti diversi

    Ragazzi ho un problema che si potrebbe risolvere scrivendo 100 righe di codice....
    ma sono sicuro che qualcuno di voi saprà scrivermi due righe che fanno quello che serve a me.

    in pratico ho 4 oggetti diversi che nn posso modificare o toccare e sono:
    codice:
    OUTPUTI8E0 outputI8E0 = new OUTPUTI8E0();
    OUTPUTI8E8 outputI8E8 = new OUTPUTI8E8()
    OUTPUTI8E21 outputI8E21 = new OUTPUTI8E21();
    OUTPUTI8E22 outputI8E22 = new OUTPUTI8E22();
    su questi ognuno di questi 4 oggetti devo applicare un metedo che ha sempre lo stesso nome
    getResponso(); che mi restituisce un intero in base al quale dovrò stampare un messaggio.

    come faccio a fare tutto con un bel for?


    io inizialmente avevo pensato di mettere i 4 oggetti in array di Object ma poi come faccio a far il cast automatico al tipo giusto? non so nemmeno se questo si fattibile.

    Spero di essermi spiegato, sono nelle vostre mani

  2. #2
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    non importa fare il cast, si chiama polimorfismo

  3. #3
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    da wikipedia
    In generale, il polimorfismo è una proprietà del codice in grado di comportarsi diversamente in diversi contesti di esecuzione. In pratica, questo avviene quando lo stesso codice può essere utilizzato con istanze di tipi diversi. Nella programmazione orientata agli oggetti il polimorfismo è solitamente legato alle relazioni di eredità tra classi, che garantisce delle proprietà in comune tra gli oggetti: nei linguaggi ad oggetti tipizzati le istanze di una sottoclasse possono essere utilizzate per inclusione al posto di istanze della superclasse (polimorfismo per inclusione). La possibilità che le classi derivate implementino in modo differente i metodi e le proprietà dei propri antenati rende possibile che gli oggetti appartenenti a delle sottoclassi di una stessa classe rispondano diversamente alle stesse istruzioni. Ad esempio in una gerarchia in cui le classi "Cane" e "Gatto" discendono dalla SuperClasse "Animale" potremmo avere il metodo mangia() che restituisce la stringa "osso" se eseguito sulla classe "Cane" e "pesce" se eseguito sulla classe "Gatto". I metodi che vengono ridefiniti in una sottoclasse sono detti polimorfi, in quanto lo stesso metodo si comporta diversamente a seconda del tipo di oggetto su cui è invocato.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    88
    ma dai??
    grazie se non ci fossi tu nn so come farei
    probabilmente non hai colto che gli oggetti non hanno una superclasse che li accomuna e nemmeno un interfaccia....
    sono 4 oggetti diversi
    come
    pluto
    pippo
    paperino
    pippa

    l'unica cosa che hanno uguale è il nome di questo metodo...

    ora ti è più chiaro qual'è il mio problema?

  5. #5

    Re: [JAVA] cast automatico di oggetti diversi

    Originariamente inviato da draghe
    4 oggetti diversi che nn posso modificare o toccare
    ...
    io inizialmente avevo pensato di mettere i 4 oggetti in array di Object ma poi come faccio a far il cast automatico al tipo giusto? non so nemmeno se questo si fattibile.
    In questo caso puoi usare il RTTI di Java.
    Supposto che l'array contenente gli oggetti si chiami A, nel ciclo puoi fare un controllo del genere:
    codice:
    ...
    if ( A[i] instanceof OUTPUTI8E0 )
         ((OUTPUTI8E0)A[i]).getResponso(); //lo salvi da qualche parte
    else if ...
    ...

  6. #6
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    scusate avete ragione ci ho pensato dopo che ero gia a mensa............
    comunque c'è un errore di progettazione, va bene l'instanceof anche se non è il massimo dell'ortodossia

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    88
    oltre l'istanceof avete una soluzione più elegante?
    qualcosa con il getclass per esempio

  8. #8
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    credo l'unica soluzione più elegante sarebbe stato appunto il polimorfismo se il progetto fosse stato strutturato in modo adeguato, ma aspetto comunque pareri + autorevoli


  9. #9
    Originariamente inviato da bstefano79
    credo l'unica soluzione più elegante sarebbe stato appunto il polimorfismo se il progetto fosse stato strutturato in modo adeguato, ma aspetto comunque pareri + autorevoli
    Non avere dubbi su quello che hai scritto. La soluzione migliore consiste proprio nello sfruttare il polimorfismo di inclusione.
    La cosa divertente è che ha chiesto una soluzione, a livello di codice, più elegante per un progetto scadente. Ciò non è mai possibile.

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    88
    Originariamente inviato da VincenzoTheBest
    Non avere dubbi su quello che hai scritto. La soluzione migliore consiste proprio nello sfruttare il polimorfismo di inclusione.
    La cosa divertente è che ha chiesto una soluzione, a livello di codice, più elegante per un progetto scadente. Ciò non è mai possibile.
    Da quello che hai scritto penso che tu non sia la persona più autorevole che si stava aspettando....

    sai cos'è rational software architect?
    Sai cosa sono i bean di input e di aoutput che vengono invocati da CICS o IMS per J2C Java bean?
    E sai come sono fatti quest'ultimi?
    Ecco, dato che sicuramente non sai niente di questa roba, ne tanto meno la bontà del progetto non capisco come pensi di esprimere giudizi...
    umiltà quando parli, è un consiglio per la vita, in ambienti di lavoro di alto livello potresti fare brutte figure.

    Cmq grazie a tutti coloro che mi hanno risposto, ho risolto e non certo applicando il polimorfismo.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.