Vai al contenuto principale
Pubblicato il

Proprietà in Java

Condividi:

Introduzione

In Java, l'incapsulamento è uno dei pilastri fondamentali della programmazione orientata agli oggetti. Attraverso le proprietà, usando i metodi getter e setter, questo pilastro prende forma concreta. Queste funzioni consentono un controllo granulare su come i dati di un oggetto vengono acceduti e modificati.

Perché usare le Proprietà?

1. Controllo sui dati

È possibile validare o modificare i dati prima che vengano memorizzati o restituiti.

2. Flessibilità

Le modifiche interne ai metodi getter e setter possono essere apportate senza alterare il modo in cui un oggetto viene utilizzato esternamente.

3. Sicurezza

Limita l'accesso diretto ai campi dati, garantendone l'integrità.

Come Implementare

Un'implementazione comune prevede la dichiarazione di un campo privato con metodi pubblici per ottenere (get) e impostare (set) i valori.

public class Esempio {
  private String nome;

  // Getter
  public String getNome() {
    return nome;
  }

  // Setter
  public void setNome(String nome) {
    if(nome != null && !nome.trim().isEmpty()) {
      this.nome = nome;
    } else {
      throw new IllegalArgumentException("Nome non valido");
    }
  }
}

Best Practice nell'uso delle Proprietà

  1. Validazione dei Dati: Valida sempre i dati nel metodo setter prima di assegnarli al campo.
  2. Incapsulamento Coerente: Evita di esporre i campi direttamente. Utilizza getter e setter.
  3. Documentazione: Documenta la funzione e i vincoli di ogni proprietà.
  4. Nomenclatura Conveniente: Usa convenzioni di denominazione coerenti per le proprietà. In genere si usano metodi che iniziano con "get" e "set".

Esempio Pratico

Vediamo un esempio in cui implementiamo una classe Proprietà che rappresenta una persona con nome, cognome ed età.

package com.caffeinealgorithm.programaremjava;

public class Proprietà {
  private String nome = "", cognome = "";
  private int età = 28;

  public void setNome(String nome) {
    if (nome != "")
      this.nome = nome;
    else
      System.out.println("La stringa del nome non può essere vuota.");
  }

  public void setCognome(String cognome) {
    if (cognome != "")
      this.cognome = cognome;
    else
      System.out.println("La stringa del cognome non può essere vuota.");
  }

  public int getEtà() {
    return età;
  }

  public void informazioni() {
    System.out.printf("Nome: %s %s\n", nome, cognome);
  }
}

Consigli Aggiuntivi

  • Immutabilità: In certi scenari, può essere vantaggioso creare proprietà di sola lettura, rafforzando il concetto di immutabilità.
  • Performance: Fai attenzione nell'implementare logica complessa nei getter e setter, in quanto ciò può influire sulle prestazioni.
  • Proprietà Calcolate: Oltre a restituire semplicemente un campo, i getter possono essere usati per calcolare e restituire un valore basato su più campi.

Conclusione

Le proprietà, quando utilizzate correttamente, arricchiscono il codice, rendendolo sicuro, flessibile e di facile manutenzione. In Java, i metodi getter e setter sono il modo standard per implementare questa funzionalità. Padroneggiandoli, garantisci robustezza e chiarezza nelle tue applicazioni.

Happy coding!