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.
Sfida
FacileCostruiamo 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, impostavalidsu true; altrimenti, non modificare celsius e impostavalidsu false - Un getter
isValid()per il campo booleano (ricorda: i getter booleani usano il prefissois) - Un getter
getFahrenheit()che converte e restituisce la temperatura in Fahrenheit usando la formula:(celsius * 9/5) + 32
- Un campo privato
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: trueoppureValid: falseFahrenheit: 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
}
}
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
1Fondamenti della programmazione a oggetti
File esterniIntroduzione alla programmazione a oggettiClassi e oggettiLa parola chiave thisMetodiCampi (attributi)Metodo costruttoreSovraccarico dei costruttoriRipasso - Calcolatrice semplice4Ereditarietà
Ereditarietà di base (extends)La parola chiave superSovrascrittura dei metodi (@Override)Concatenamento dei costruttoriLa classe ObjectEreditarietà singola e multilivelloPerché non esiste l'ereditarietà multipla delle classiRiepilogo: gerarchia dei dipendenti7Metodi speciali e classe Object
Metodo toString()equals() e hashCode()Metodo clone()compareTo() e ComparableInterfaccia ComparatorRiepilogo - Ordinamento personalizzato2Modificatori di accesso e incapsulamento
Panoramica dei livelli di accessoMetodi getter e setterNascondimento delle informazioniLa parola chiave finalRiepilogo - Gestore di conti bancari5Polimorfismo
Nozioni di base sull'overloading dei metodiOverride dei metodi (a runtime)Upcasting e downcastingL'operatore instanceofClassi e metodi astrattiRiepilogo - Calcolatore di forme8Concetti avanzati di OOP
Composizione vs ereditarietàAggregazione vs composizioneClassi interne, annidate e anonimeEnum e metodi degli EnumRecord (Java 16+)Classi sealed (Java 17+)11Modelli di progettazione Parte 1
Introduzione ai modelli di progettazionePattern SingletonPattern FactoryPattern BuilderPattern ObserverPattern Strategy3Proprietà di classe e membri statici
Variabili di istanza e staticheMetodi staticiBlocchi staticiCostanti (static final)Riepilogo - Contatore e utility6Interfacce e classi astratte
Introduzione alle interfacceImplementazione delle interfacceImplementazione di più interfacceMetodi default e static nelle interfacceClassi astratte e interfacce a confrontoInterfacce funzionaliRiepilogo: sistema di pagamento9Tipi generici
Introduzione ai tipi genericiClassi genericheMetodi genericiParametri di tipo con limitiCaratteri jolly (?, extends, super)Riepilogo - Contenitore generico12Modelli di progettazione – Parte 2
Pattern CommandPattern AdapterPattern DecoratorPattern Template MethodPattern StatePattern CompositePattern IteratorEsercitati da solo: Compilatore Java online