Généralisation et spécialisation

La généralisation désigne une relation de classification entre un élément plus général (super-classe ou super-paquetage) et un ou plusieurs éléments plus spécifiques (sous-classe ou sous-paquetage). Il s’agit d’une relation ÊTRE qui se lit depuis les sous-classes vers la super-classe. Dans le formalisme UML, la généralisation et la spécification sont considérées comme synonymes et traitées sous le même vocable de généralisation. Il en est également de même dans Perceptory.

  • La généralisation s’applique uniquement aux classes.
  • Une super-classe peut avoir plusieurs sous-classes et une sous-classe peut avoir plusieurs super-classes; la généralisation est dite multiple pour ces dernières sous-classes.
  • Les attributs, les opérations et les contraintes définies dans les super-classes sont hérités intégralement dans les sous-classes. Par le fait même, les associations et cardinalités définies sur la super-classe affecteront les sous-classes.
  • La super-classe d’une généralisation peut être abstraite, i.e. uniquement non instanciable directement; elle ne donne pas naissance à des objets mais sert de spécification plus générale aux sous-classes. Tous les objets relèvent des sous-classes. Son nom est alors en ITALIQUE. (ex.: BÂTIMENT)
  • Une classe peut être généralisée selonplusieurs critères simultanément.
  • Plusieurs contraintes peuvent s’appliquer à une généralisation. Elle sont alors indiqués entre crochet {} sur le trait horizontal de la généralisation.

    Par défaut, la généralisation est dite {exclusive} ou {disjointe}, i.e. qu’un objet de la super-classe est au plus l’instance d’une des sous-classes.

    La contrainte {inclusive} ou {chevauchement} indique qu’un objet est alors construit à partir d’une classe obtenue par mélange d’une ou plusieurs super-classes (ex.: Un bâtiment peut être à la fois une maison et un commerce).

    Une généralisation {incomplète} indique qu’il existe d’autres sous-classes possibles pour la généralisation (liste non exhaustive).On peut aussi utiliser les trois point ( … ) pour exprimer cette contrainte. (ex.: la liste des sous-classes pourrait se poursuivre avec les établissements d’enseignement, récréatifs, religieux…)

    Une généralisation {complète} signifie que toutes les sous-classes possibles sont énumérées (liste exhaustive).

Pour ajouter une généralisation au modèle

  • Sélectionner l’élément Généralisation du gabarit de modélisation et le glisser vers le modèle.
  • Connecter la partie supérieure à la super-classe.
  • Connecter ensuite la partie inférieure à une sous-classe.
  • Pour ajouter une autre branche à la généralisation, accéder au menu droit de la souris et choisir l’option « Add subtype connector ». Un connecteur supplémentaire s’ajoutera à la présente généralisation. Pour enlever un connecteur inutilisé, choisir l’option ‘Remove unused connector’
  • Sélectionner la généralisation et appuyer sur le bouton droit de la souris pour accéder au dictionnaire à l’aide de l’item Open Dictionary. Compléter les informations demandées.
  • Consulter la section Formulaires du dictionnaire pour connaître l’ensemble des éléments du dictionnaire pouvant être complétés pour une généralisation.