[Costruttori] Prendere variabili dal costruttore

di il
5 risposte

[Costruttori] Prendere variabili dal costruttore

Buonasera ragazzi, se io ho un costruttore di una classe che prende in input un determinato path, come faccio a utilizzare quel path in un altro metodo senza darglielo come paramentro al metodo?

5 Risposte

  • Re: [Costruttori] Prendere variabili dal costruttore

    KILLERIX ha scritto:


    come faccio a utilizzare quel path in un altro metodo senza darglielo come paramentro al metodo?
    Le variabili "di istanza" (variabili non static dichiarate nella classe ma fuori da metodi/costruttori) servono appunto per mantenere lo "stato" dell'oggetto. E sono accessibili da tutti i metodi di istanza della classe.


    Questi sono concetti essenziali, stai studiando Java su un qualche libro, tutorial ecc .... o stai andando un po' a caso?
  • Re: [Costruttori] Prendere variabili dal costruttore

    Veramente a me serve prendere un parametro con cui ho creato un oggetto! Esempio, nel costruttore c'è un parametro Path e quindi al momento della creazione dell'oggetto gli do il mio percorso! Quel percorso mi serve riutilizzarlo per altri metodi che però nn prendono nessun parametro iniziale! Come posso darglielo? O meglio quale è la sintassi?

    P.s. Sto studiando Java all'università ma in 10 lezioni ha spiegato il mondo e ora vuole che facciamo due giochi in 10 gg.... Troppo ho imparato per nn aver mai fatto java xD
  • Re: [Costruttori] Prendere variabili dal costruttore

    Semplicemente utilizzi un oggetto di istanza come dice andbin, ovvero un oggetto interno alla classe, a cui poi assegni il valore che ricevi come parametro..
  • Re: [Costruttori] Prendere variabili dal costruttore

    KILLERIX ha scritto:


    P.s. Sto studiando Java all'università ma in 10 lezioni ha spiegato il mondo e ora vuole che facciamo due giochi in 10 gg.... Troppo ho imparato per nn aver mai fatto java xD
    Ok .. ok, allora un minimo di spiegazione.

    Es.
    public class TriangoloIsoscele {
        private double base;
        private double altezza;
    
        public TriangoloIsoscele(double base, double altezza) {
            this.base = base;
            this.altezza = altezza;
        }
    
        public double calcolaArea() {
            return base * altezza / 2;   // usa le variabili di istanza
        }
    }
    Le variabili di "istanza" sono:
        private double base;
        private double altezza;
    Sono nella classe ma fuori da costruttori/metodi e non sono static (se fossero static sarebbero variabili "di classe", globali, associate alla classe e non a ciascun oggetto della classe).

    Il costruttore riceve due parametri. I nomi dei parametri potrebbero essere qualunque 'b', 'a' ecc... Per convenzione, si usano generalmente gli stessi nomi dei campi (le variabili di istanza). Anche per non doversi "inventare" nomi differenti e che potrebbero poi confondere di più.

    Dal momento che nel costruttore il parametro ha lo stesso nome del campo, il parametro si dice che nasconde (shadowing) il campo. Per questo motivo, per riferirsi al campo si deve usare this.base e this.altezza.

    Le variabili di istanza le ho messe 'private', vuol dire che sono accessibili solo dall'interno della classe e non anche dall'esterno. Anche questa è una buona convenzione e principio fondamentale: quello di tenere nascosto lo stato interno degli oggetti e rendere disponibili invece soltanto i metodi atti ad operare in modo appropriato sullo stato dell'oggetto.

    Le variabili di istanza sono distinte per ciascuna istanza (oggetto) della classe. Se da qualche altra parte fai:
    TriangoloIsoscele tri1 = new TriangoloIsoscele(10, 5);
    TriangoloIsoscele tri2 = new TriangoloIsoscele(6, 4);
    Hai 2 oggetti, ciascuno ha le sue variabili di istanza base/altezza. Quindi l'oggetto referenziato da tri1 si tiene 10 e 5 e mentre l'oggetto referenziato da tri2 mantiene 6 e 4.

    Le variabili di istanza sono usabili da tutti i metodi di istanza della classe, come quel calcolaArea. Lì non è obbligatorio usare this perché non ci sono altre variabili che "nascondono" i campi.

    Se fai:
    System.out.println(tri1.calcolaArea());    // stampa 25.0
    System.out.println(tri2.calcolaArea());    // stampa 12.0
    Ti è più chiaro ora? Purtroppo però .... credo ti manchino molte altre nozioni .....
  • Re: [Costruttori] Prendere variabili dal costruttore

    Grazie mille!!! Almeno ora queste cose le ho capite!
    Purtroppo è vero: ho iniziato a programmare in java da meno di un mese, non l'ho mai fatto prima ma quest'anno il professore ha iniziato a spiegare molte cose tutte insieme e ha dato subito programmi difficilissimi!
    Ti faccio vedere la pagina: http://twiki.di.uniroma1.it/pub/Metod_prog/RS_INFO/info.html
    Io sto facendo ora come secondo homework due giochi di cui lui ha dato tutta la struttura dei metodi, delle interfacce etc e noi dobbiamo implementare tutto e abbiamo anche un programma che ci calcola la giusta esecuzione dei metodi e ci da il punteggio! E tutto questo entro il 13 di marzo e mi sto uccidendo per cercare di fare il prima possibile
Devi accedere o registrarti per scrivere nel forum
5 risposte