1 réponse
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.
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 :
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.
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.