Encapsulation

Fermé
badredine1 Messages postés 66 Date d'inscription vendredi 7 février 2014 Statut Membre Dernière intervention 9 octobre 2014 - 15 févr. 2014 à 20:30
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 - 15 févr. 2014 à 20:55
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 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
15 févr. 2014 à 20:55
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