Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 30
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2009
    residenza
    Roma
    Messaggi
    371

    attributi privati, è buona norma usare getCampo()???

    Data una classe che ha dei campi privati è buona norma mettere sempre un metodo per conoscere il dato(getCampo()) anche se probabilmente non servirà a delle altre classi?

    ad esempio io ho una classe che utilizza i propri campi i quali probabilmente non serviranno mai ad altre classi, è corretto procedere all'interno della classe richiamando i propri campi sempre con obj.campo invece di obj.getCampo()???

    spero di essermi spiegato

  2. #2
    Utente di HTML.it L'avatar di MatCap83
    Registrato dal
    Jun 2005
    residenza
    Firenze
    Messaggi
    1,319

    Re: attributi privati, è buona norma usare getCampo()???

    Originariamente inviato da davidinho
    Data una classe che ha dei campi privati è buona norma mettere sempre un metodo per conoscere il dato(getCampo()) anche se probabilmente non servirà a delle altre classi?

    ad esempio io ho una classe che utilizza i propri campi i quali probabilmente non serviranno mai ad altre classi, è corretto procedere all'interno della classe richiamando i propri campi sempre con obj.campo invece di obj.getCampo()???
    Ho capito il problema... All'interno di una classe solitamente la policy dei campi dovrebbe essere private (o al massimo protected), dunque non accessibile dall'esterno. Come dici è probabile che non servirà mai conoscere il valore di un certo campo all'esterno, ma se dovesse servire è necessario un metodo getCampo() così come un setCampo(xxx) per l'impostazione dei valori. Dall'interno della classe dovresti richiamare gli attributi semplicemente con il nome, o preceduto da this ovviamente, mentre dall'esterno con i metodi get/set.

    Un consiglio mio: se stai facendo un progetto per lavoro, per università, o da distribuire sul web, ti consiglio di mettere i metodi set/get, perché la classe potrebbe essere estesa in futuro, o magari potrebbe essere utilizzata diversamente da quanto ti aspettavi. Se stai sviluppando invece un qualcosa fine a se stesso puoi anche ometterli

    ciao
    "Nessuno mi ha visto farlo, e non puoi provarlo in nessun modo!" (Bart Simpson)

    >>> www.ombresulweb.com <<<

  3. #3
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Se il settaggio del dato deve seguire un certo procedimento ti conviene un metodo set in modo da non dover riscrivere il codice ogni volta in ogni singolo metodo che usa quel campo...
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    613

    Re: Re: attributi privati, è buona norma usare getCampo()???

    Originariamente inviato da MatCap83
    All'interno di una classe solitamente la policy dei campi dovrebbe essere private (o al massimo protected), dunque non accessibile dall'esterno.
    Ciò che è protected è accessibile dall'esterno, visto che è visibile dalle sotto-classi e qualsiasi classe può estendere qualsiasi altra; a meno che ovviamente la classe contenente qualcosa protected non sia dichiarata final, ma è un caso che ovviamente non ha concettualmente senso.

  5. #5
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Ciò che è protected non è accessibile dall'esterno, è accessibile dalle classi derivate, cosa che è completamente diversa!
    Solo ciò che è public è accessibile dall'esterno...
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    613
    Originariamente inviato da Scara95
    Ciò che è protected non è accessibile dall'esterno, è accessibile dalle classi derivate, cosa che è completamente diversa!
    Solo ciò che è public è accessibile dall'esterno...
    E dall'esterno cosa ti vieta di estendere la classe e visualizzare ciò che è protected?
    Con "all'esterno" s'intende "una classe che non conosci", e questo vale tanto per public quanto per protected: che la classe esterna estenda o meno la tua, poco importa, chi utilizza campi/metodi protected deve sempre pensare con l'ottica di chi sta fornendo qualcosa a qualcuno che non conosce (o che conosce parzialmente, nel caso di sotto-classi e protected). Forse l'utente sopra intendeva package-private, il modificatore d'accesso di default, ed effettivamente avrebbe senso perché è il modificatore d'accesso più vicino a private (protected è meno restrittivo del default).

  7. #7

    ..

    Creare le variabili come "private" e poi creare i metodi public get/set è abbastanza equivalente al creare le variabili direttamente "public". Dipende tutto dal contesto, come ti hanno già consigliato, se devi realizzare un applicativo per lavoro è abbastanza consigliato(ma non obbligatorio) creare i metodi get/set....se stai realizzando un'applicazione x i fatti tuoi allora puoi gestire la situazione nel modo in cui ti viene più comodo.
    Ps obj.campo nella stessa classe va bene. AltraClasse.obj.campo è un po meno simpatica come cosa
    Esistono solo 10 tipi di persone al mondo.....quelli che conoscono il binario e quelli che non lo capiscono!

  8. #8

    Re: attributi privati, è buona norma usare getCampo()???

    Originariamente inviato da davidinho
    Data una classe che ha dei campi privati è buona norma mettere sempre un metodo per conoscere il dato(getCampo()) anche se probabilmente non servirà a delle altre classi?
    Se leggi qui: Legge di Demetra
    e qui: Information hiding dovresti trarre le opportune conclusioni.

    Nei vari framework MVC, incluso Java EE, noterai che ci sono astrazioni che non implementano l'information hiding ne' rispettano le leggi di Demetra.
    ...

  9. #9
    Utente bannato
    Registrato dal
    Apr 2012
    Messaggi
    510
    Se proprio sei sicuro che l' utente della classe non ha la necessità di prendere il valore di quel campo, a mio parere puoi evitare di fare un metodo getter.
    Solo i campi significativi vanno esposti all' utente.

    Inoltre l' incapsulamento vero e proprio non è garantito se ci sono metodi getter per oggetti mutable.Se ti è proprio indispensabile che l' utente non cambi i campi interno dell' oggetto, nel getter puoi restituire il clone dell' oggetto.

  10. #10
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: ..

    Originariamente inviato da SyLaR_is_back
    Creare le variabili come "private" e poi creare i metodi public get/set è abbastanza equivalente al creare le variabili direttamente "public".
    Non proprio. Usando un setter hai la certezza di poter effettuare dei controlli prima di accettare il valore. Con un attributo pubblico non c'è alcun controllo e puoi assegnare un valore qualsiasi (e potenzialmente errato).
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

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.