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.

  1. Notions
  2. Questions
  3. Ranger et relier
  4. 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, Main et Compte sont 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 Compte

    private limite 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 Compte et secret() has private access in Compte.

  • 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 private n'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), protected et public.

  • Pourquoi déclare-t-on les attributs private plutôt que public et on ajoute des méthodes ?

    • Un attribut private occupe 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.