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

    Metodo di assegnazione variabile implicito alle classi? dubbio inside

    Salve,
    purtroppo mi sto addentrando adesso in java e vi chiedo conferma di questo pezzo di codice.

    Scrivere questo:
    codice:
    Message message = new Message(7);
    message._user = user;
    ... è uguale a scrivere questo?
    codice:
    Message message = new Message(7);
    message.setUser(user) ; // sottointeso che esista un metodo setUser nella classe Message
    Bò....

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

    Re: Metodo di assegnazione variabile implicito alle classi? dubbio inside

    Originariamente inviato da PazZII
    Salve,
    purtroppo mi sto addentrando adesso in java e vi chiedo conferma di questo pezzo di codice.

    Scrivere questo:
    codice:
    Message message = new Message(7);
    message._user = user;
    ... è uguale a scrivere questo?
    codice:
    Message message = new Message(7);
    message.setUser(user) ; // sottointeso che esista un metodo setUser nella classe Message
    Bò....
    Se il metodo setUser è una cosa del genere, sì:
    codice:
    public void setUser(User u) {
      _user = u;
    }
    Tuttavia, accedere direttamente agli attributi è MALE!
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    sì cioè, il punto è che in questa classe Message non c'è un metodo setUser e per assegnare un valore all'attributo _user viene usata questa sintassi
    codice:
    message._user = user;
    Visto che non ho mai visto fare una cosa del genere vi volevo chiedere e volevo solo avere conferma se scrivere in quel modo è l'equivalente di utilizzare un metodo setUser scritto ad hoc per assegnare un valore a quella variabile di classe.

    Scrivere quindi direttamente message._user = user; non è un pò "brutto"?
    Ma quindi funziona?
    E' una "scorciatoia" per assegnare un valore a quella variabile di classe?

  4. #4
    Non è più sicuro settarla privata quella variabile per poi permettere ad un metodo di classe di poterla cambiare?

  5. #5
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da PazZII
    Scrivere quindi direttamente message._user = user; non è un pò "brutto"?
    Ma quindi funziona?
    E' una "scorciatoia" per assegnare un valore a quella variabile di classe?
    Se _user è una variabile pubblica funziona... Il "problema" è che così facendo non c'è controllo su quello che fai. Ad esempio, un ipotetico metodo setUser(User u) potrebbe verificare se 'u' è non null e/o rappresentare un oggetto valido e se c'è qualcosa che non va lanciare un'eccezione. Questi controlli non vengono eseguiti se invece accedi direttamente al campo!

    Originariamente inviato da PazZII
    Non è più sicuro settarla privata quella variabile per poi permettere ad un metodo di classe di poterla cambiare?
    Esattamente.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  6. #6
    Originariamente inviato da Alex'87
    Se _user è una variabile pubblica funziona... Il "problema" è che così facendo non c'è controllo su quello che fai. Ad esempio, un ipotetico metodo setUser(User u) potrebbe verificare se 'u' è non null e/o rappresentare un oggetto valido e se c'è qualcosa che non va lanciare un'eccezione. Questi controlli non vengono eseguiti se invece accedi direttamente al campo!

    Esattamente.
    Perfetto, hai confermato quello che pensavo.
    Infatti stavo criticando uno script che avevo trovato e mi chiedevo del perchè avessero fatto in quel modo... bà... lo cambio con un metodo, è più sicuro.
    Grazie!

  7. #7
    Utente di HTML.it L'avatar di pan
    Registrato dal
    May 2000
    Messaggi
    141
    Il sistema che stai correggendo, a quanto mi sembra, rinuncia all'incapsulamento .
    Manutenere un software di questo tipo costa molto più della manutenzione di uno che tiene la logica di funzionamento incapsulata.

  8. #8
    Originariamente inviato da pan
    Il sistema che stai correggendo, a quanto mi sembra, rinuncia all'incapsulamento .
    Manutenere un software di questo tipo costa molto più della manutenzione di uno che tiene la logica di funzionamento incapsulata.
    Sì infatti non è eccezionale.
    E la sua correzione non è agevole proprio perchè non è stato pensato bene dall'inizio.
    Ma ce la faremo

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.