Notes de cours de Génie logiciel

Faculté des sciences exactes et de l’informatique


Diagramme de classes:
Permet de donner une représentation statique du système à développer. La représentation est basée sur les concepts de classes et d’associations. Chaque classe contient les données et les traitements. Les traitements sont matérialisés par des opérations.
  • Classe : décrit un groupe d’objets ayant les propriétés (attributs), un même comportement (opérations), et une sémantique commune (domaine de définition). Un objet est une instance d’une classe. La classe représente l’abstraction de ses objets. Une classe est représentée par un rectangle comportant plusieurs
  • compartiments : désignation de la classe, description des attributs, description des opérations.

  • Attribut : propriété élémentaire d’une classe.
  • Caractéristiques :
    • - nom d’attribut : nom unique dans sa classe.
    • - Type d’attribut : type de l’attribut (entier, …) dépendant des types disponibles dans le langage d’implémentation.
    • - Valeur initiale : facultative.
    • -{propriétés} : valeurs étiquetées facultatives.
  • Visibilité : Chaque attribut ou opération d’une classe peut être de type public +, protégé # ou privé - . Les symboles sont indiqués devant un attribut ou une opération pour indiquer le niveau de visibilité autorisé pour les autres classes.
  • Objet : Concept qui a un sens dans le contexte du système à modéliser. Chaque objet a une identité et peut être distingué des autres sans considérer à priori les valeurs de ses propriétés. Un objet est caractérisé par les valeurs de ses propriétés pour refléter des états significatifs.
  • Opérations (méthodes) : Une opération permet de décrire le comportement d’un objet. Une opération est désignée soit par son nom soit par son nom, ses paramètres et son type de résultat. La signature d’une méthode correspond au nom de la méthode et la liste des paramètres en entrée. La description des opérations d’une classe comporte des caractéristiques :
  • Nom de l’opération ;
  • Paramètres : chaque paramètre peut être décrit, en précisant son nom, son type et sa valeur par défaut, l’absence de paramètres est indiquée par ().
  • Type résultat : type(s) valeur(s) retournée(s) dépendant des types selon le langage d’implémentation.
  • {Propriétés} : valeurs facultatives applicables.
  • Formalisme d’une classe :

    Nom de la classe « stéréotype »
    Attribut 1 : type= valeur initiale
    …..
    Opération 1 (liste de paramètres) :type résultat en retour {propriétés}
    ….
  • Un objet peut être représenté sous trois formes :
    • nom de l’objet : désignation directe et explicite d’un objet.
    • nom de l’objet : Nom de la classe :
  • désignation incluant le nom de la classe.
  • Nom de la classe : désignation anonyme d’un objet d’une classe donnée.
  • Rôle d’une classe dans une association : Nous pouvons avoir la notion de rôle, comme pour employé et employeur.
  • Agrégation : Forme particulière d’association qui exprime une relation de contenance. L’agrégation n’a pas besoin d’être nommée car elle signifie « contient » et « est composé de ».
  • Composition : appelée « agrégation composite ». Un composant n’appartient qu’à un seul objet composé, la destruction d’un objet composé entraine celle de ses composants.
  • Généralisation : Permet de simplifier la représentation en utilisant la notion d’héritage, une classe mère est utilisée pour contenir ce qui est commun à des classes.
  • Les classes d’association : Une association peut avoir ses attributs qui n’appartiennent à aucune des classes qu’elle lie. L’association devient une classe, appelée classe d’association.
  • Association réflexive : Une association est réflexive quand ses deux extrémités pointent vers la même classe.
  • Classe abstraite : Classe qui ne s’instancie pas. Peut être utilisée pour jouer le rôle de classe mère.
  • Navigabilité : La navigabilité peut être soit bidirectionnelle (situation par défaut), soit unidirectionnelle où une extrémité de l’association comporte une flèche.
  • Propriété de mise à jour : Exemples :
  • {interdit} interdit d’ajouter, de supprimer ou de mettre à jour des liens. {ajout seul} : n’autorise que l’ajout de liens.
  • Interface : Une classe d’interface permet de décrire la vue externe d’une classe. Elle est identifiée par un nom. L’interface est aussi caractérisée par un petit cercle à la classe source. La classe utilisatrice de l’interface est reliée au symbole de l’interface par une flèche en pointillés.
  • Classe paramétrable : représente un modèle d’une famille de classes qui peut générer des classes suivant les valeurs prises par des paramètres.
  • Association de dimension supérieure à 2 et classe association : Une classe association permet de décrire les attributs propres à l’association de dimension 3. Cette même classe association pourrait être reliée à d’autres classes.
  • Association qualifiée : Permet de préciser la sémantique de l’association et de qualifier de façon restrictive les liens entre instances. Seules les instances possédant l’attribut indiqué dans la qualification sont concernées par l’association.
  • Héritage avec recouvrement : Par défaut, les sous classes ont des instances disjointes les unes par rapport aux autres. Il existe parfois un recouvrement d’instances entre les sous classes. Généralement, nous avons 4
  • situations :
    • {chevauchement} : deux sous classes peuvent avoir parmi des instances identiques.
    • {disjoint} : les instances d’une sous classe ne peuvent être incluses dans une autre sous classe de la même classe.
    • {complète} : la généralisation ne peut pas être étendue.
    • {incomplète} : la généralisation peut être étendue. Extension et restriction de classe :
  • L’ajout de propriétés à une sous classe donne lieu à une extension de classe. Le fait de masquer de propriétés dans une sous classe donne une restriction de classe.