Accueil
 Sommaire
 1  Objectifs de ce cours de modélisation orientée objet
 2  Généralités sur la modélisation orienté objet et sur UML
 3  Analyse, vues cas d'utilisation et processus
 4  Analyse et conception, aspects statiques de la vue logique
 5  Analyse et conception, aspects dynamiques de la vue logique
 6  Conception, aspects langage et technique
 6.1  Rappel des phases du cycle de développement en V
 6.2  Conception des classes
 6.3  Rappel du diagramme de classes de l'étude de cas Studs
 6.4  Traduction des associations en attributs
 6.5  Traduction des agrégations
 6.6  Traduction des compositions~*
 6.7  Traduction de la classe « Façade » du système
 6.8  Encapsulation: visibilité~/~accessibilité des attributs et des opérations
 6.8.1  Encapsulation avec le concept de Visibilité
 6.8.2  Notation UML
 6.8.3  Cas particulier des attributs/opérations protégés
 6.9  Traduction des attributs dérivés
 6.10  Qualification de certaines associations~*
 6.11  Traduction des diagrammes d'interaction en algorithmes
 6.12  Traduction des diagrammes de machine à états
 6.13  Traduction des relations de généralisation spécialisation
 6.14  Traduction des classes d'association~*
 6.15  Méthodologie: une fiche par classe
 QCM
 7  Conception, vues développement et physique
 8  Conclusion
 9  Bibliographie

 Contacts

W3C validator

Département INF  
 Conception et programmation orientées objet


6.8 Encapsulation : visibilité / accessibilité des attributs et des opérations

  • Doit-on voir / accéder à tous les attributs ou à toutes les opérations d’un objet ? Non
    • La classe définit ce qui est visible / accessible
      • C’est le principe de l’encapsulation
    • Un objet complexe ne peut être utilisé qu’au travers de ce qui est accessible
  • Analogie :
    • Il n’est possible d’utiliser une voiture qu’à travers son volant, son frein, son accélérateur, etc.
    • L’accès au carburateur est impossible sauf par les méthodes qui le font de manière cohérente (méthode accélérer de l’accélérateur)

    précédent     suivant 


La conception des classes s’appuie sur les concepts de l’orientation objet. Dans cette section, nous nous servons de la conception pour compléter nos connaissances sur ces concepts de l’orientation objet. Celui que nous étudions dans cette diapositive et les suivantes est l’encapsulation : tout concepteur de classe choisit les attributs et les opérations qu’il désire rendre visibles / accessibles de toutes les autres classes, ou visibles / accessibles seulement des classes enfants, ou encore non visibles / non accessibles.

En guise d’autre exemple que celui de la diapositive, prenons un exemple informatique du module d’algorithmique procédurale CSC3002. Pour la conception de listes chaînées, vous utilisez une structure de données avec des pointeurs qui permettent de connaître l’élément précédant et l’élément suivant dans liste, ainsi que des pointeurs pour connaître le premier élément et le dernier élément de la liste. Ces derniers pointeurs permettent de manipuler plus facilement la liste pour ajouter / supprimer un élément au début / à la fin de la liste. Après la conception des procédures pour ces manipulations, vous souhaitez que les utilisateurs n’utilisent ni le pointeur sur le premier ni le pointeur sur le dernier élément, mais vos procédures. En quelque sorte, vous souhaitez que ces deux pointeurs soient non visibles / non accessibles.

La propriété d’encapsulation est très importante car en choisissant quels attributs et quelles opérations sont visibles de tous, le concepteur définit l’API (en anglais, Application Programming Interface) du système. Une fois qu’une API est publiée, des milliers d’utilisateurs en prennent connaissance, l’utilisent, et donc en dépendent. Faire ensuite évoluer une API est très compliqué. Par conséquent, ce travail est critique pour l’adoption du système par les autres concepteurs et pour la pérennité du projet.

Cf. le glossaire pour la définition du terme « visibilité ».

D. Conan, C. Taconet, C. Bac, Télécom SudParis, CSC 4002, Octobre 2015