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 Temperature qui démontre la puissance des accesseurs et des mutateurs 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 contenir :
    • Un champ celsius privé (double)
    • Un champ valid privé (boolean) qui indique si la température est physiquement possible
    • Un accesseur getCelsius() qui renvoie la valeur en degrés Celsius
    • Un mutateur setCelsius() qui n'accepte que les valeurs supérieures ou égales au zéro absolu (-273.15). Si la valeur est valide, définissez valid sur true ; sinon, ne modifiez pas celsius et définissez valid sur false
    • Un accesseur isValid() pour le champ booléen (souvenez-vous : les accesseurs booléens utilisent le préfixe is)
    • Un accesseur getFahrenheit() qui convertit et renvoie la température en Fahrenheit à l'aide de la formule : (celsius * 9/5) + 32
  • Main.java : créez un objet Temperature, lisez une valeur en degrés Celsius en entrée, utilisez le mutateur pour la définir, puis affichez si la température est valide ainsi que son équivalent en Fahrenheit. Formatez votre sortie sur deux lignes :
    • Valid: true ou Valid: false
    • Fahrenheit: X.X (avec une décimale)

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

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

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

Entraînez-vous par vous-même : Compilateur Java en ligne