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.3 Cas particulier des attributs/opérations protégés
  • Attribut/opération protégé/e =
    • Accessible par les classes enfants
    • Inaccessible par les autres classes
  • Par exemple, opération afficherScrutin() de la classe Scrutin
    • La classe ScrutinPlagesHoraires peut utiliser l’opération de la classe Scrutin dans l’algorithme de son opération afficherScrutin() :

      String afficherScrutin() {
          ...
          appel18 de l’opération afficherScrutin() de classe parente
          ...
      }

    précédent     suivant 


Dans cette diapositive, nous montrons un exemple typique expliquant pourquoi il est certaines fois nécessaire de mettre une opération protégée. Soit une classe abstraite possédant des attributs privés, par exemple la classe Scrutin. Afficher l’état d’un objet concret d’une classe enfant de la classe abstraite implique l’affichage des attributs contenus dans la classe parente et l’affichage des attributs ajoutés dans la classe enfant. Or, si les attributs de la classe parente sont privés, comme c’est le cas avec la classe Scrutin, il est nécessaire d’avoir une opération afficherScrutin dans la classe parente (pour accéder aux attributs privés de la classe parente). Comme la classe parente est une classe abstraite (qui ne possède pas d’instance), l’opération afficherScrutin n’a pas besoin d’être publique. Par ailleurs, si l’opération afficherScrutin reste publique, le concepteur qui étend la classe parente peut ne pas redéfinir l’opération afficherScrutin et seuls les attributs de la classe parente seront affichés. Donc, l’opération afficherScrutin ne doit pas être publique, mais protégée, et une opération afficherScrutin doit être définie dans la classe enfant. Cette méthode de la classe enfant doit être publique et faire appel à la méthode protégée de la classe parente pour afficher les attributs de la classe parente.

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


18.Nous étudions dans quelques diapositives comment faire cet appel.