1.3) Notion d’encapsulation L'encapsulation est une manière de définir une clas
1.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. On distingue généralement trois types de polymorphisme : -Le polymorphisme ad hoc (également surcharge ou en anglais overloading). -Le polymorphisme paramétrique (également généricité ou en anglais template). -Le polymorphisme d'héritage (également redéfinition, spécialisation ou en anglais overriding). 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 Le polymorphisme paramétrique, appelé généricité, représente la possibilité de définir plusieurs fonctions de même nom mais possédant des paramètres différents (en nombre et/ou en type). Le polymorphisme paramétrique rend ainsi possible le choix automatique de la bonne méthode à adopter en fonction du type de donnée passé en paramètre. Ainsi, on peut par exemple définir plusieurs méthodes homonymes addition () effectuant une somme de valeurs. -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 -La méthode char addition (char, char) pourra définir au gré de l'auteur la somme de deux caractères, etc. On appelle signature le nombre et le type (statique) des arguments d'une fonction. C'est donc la signature d'une méthode qui détermine laquelle sera appelée. Le polymorphisme d'héritage La possibilité de redéfinir une méthode dans des classes héritant d'une classe de base s'appelle la spécialisation. Il est alors possible d'appeler la méthode d'un objet sans se soucier de son type intrinsèque : il s'agit du polymorphisme d'héritage. Ceci permet de faire abstraction des détails des classes spécialisées d'une famille d'objet, en les masquant par une interface commune (qui est la classe de base). uploads/Finance/ expose 44 .pdf
Documents similaires
-
12
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Aoû 14, 2022
- Catégorie Business / Finance
- Langue French
- Taille du fichier 0.0371MB