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

    Utilizzare oggetto istanziato in altra classe

    Buongiorno a tutti,
    sono un programmatore della domenica e vorrei chiedervi un aiuto per un progetto più ampio che ho in mente. Vorrei solo sapere se il codice seguente è valido:
    Creo la classe MiaClasse così:
    codice:
    public miaclasse {
    
           String s;
    
           public miaclasse () {
    
           s = "stringa vuota";
           }
           
           public void setval(String ins) {
    
           s=ins;
          }
    
          public String getValue() {
       
          return s;
         }
    
    }

    nella classe principale creo l'oggetto miaclasse e ne imposto il valore così :
    codice:
    public class Main {
    
    miaclasse myobj = new miaclasse();
    myobj.setval("stringa impostata");
    }
    se voglio riprendere nella terza classe il valore di myobj è corretto questo codice?
    codice:
    public class altraclasse {
    
    String stringapresa;
    miaclasse myobj;
    
    stringapresa=myobj.getValue();
    
    
    
    }

    Grazie a tutti quelli che mi sapranno rispondere e chiedo scusa per l'eventuale stupidità della domanda

  2. #2
    In queste classi/metodi ci sono molti errori di sintassi e logici, volevo provare a rispondere alla tua domanda ma si dovrebbe partire proprio da 0...
    Ad esempio la prima classe"corretta" (o quasi) si scrive in questo modo:
    codice:
    public class miaclasse {
    
           private String s;
    
           public miaclasse (){
    
           s ="stringa vuota";
           }
           
           public void setval(String ins){
    
           s=ins;
          }
    
          public String getValue(){
       
          return s;
         }
    
    }

    Inoltre non puoi inserire del codice direttamente nella classe come fai nelle classi Main e altraclase ma hai bisogno dei metodi che lo contengono.

    Ipotizzando che non ci siano errori di sintassi un altro errore è che nel metodo altraclasse l'istruzione "miaclasse myobj;" crea una variabile di tipo miaclasse ma non la istanzia quindi non potrai utilizzare in nessun modo l'istruzione successiva "stringapresa=myobj.getValue();" per ovviare a questo errore devi instanziare un oggetto in questo modo

    codice:
    miaclasse myobj = new miaclasse();
    adesso hai un oggetto su cui puoi sia settare che prelevare dati.

    Inoltre non passando un riferimento dell'oggetto myobj creato nel metodo main non hai accesso alla stringa settata nel main.

    Per fare cio che ti serve ci sono molteplici modi in base al tuo obbiettivo.... forse non ti è molto chiara la programmazione ad oggetti per cui ti conviene leggere qualche guida a riguardo e sopratutto utilizzare un IDE come eclipse o netbeans, potrebbe aiutarti molto....

  3. #3
    Innanzitutto ti ringrazio molto per la risposta, sei stato molto gentile. Ora cercherò di essere più chiaro su ciò che vorrei sapere.
    Hai ragione che non mi è molto chiara la programmazione a oggetti, per questo chiedo aiuto. Sulla sintassi del codice mi scuso, il mio obiettivo è quello di ottenere in questa porzione di codice :

    codice:
    stringapresa=myobj.getValue();
    che la variabile stringapresa assuma il valore di myobj, anche se l'oggetto myobj è stato istanziato in un'altra classe, per questo non l'ho istanziato ma l'ho solo dichiarato nella classe altraClasse.
    Tutto questo è perchè vorrei evitare di usare variabili globali che va contro la logica della programmazione ad oggetti.

    Ringrazio ancora in anticipo per le eventuali risposte

  4. #4
    Utente di HTML.it L'avatar di Nikopol
    Registrato dal
    Jan 2011
    Messaggi
    120
    Ciao, prima di tutto volevo darti un consiglio, abituati a rispettare le convenzioni java:
    1)i nomi delle classi vanno scritte con la prima lettera maiuscola mentre variabili e metodi con la prima minuscola.
    2)se un nome è composto da più parole allora la prima lettera di ogni parola va scrita maiuscola(ES: MiaClasse o miaVariabile);fanno eccezioni i package che vanno scritti interamente in minuscoloo (ES: miopackage) e le enumeriche/costanti che vanno scritte tutte in maiuscolo e nel caso ci siano più parole vanno separate con l'underscore (ES: MIA_ENUMERICA, MIA_COSTANTE).
    3) cerca di dare sempre nomi significativi alle variabili: s e ins non sono nomi molto esplicativi.
    4) i nomi dei metodi get/set dovrebbero essere formati da get/set più il nome dell'attributo a cui vuoi accedere o modificare.

    ES:
    codice:
    public class MiaClasse {
    
            private String value;
    
            public MiaClasse (){
                value ="stringa vuota";
            }
    
            public void setValue(String aValue){
                value=aValue;
            }
            // oppure
            public void setValue(String value){
                this.value=value;
            }
    
            public String getValue(){
                return value;
            }
    }
    Toranando al tuo problema: per poter accedere all'oggetto myobj all'interno di altraclasse, devi avere un suo riferimento; glielo puoi passare tramite il costruttore oppure tramite un metodo
    ES tramite costruttore:
    codice:
    public class AltraClasse {
         public AltraClasse(MiaClasse myObj) {
             String stringaPresa;
             stringaPresa=myObj.getValue();
             //fai qualcosa con  stringaPresa
         }
     }
    e nel Main:

    codice:
             MiaClasse myObj = new MiaClasse();
             myObj.setValue("stringa impostata");
             AltraClasse altroObj = new AltraClasse(myObj);
    Ultima modifica di Nikopol; 27-07-2014 a 23:24
    La Guida Galattica è infallibile.
    È la realtà, spesso, ad essere inesatta.

  5. #5
    Figurati non c'è problema.... Nikopolti ha già risposto a tutto io vorrei aggiungere soltanto una cosa

    Tutto questo è perchè vorrei evitare di usare variabili globali che va contro la logica della programmazione ad oggetti.
    Questa affermazione è fals; le variabili globali o meglio statiche di una classe se hanno un buon motivo per essere tali non sono scorrette da usare anzi...

    Comunque tutto dipende dal'obbiettivo finale.

  6. #6
    Grazie Nikopol sei stato molto esaustivo. Ma non mi è chiara un ultima cosa : Se nella classe A instanzio l'oggetto ogg e setto suoi parametri, posso nella classe B o C recuperare i parametri di ogg?

  7. #7
    Utente di HTML.it L'avatar di Nikopol
    Registrato dal
    Jan 2011
    Messaggi
    120
    Si puoi farlo, ma la classe B o C devono sapere a quale oggetto devi accedere e per saperlo devono avere un riferimento a ogg. Quindi o passi il riferimento al costruttottore oppure a un metodo. Guarda meglio l'esempio che ti ho fatto nell'altro post (Main e AltraClasse).
    La Guida Galattica è infallibile.
    È la realtà, spesso, ad essere inesatta.

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.