Encapsulation

badredine1 Messages postés 66 Date d'inscription   Statut Membre Dernière intervention   -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

le principe d'encapsulation et le suivant:"c'est le fait que les methodes sont public et les attributs sont privé".
qui peut me expliquer a quoi sert le principe d'encapsulation.

1 réponse

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Dans ton code tu gères des données, pour éviter qu'on les manipules n'importe comment tu vas cacher les attributs en les déclarant privé et créer des méthodes qui se chargeront de manipuler les données et conserver la cohérence de l'objet.

Exemple simple, tu gères dans une classe un tableau qui peux contenir entre 0 et 10 valeurs, tu vas donc avoir deux attributs : la taille et le tableau. Ainsi qu'une méthode d'ajout d'un entier.

public class Array
{
    private int size = 0;
    private int[] array = new int[10];

    public void add(int n)
    {
        if (size==10)
            throw new IllegalStateException("Array is full");
        else
        {
            array[size]=n;
            size++;
        }
    }
}

Que se passerait il sans encapsulation ? On pourrait directement manipuler les données de la classe Array et potentiellement faire n'importe quoi avec. Exemples :

Array array = ...
array.size = 42;
array.add(4); // ArrayIndexOutOfBoundsException


Array array = ...
array.tab = null;
array.add(4); // NullPointerException

Il est donc important que les données soient protégées contre ce type de modification sauvages en autorisant uniquement les méthodes à changer l'état de l'objet.
0