Les diagrammes de classes • Le plus important : objectif final de l’analyse/con

Les diagrammes de classes • Le plus important : objectif final de l’analyse/conception. • Décrit la structure interne du système, sous forme de classes (attributs + opérations) et de relations entre classes. Ne montre pas comment utiliser les opérations = description statique. Caractéristiques Le concept de classe • Décrit un ensemble d’objets (instances de la classe). Décrit leurs propriétés communes (attributs, opérations, relations). • Classe = type + module Type : « fabrique » d’instances (objets) ayant les mêmes propriétés et les mêmes comportements Module : interface visible + corps caché (utilisation possible sans connaître l’implantation; si le corps évolue sans impact sur l’interface => le reste du système n’est pas touché) classe objets instanciation (‘new’ en java) interface corps profil des opérations visibles (publiques) implantation cachée (privée) • Notation de base (suffisante au niveau analyse) • Nombreuses notations supplémentaires (aux niveaux conception et implantation) : Nom de classe Attributs Opérations() Compte libellé solde créditer() débiter()  Indicateurs de visibilité des attributs et opérations + public (visible par tous) - privé (visible dans la classe uniquement) # protégé (visible dans la classe et ses sous classes) ~ ou rien : package/internal/freind  Types des attributs et profils des méthodes  opérations et méthodes de classe : soulignées  méthodes abstraites : en italiques  attributs calculés : notés / attribut : type Ex : Date - jour : int - mois : int - annee : int - / nojour : int - nomDesMois[12] : String={"janvier","février"...} + getJour() : int … + getFormatEtendu() : String … + getNomMois(in i : int) : String La hiérarchisation des classes • La hiérarchisation des classes permet de gérer la complexité. • Généralisation : factorisation des éléments communs de classes (attributs, opérations); favorise la réduction de la complexité. • Spécialisation : adapter une classe générale à un cas particulier; favorise la réutilisation. généralisation spécialisation Super- classe Sous- classe classe plus générale classe plus spécialisée Ceci est un commentaire UML Remarques • Ne pas confondre spécialisation et instanciation ! • Notation UML des objets : identificateur:classe ou :classe (objet anonyme) • Les objets de la classe spécialisée héritent de la description des attributs (variables) et des opérations (méthodes) de la super-classe. • Elles peuvent en ajouter d’autres et/ou en redéfinir certaines. Oiseau Canari Moineau titi:Canari mon-piaf:Moineau spécialisation (entre classes) instanciation (classe à objets) Héritage multiple (plusieurs super classes) Autorisé dans la notation UML. Ex : Bateau Hydravion Avion Par « envoi de messages » (appel d’opération/méthode). Un même message peut être traité de manière différente par différents types de receveur (polymorphisme). L’émetteur n’a pas à connaître la classe du receveur. Employé calculerPaie() Mensualisé calculer Paie() A_la_tâche calculer Paie() méthode abstraite Ex : paye d’employés de 2 types (‘à la tâche’ et ‘mensualisé’). Par envoi du message calculerPaie() à toutes les instances de Employé. La bonne méthode est appliquée selon le type effectif de l’employé défini à la création de l’instance (liaison dynamique). Si un nouveau type d’employé est ajouté le programme, très simple, n’a pas à être modifié : pour tout e dans Employé faire e.calculerPaie(); La collaboration des objets Le concept d’association Exprime une connexion sémantique entre classes. Décrit un ensemble de liens (instances de l’association). Le concept de rôle caractérise les extrémités. Les multiplicités (cardinalités) caractérisent le nombre d’instances des classes impliquées dans l’association. Diagramme d’objets. Université Personne 1 < Inscription * 0..1 Emploie > * Employeur Employé Nom de rôle Nom d’association (+ sens) Pierre : Personne Université Nancy 2 : Université un lien instance de Inscription nom objet : nom classe Diagramme de classes Contrairement aux cardinalités de Merise, les multiplicités UML sont placées du côté de la destination. Une Université emploie plusieurs Personnes : le symbole * est placé du côté Personne. A une Personne est associé zéro ou une Université (avec le rôle Employeur) : le symbole 0..1 est placé du côté Université. Multiplicités : 1 un et un seul M..N de M à N (entiers naturels) * plusieurs 1..* de 1 à plusieurs 0..1 zéro ou un 0..* de zéro à plusieurs Université Personne Emploie > 0..1 Employeur Employé * Sens de parcours et implantation : Polygone Point < défini par * * On trouvera dans Polygone un attribut correspondant à une collection de Points (tableau, ArrayList… en POO) et dans Point une collection de Polygones. Polygone Point < défini par * * Ici le sens de parcours est limité à Polygone vers Point. L’association ne sera implantée par une collection que dans la classe Polygone. Associations spécialisées L’agrégation est une association qui décrit une relation d’inclusion entre un tout (l’agrégat) et ses parties. Si les durées de vie des objets sont liées on parle de composition (composé/composant), symbolisée par un losange plein du côté du composé; sinon (pour des durées de vie indépendantes) l’agrégation est symbolisée par un losange vide. Voiture Roue Moteur Carrosserie 1 1 * Circuit-bus Arrêt-bus 1..* 1..* Agrégation Composition Composé Composants toujours 1 Ne pas confondre généralisation/spécialisation et agrégation ! Quand une classe est une spécialisation d’une autre elle est de même nature ce qui n’est pas le cas avec l’agrégation. Ces relations peuvent être associées. Un article est acheté (matière première) ou fabriqué à partir d’autres articles et/ou matières premières. Article Produit fabriqué Matière première 1..* * Tarte Tarte aux pommes Pomme 1 * Une pomme n’est pas de même nature qu’une tarte ! (design pattern « Composite ») Autres concepts Classe-association : association porteuse d’attributs et/ou d’opérations, représentée comme une classe anonyme associée à l’association. Etudiant Matière note Pas de nom 1..* 0..* Suit > Association d’arité n : représentée par un losange avec n ‘pattes’ auquel peut être associé une classe porteuse d’attributs et/ou d’opérations. Salle Étudiant Enseignant Cours heure –début heure-fin 2..* 1 1 Paquetage (package) : notion qui peut apparaître dans tous les diagrammes pour spécifier le regroupement d’éléments au sein d’un sous modèle (cas, classes, objets, composants, autres paquetages...). P1 Classe abstraite : non instanciable directement ; décrit des mécanismes généraux et laisse non décrit certains aspects (méthodes abstraites) ; spécialisée par des classes concrètes (instanciables) qui précisent les méthodes abstraites. <<import>> P2 <<import>> : les éléments de P1 peuvent utiliser ceux de P2 (permet de décrire la structure générale d’une application) Fenêtre {abstract} fermer() iconifier() Fenêtre_ Windows fermer() iconifier() Fenêtre_ Mac fermer() iconifier() classe abstraite Classe qui implante Interface1 Interface : Entité ne contenant que des opérations abstraites ; une interface précise les fonctionnalités (le «service») que les classe qui les implantent doivent fournir. Contraintes : entre { }; exprimées dans le langage OCL (« Object Constraint Language »); portent sur les classes, les attributs, les méthodes, les associations etc. OCL n’est pas détaillé dans ce cours. Exemple : Entreprise actif : float {value >= 0} passif : float {actif = passif} contrainte de classe et d’attribut : Exemple de diagramme de classes uploads/Ingenierie_Lourd/ diagram-me-classes.pdf

  • 31
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager