Académique Documents
Professionnel Documents
Culture Documents
3) Notion d’encapsulation
L'encapsulation est une manière de définir une classe de telle sorte que ses attributs ne puisse pas être
directement manipulés de l‘exterieur de la classe, mais seulement indirectement par l'intermédiaire des
méthodes.
Un des avantages de cette approche est la possiblité de redéfinir la représentation interne des attributs, sans
que cela affecte la manipulation externe d'un objet de cette classe.
L'encapsulation facilite donc la mise à jour des applications. On peut en voir l'intéret dans un projet de
développement réalisé par plusieurs développeurs (ce qui est généralement le cas en entreprise). Chaque
développeur est responsable d'une partie du projet. Si les classes dont il est le responsable sont proprement
encapsulées, il pourra modifier par la suite leurs représentations internes, sans que cela perturbe le travail des
autres développeurs du projet susceptibles d'utiliser ces classes.
Pour faire une encasuation, il suffit de déclarer « private » les données à encapsuler et de définir des méthodes
permettant de les lire et de les modifier : on appelle ces méthodes « getter » (pour la lecture) et « setter » (pour
la modification).Chacune ayant une fonction precise dont :
- Getter : méthode « public » permettant de définir la manière de lecture d’un attribut privé. Son type de retour
est celui de la donnée retournée et son nom est souvent composé de « get » et du nom de l’attribut qu’elle
retourne.
-Setter : méthode « public » permettant de définir la manière de modification d’une donnée. Souvent, elle ne
retourne rien (« void ») et prend un paramètre du même de type que la donnée à modifier. Son nom se
compose de la mention « set » et du nom de l’attribut concerné.
Autrement dit,l’encapsulation permet de définir des niveaux de visibilité des éléments de la classe. Ces niveaux
de visibilité définissent les droits d’accès aux données selon que l’on y accède par une méthode de la classe
elle-même, d’une classe héritière, ou bien d’une classe quelconque. Il existe quatre niveaux de visibilité :
• Visibilité par défaut : aucun modificateur de visibilité n’est indiqué.
• Visibilité publique : les fonctions de toutes les classes peuvent accéder aux données ou aux méthodes
d’une classe définie avec le niveau de visibilité « public ». Il s’agit du plus bas niveau de protection des
données.
• Visibilité protégée : l’accès aux données est réservé aux fonctions des classes héritières, c’est-à-dire
par les fonctions membres de la classe et des classes dérivées. Ainsi, Un attribut ou une méthode déclarée
“protected” est accessible uniquement aux classes d’un package et à ses sous-classes même si elles sont
définies dans un package différent.
• Visibilité privée : l’accès aux données est limité aux méthodes de la classe elle-même. Il s’agit du niveau
de protection des données le plus élevé
NB: Une classe est encapsulée, si tous ses attributs sont privés.
1-4)NOTION DE POLYMORPHISME
Le nom de polymorphisme vient du grec « polúmorphos » qui signifie « qui peut prendre
plusieurs formes ». Cette caractéristique est un des concepts essentiels de la programmation
orientée objet. Dans java il veut simplement dire qu’une classe peut prendre plusieurs formes
et c’est d’autant plus vrai avec les classes qui héritent d’une classe supérieure. Il peut aussi
être vu comme la capacité de choisir dynamiquement la méthode qui correspond au type réel
de l’objet.
Le polymorphisme ad hoc
Le polymorphisme ad hoc permet d'avoir des fonctions de même nom, avec des
fonctionnalités similaires, dans des classes sans aucun rapport entre elles (si ce n'est bien
sûr d'être des filles de la classe objet). Par exemple, la classe complexe, la classe image et
la classe lien peuvent avoir chacune une fonction "afficher". Cela permettra de ne pas avoir à
se soucier du type de l'objet que l'on a si on souhaite l'afficher à l'écran.
Le polymorphisme ad hoc permet ainsi de définir des opérateurs dont l'utilisation sera
différente selon le type des paramètres qui leur sont passés. Il est donc possible par
exemple de surcharger l'opérateur + et de lui faire réaliser des actions différentes selon qu'il
s'agisse d'une opération entre deux entiers (addition) ou entre deux chaînes de caractères
(concaténation).
Le polymorphisme paramétrique
-La méthode int addition (int, int) pourra retourner la somme de deux entiers
-La méthode float addition (float, float) pourra retourner la somme de deux
flottants
Le polymorphisme d'héritage