Encapsulation et visibilité
Cacher l'état d'un objet : private, public, protected et visibilité de paquetage, accesseurs et mutateurs, invariant contrôlé par le mutateur, et référence interne à ne pas livrer, en Java.
- 27 cartes
- 4 thèmes
- Gratuit
Le programme, thème par thème
Le poids de chaque thème suit celui que lui donne l'examen.
- Notions
- Questions
- Ranger et relier
- Comprendre
Quelques cartes du deck
Encapsulation : de quoi s'agit-il ?
Voir la réponse
Principe qui regroupe l'état d'un objet et les méthodes qui le manipulent, en n'exposant à l'extérieur que ces méthodes.
L'extérieur ne touche plus aux attributs : la classe reste libre de changer sa représentation sans casser ceux qui l'utilisent.
Que répond le compilateur à ce programme d'essai ?
```java
class Compte {
private int solde;
private void secret() { }
}
public class Main {
public static void main(String[] args) {
Compte c = new Compte();
c.solde = 100;
c.secret();
}
}`- Deux erreurs
has private access in Compte - Aucune erreur,
MainetComptesont dans le même fichier - Une seule erreur, sur
c.solde - Deux avertissements, le programme s'exécute
Voir la réponse
Deux erreurs
has private access in Compteprivatelimite l'accès à la classe elle-même, même si une autre classe est dans le même fichier. Messages :solde has private access in Compteetsecret() has private access in Compte.- Deux erreurs
Pour protéger l'état d'un objet, on déclare ses attributs … et on expose des méthodes ….
Voir la réponse
Pour protéger l'état d'un objet, on déclare ses attributs private et on expose des méthodes public.
Un attribut
privaten'est lisible et modifiable que par le code de sa propre classe.Modificateur de visibilité : de quoi s'agit-il ?
Voir la réponse
Mot-clé placé devant un membre d'une classe, qui fixe quelles parties du programme peuvent l'utiliser.
Java en offre quatre niveaux :
private, aucun mot-clé (visibilité de paquetage),protectedetpublic.Pourquoi déclare-t-on les attributs
privateplutôt quepublicet on ajoute des méthodes ?- Un attribut
privateoccupe moins de mémoire qu'un attribut public - Seules ses méthodes changent l'état : la classe garantit sa cohérence
- Le compilateur refuse de compiler une classe qui a des attributs publics
- Les méthodes s'exécutent plus vite que les accès directs aux attributs
Voir la réponse
Seules ses méthodes changent l'état : la classe garantit sa cohérence
La visibilité n'agit ni sur la mémoire ni sur la vitesse : elle décide qui peut modifier l'état. C'est ce qui rend possible un invariant.
- Un attribut