Menu
Coddy logo textTech

Metodi getter e setter

Fa parte della sezione Programmazione orientata agli oggetti del percorso Java di Coddy. Lezione 11 di 87.

I getter e i setter sono metodi che forniscono un accesso controllato ai campi privati. Un getter recupera il valore di un campo, mentre un setter lo modifica.

La convenzione di denominazione segue uno schema standard: il prefisso get o set seguito dal nome del campo con la prima lettera maiuscola.

public class Product {
    private String name;
    private double price;
    
    // Metodo di accesso per name
    public String getName() {
        return name;
    }
    
    // Metodo di modifica per name
    public void setName(String name) {
        this.name = name;
    }
    
    // Metodo di accesso per price
    public double getPrice() {
        return price;
    }
    
    // Metodo di modifica con validazione
    public void setPrice(double price) {
        if (price >= 0) {
            this.price = price;
        }
    }
}

Il vero potere dei setter è la possibilità di aggiungere una logica di convalida. Nell'esempio precedente, setPrice accetta solo valori non negativi, proteggendo l'oggetto da dati non validi.

Per i campi boolean, i getter usano in genere il prefisso is invece di get:

private boolean active;

public boolean isActive() {
    return active;
}

Puoi anche creare campi di sola lettura fornendo solo un getter, oppure campi di sola scrittura fornendo solo un setter. Questo ti dà un controllo preciso su come il codice esterno interagisce con i dati del tuo oggetto.

challenge icon

Sfida

Facile

Costruiamo un convertitore di Temperature che dimostra la potenza dei getter e dei setter con una logica di convalida.

Creerai due file per organizzare il codice:

  • Temperature.java: definisci una classe Temperature che memorizza un valore di temperatura in Celsius. La classe deve avere:
    • Un campo privato celsius (double)
    • Un campo privato valid (boolean) che tiene traccia del fatto che la temperatura sia fisicamente possibile
    • Un getter getCelsius() che restituisce il valore in celsius
    • Un setter setCelsius() che accetta solo valori pari o superiori allo zero assoluto (-273.15). Se il valore è valido, imposta valid su true; altrimenti, non modificare celsius e imposta valid su false
    • Un getter isValid() per il campo booleano (ricorda: i getter booleani usano il prefisso is)
    • Un getter getFahrenheit() che converte e restituisce la temperatura in Fahrenheit usando la formula: (celsius * 9/5) + 32
  • Main.java: crea un oggetto Temperature, leggi un valore in celsius come input, usa il setter per impostarlo, poi stampa se la temperatura è valida e il suo equivalente in Fahrenheit. Formatta l'output su due righe:
    • Valid: true oppure Valid: false
    • Fahrenheit: X.X (con una cifra decimale)

Riceverai un input: un valore double che rappresenta una temperatura in Celsius.

Per formattare l'output in Fahrenheit con una cifra decimale, puoi usare String.format("%.1f", value).

Provalo tu

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        double celsiusInput = scanner.nextDouble();
        
        // TODO: Crea un oggetto Temperature
        
        // TODO: Usa il setter per impostare il valore in gradi Celsius
        
        // TODO: Stampa se la temperatura è valida (formato: "Valid: true" o "Valid: false")
        
        // TODO: Stampa il valore equivalente in gradi Fahrenheit (formato: "Fahrenheit: X.X")
        // Suggerimento: usa String.format("%.1f", value) per ottenere una cifra decimale
    }
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore Java online