Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 35

Discussione: set e get in java

  1. #1

    set e get in java

    Salve,
    sto iniziando a studiare il Java.

    Ho visto che all'interno delle classi vengono inseriti i cosidetti set e get, non ho ben capito a cosa servono e per quale motivo vanno inseriti all'interno di una classe.

    Potete darmi qualche spiegazione per favore?

    Grazie

  2. #2
    Utente di HTML.it L'avatar di ZannaZ
    Registrato dal
    May 2006
    Messaggi
    82
    Sono i metodi che servono per settare e restituire campi privati/protected della classe.
    Infatti, per il principio dell'incapsulamento, è sempre meglio tentare di nascondere la struttura interna della propria classe all'esterno, così che l'utilizzo di una classe non dipenda da come essa è stata implementata (la struttura interna può venire cambiata nel corso della manutenzione), ma dai metodi che mette a disposizione.

  3. #3
    OK,
    mi hai chiarito il concetto.
    Deduco che quindi non sono obbligatori, quasi dei best practice?

    Giusto?

  4. #4
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    programmando puoi fare tutto quello che vuoi.. puoi anche non usare le classi e mettere tutto in una sola classe lunga 10000 righe di codice.. non è il modo corretto ma nessuno ti vieta di farlo..
    idem per i metodi che dici tu.. non sono obbligatori...
    puoi benissimo leggere direttamente le variabili di una classe mettendole public..
    ma se vuoi essere un buon programmatore li devi mettere...
    se non li usi ti verrà detto che il tuo programma fa (giustamente) schifo..
    e se ci metterà mano qualcun altro sicuramente te lo correggerà..
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  5. #5
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    Deduco che quindi non sono obbligatori, quasi dei best practice?
    Non sono obbligatori per il compilatore...
    Ma sono fortementi consigliati.
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  6. #6
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543
    se tu hai
    Classe{
    private int varaibile = 5;
    }
    e non crei dei metodi
    public int getVariabile(){ return this.varaibile }
    e
    public void setVariabile(int val){ this.varaibile= val}
    non potrai mai accedere alla variabile...se tu avessi
    Classe{
    int varaibile = 5;
    }
    non avrebbe senso creare dei metodi di recupero e modifica della variabile poichè ti pasterebbe fare
    Class a = newClass();
    a.variabile = 6;

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

  7. #7
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    Originariamente inviato da oronze
    se tu avessi
    Classe{
    int varaibile = 5;
    }
    non avrebbe senso creare dei metodi di recupero e modifica della variabile poichè ti pasterebbe fare
    Class a = newClass();
    a.variabile = 6;
    scusa ma non mi trovi d'accordo.. questa situazione non dovresti mai averla..
    sta al programmatore mettere private la variabile e creare i metodi di accesso get e set..
    proprio per i motivi che ho citato prima..
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  8. #8
    Grazie a tutti, mi avete aiutato ed ho capito bene.

    Grazie a tutti!!!!

  9. #9
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543
    Originariamente inviato da morphy79
    scusa ma non mi trovi d'accordo.. questa situazione non dovresti mai averla..
    sta al programmatore mettere private la variabile e creare i metodi di accesso get e set..
    proprio per i motivi che ho citato prima..
    senza ombra di dubbio...era un esempio per spiegare...visto che ormai la OOP si è capito che è una buona cosa come mai quelli della sun non creano una var privata "particolare" sulla quale si può usare già dei metodi get e set standard?....qualcosa tipo
    private special int prova1
    private int prova2
    in modo da avere standard due metodi getNOME_VARIABILE() e setNOME_VARIABILE(int n) ma solo sulla variabile special....se poi uno ha esigenze particolari fa un overloading di set :P
    idea stupida?
    talvolta (ma anche con php) mi tocca creare 5/6 metodi get e set per tutti i campi privati

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

  10. #10
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    Originariamente inviato da oronze
    ....come mai quelli della sun non creano una var privata "particolare" sulla quale si può usare già dei metodi get e set standard?...
    Immagino che alla sun soffrano di qualche forma di pigrizia...
    Fatto sta che qualunque bean che si rispetti ha i campi privati e i suoi setter e getter
    E Eclipse, come immagino NetBeans, crea in modo automatico i setter e i getter

    Evidentemente nel mondo Java della semplificazione che chiederesti se ne sente la necessità molto meno che in php...

    Il fatto che poi getter e setter debbano convivere con forme del tipo NomeClasse.nomeCampo è inevitabile... non dimentichiamoci dei campi protected...
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

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.