Menu
Coddy logo textTech

Méthodes Getter et Setter

Fait partie de la section Programmation Orientée Objet du Journey Java de Coddy — leçon 11 sur 87.

Les getters et les setters sont des méthodes qui fournissent un accès contrôlé aux champs privés. Un getter récupère la valeur d'un champ, tandis qu'un setter la modifie.

La convention de nommage suit un modèle standard : le préfixe get ou set suivi du nom du champ avec sa première lettre en majuscule.

public class Product {
    private String name;
    private double price;
    
    // Getter pour name
    public String getName() {
        return name;
    }
    
    // Setter pour name
    public void setName(String name) {
        this.name = name;
    }
    
    // Getter pour price
    public double getPrice() {
        return price;
    }
    
    // Setter avec validation
    public void setPrice(double price) {
        if (price >= 0) {
            this.price = price;
        }
    }
}

Le véritable pouvoir des setters est la capacité d'ajouter une logique de validation. Dans l'exemple ci-dessus, setPrice n'accepte que des valeurs non négatives, protégeant ainsi l'objet contre les données invalides.

Pour les champs boolean, les accesseurs utilisent généralement le préfixe is au lieu de get :

private boolean active;

public boolean isActive() {
    return active;
}

Vous pouvez également créer des champs en lecture seule en fournissant uniquement un getter, ou des champs en écriture seule en fournissant uniquement un setter. Cela vous donne un contrôle précis sur la manière dont le code externe interagit avec les données de votre objet.

challenge icon

Défi

Facile

Construisons un convertisseur de Temperature qui démontre la puissance des getters et setters avec une logique de validation.

Vous allez créer deux fichiers pour organiser votre code :

  • Temperature.java : Définissez une classe Temperature qui stocke une valeur de température en Celsius. La classe doit avoir :
    • Un champ privé celsius (double)
    • Un champ privé valid (boolean) qui suit si la température est physiquement possible
    • Un getter getCelsius() qui retourne la valeur celsius
    • Un setter setCelsius() qui n'accepte que des valeurs supérieures ou égales au zéro absolu (-273.15). Si la valeur est valide, définissez valid à true ; sinon, ne modifiez pas celsius et définissez valid à false
    • Un getter isValid() pour le champ booléen (rappelez-vous : les getters booléens utilisent le préfixe is)
    • Un getter getFahrenheit() qui convertit et retourne la température en Fahrenheit en utilisant la formule : (celsius * 9/5) + 32
  • Main.java : Créez un objet Temperature, lisez une valeur celsius en entrée, utilisez le setter pour la définir, puis affichez si la température est valide et son équivalent en Fahrenheit. Formatez votre sortie sur deux lignes :
    • Valid: true ou Valid: false
    • Fahrenheit: X.X (affichant une décimale)

Vous recevrez une entrée : une valeur double représentant une température en Celsius.

Pour formater la sortie Fahrenheit avec une décimale, vous pouvez utiliser String.format("%.1f", value).

Aide-mémoire

Les getters et setters sont des méthodes qui fournissent un accès contrôlé aux champs privés. Un getter récupère la valeur d'un champ, tandis qu'un setter la modifie.

La convention de nommage suit un modèle standard : le préfixe get ou set suivi du nom du champ avec sa première lettre en majuscule.

public class Product {
    private String name;
    private double price;
    
    // Getter pour name
    public String getName() {
        return name;
    }
    
    // Setter pour name
    public void setName(String name) {
        this.name = name;
    }
    
    // Getter pour price
    public double getPrice() {
        return price;
    }
    
    // Setter avec validation
    public void setPrice(double price) {
        if (price >= 0) {
            this.price = price;
        }
    }
}

Les setters peuvent inclure une logique de validation pour protéger les objets contre les données invalides. Dans l'exemple ci-dessus, setPrice n'accepte que des valeurs non négatives.

Pour les champs boolean, les getters utilisent le préfixe is au lieu de get :

private boolean active;

public boolean isActive() {
    return active;
}

Vous pouvez créer des champs en lecture seule en fournissant uniquement un getter, ou des champs en écriture seule en fournissant uniquement un setter.

Essayez vous-même

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        double celsiusInput = scanner.nextDouble();
        
        // TODO: Créer un objet Temperature
        
        // TODO: Utiliser le setter pour définir la valeur en celsius
        
        // TODO: Afficher si la température est valide (format: "Valid: true" ou "Valid: false")
        
        // TODO: Afficher l'équivalent en Fahrenheit (format: "Fahrenheit: X.X")
        // Astuce: Utiliser String.format("%.1f", value) pour une décimale
    }
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Programmation Orientée Objet