Encapsulation: private fields, getters, setters · Encapsulation : champs privés, getters, setters
Protect your data
- Encapsulation means hiding an object's data and only changing it through methods.
- This keeps the data safe. Other code cannot put a bad value into it.
- The main tools are the words
privateandpublic.
Protéger vos données
- L'encapsulation consiste à cacher les données d'un objet et à ne les modifier que via des méthodes.
- Cela garde les données en sécurité. D'autres codes ne peuvent pas y mettre une mauvaise valeur.
- Les outils principaux sont les mots
privateetpublic.
private fields
- Mark instance variables
privateso code outside the class cannot touch them directly. - Methods inside the same class can still use them.
- This is the normal style for AP CSA: fields are
private.
Champs private
- Marquez les variables d'instance
privateafin que le code hors de la classe ne puisse pas les toucher directement. - Les méthodes à l'intérieur de la même classe peuvent encore les utiliser.
- C'est le style normal pour AP CSA : les champs sont
private.
public class BankAccount {
private double balance; // hidden from outside code
public BankAccount(double start) {
this.balance = start;
}
}
Accessors (getters)
- A field is private, so we add a
publicmethod to read it. - A method that returns a field is called an accessor or getter.
- It usually starts with
get, likegetBalance().
Accesseurs (getters)
- Un champ étant private, nous ajoutons une méthode
publicpour le lire. - Une méthode qui retourne un champ est appelée un accesseur ou getter.
- Elle commence généralement par
get, commegetBalance().
public class BankAccount {
private double balance;
public BankAccount(double start) {
this.balance = start;
}
public double getBalance() {
return this.balance;
}
}
Mutators (setters)
- A method that changes a field is called a mutator or setter.
- It can check the new value first and refuse a bad one.
- Below,
depositignores a negative amount, so the balance stays safe.
Mutateurs (setters)
- Une méthode qui modifie un champ est appelée un mutateur ou setter.
- Elle peut vérifier la nouvelle valeur d'abord et refuser une mauvaise.
- Ci-dessous,
depositignore un montant négatif, donc le solde reste sûr.
public class BankAccount {
private double balance;
public BankAccount(double start) {
this.balance = start;
}
public void deposit(double amount) {
if (amount > 0) {
this.balance = this.balance + amount;
}
}
public double getBalance() {
return this.balance;
}
}
static vs instance
- An instance field belongs to one object. Each object has its own.
- A
staticfield belongs to the class itself — it is shared by all objects. - Below,
countrises by 1 every time anyRobotis built.
static vs instance
- Un champ instance appartient à un seul objet. Chaque objet en a son propre.
- Un champ
staticappartient à la classe elle-même — il est partagé par tous les objets. - Ci-dessous,
countaugmente de 1 à chaque fois qu'unRobotest construit.
public class Robot {
private static int count = 0; // shared by all robots
public Robot() {
count = count + 1;
}
public static int getCount() {
return count;
}
}
toString()
toString()returns text that describes the object.- Java calls it automatically when you print the object or join it with
+. - It takes no parameters and returns a
String.
toString()
toString()retourne du texte qui décrit l'objet.- Java l'appelle automatiquement lorsque vous imprimez l'objet ou le joignez avec
+. - Il ne prend aucun paramètre et retourne une
String.
public class Point {
private int x;
private int y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
public String toString() {
return "(" + this.x + ", " + this.y + ")";
}
}
Common mistakes
- Make fields
privateand reach them through getters and setters. - A setter can check a value before storing it.
Erreurs courantes
- Rendez les champs
privateet accédez-y via des getters et setters. - Un setter peut vérifier une valeur avant de la stocker.
Now you try
- Fill in each class so its private data is changed only through safe methods.
- A hidden Harness builds the object, calls the methods, and checks the results.
- Press Run to compile, then Check answer.
À vous maintenant
- Remplissez chaque classe pour que ses données privées soient modifiées uniquement via des méthodes sûres.
- Un Harness caché construit l'objet, appelle les méthodes et vérifie les résultats.
- Appuyez sur Run pour compiler, puis sur Check answer.
Complete BankAccount. Keep balance private. deposit(amount) adds the amount only if it is greater than 0. withdraw(amount) subtracts only if the amount is greater than 0 and · et not more than the balance (no overdraft). getBalance() returns the balance. · Complétez BankAccount. Gardez balance privé. deposit(amount) ajoute le montant seulement s'il est supérieur à 0. withdraw(amount) soustrait seulement si le montant est supérieur à 0 et pas plus que le solde (pas de découvert). getBalance() retourne le solde.
Click Run to see the output here. · Cliquez sur Exécuter pour voir le résultat ici.
Complete Temperature. The constructor stores an int degrees in a private field. toString() returns the degrees followed by C — for 21 it returns 21C. · Complétez Temperature. Le constructeur stocke un int degrees dans un champ privé. toString() retourne les degrés suivis de C — pour 21 il retourne 21C.
Click Run to see the output here. · Cliquez sur Exécuter pour voir le résultat ici.
Complete Widget. A private static field · champ count starts at 0. Every time a Widget is built, the constructor adds 1 to count. The static method · méthode getCount() returns how many widgets have been built. · Complétez Widget. Un champ privé static count commence à 0. Chaque fois qu'un Widget est construit, le constructeur ajoute 1 à count. La méthode static getCount() retourne combien de widgets ont été construits.
Click Run to see the output here. · Cliquez sur Exécuter pour voir le résultat ici.