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
 4.1  Diagrammes communs à l'analyse et à la conception
 4.2  Diagramme de classes
 4.2.1  Modéliser la structure logique du système dans un diagramme de classes
 4.2.2  Classe
 4.2.3  Instanciation: création d'un objet d'une classe
 4.2.4  Attributs et opérations de classe
 4.2.5  Attribut dérivé
 4.2.6  Association entre classes
 4.2.7  Nom de rôle et multiplicité
 4.2.8  Généralisation spécialisation ou héritage
 4.2.9  Généralisation spécialisation: vision ensembliste
 4.2.10  Généralisation spécialisation: vision encapsulation
 4.2.11  Généralisation et redéfinition d'opérations
 4.2.12  Méthode Polymorphique et liaison dynamique
 4.2.13  Agrégation
 4.2.14  Exemple de diagramme de classes
 4.2.15  Éléments de méthodologie
 4.3  Diagramme d'objets
 QCM
 4.4  Concepts avancés du diagramme de classes
 5  Analyse et conception, aspects dynamiques de la vue logique
 6  Conception, aspects langage et technique
 7  Conception, vues développement et physique
 8  Conclusion
 9  Bibliographie

 Contacts

W3C validator

Département INF  
 Conception et programmation orientées objet


4.2.11 Généralisation et redéfinition d’opérations

Figures/generalisation_redefinition

    précédent     suivant 


Rappelons que la déclaration d’une opération consiste en la spécification de son nom, des types de ses paramètres et de son type de retour. La définition d’une opération consiste à lui adjoindre un corps représentant un algorithme. Dans cette diapositive, une opération définie (calculerAmortissement()) dans une classe parente est redéfinie (en anglais, overriden) dans une classe enfant, c’est-à-dire que la classe enfant remplace la définition de l’opération spécifiée dans la classe parente par son propre algorithme. Dans l’exemple de la diapositive, l’algorithme de calcul de l’amortissement d’un moyen de transport tel que défini dans la classe MoyenTransport ne tient pas compte de l’infrastructure. En effet, l’amortissement d’un Camion ou d’une Voiture ne prend pas en compte celui des routes empruntées. En revanche, les analystes décident que ce calcul dans le cas d’un Tramway inclut les voix ferrées de la ligne. En conséquence, l’opération calculerAmortissement() est redéfinie (même prototype, mais corps d’opération différent) dans la classe Tramway.

NB : la notion de redéfinition (en anglais, overriding) est proche mais différente de la notion de surcharge (en anglais, overloading). Une opération surcharge une autre opération, qu’elle soit déclarée (voire définie) dans la même classe ou dans une classe parente, lorsque la nouvelle opération possède le même nom que l’opération existante mais avec un prototype différent (nombre ou types des paramètres différents).

Exemple de surcharge :

  constructeurMoyenTransport(String désignation, int vitesse, double prix) // age = 0
  constructeurMoyenTransport(String désignation, int vitesse, double prix,
                             int age) // surcharge = même nom, mais paramètres différents

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