Modèle objet/classe Sommaire Pourquoi un tel modèle ; Sa place dans le processus de développement ; Les premiers concepts ; Comment construire un diagramme de classes.
Sa place dans le processus de développement Les Ucs représentent une vue fonctionnelle du système ; Il faut passer d une vue fonctionnelle vers une vue objet du problème ; L on dégage ainsi les entités intrinsèquement liées au domaine d application ; Cette phase permet de déterminer les objets utiles pour la phase d analyse et au delà ; La construction du système va donc se faire autour de la notion d objet, plutôt qu autour de la notion de fonctionnalité ; Sa place dans le processus de développement Cas d utilisations Modèle objet/classe Conception Dynamique 2
Pourquoi? Décrit les objets et les relations qui interviennent dans la problématique : Description de la structure des objets et de leurs caractéristiques ; Description des associations entre les classes des objets ; Les objets manipulés lors de l analyse doivent refléter les entités du problème ; La description du MO(C) est indépendante de la solution technique ; Il explique ce qu il faut réaliser et non pas comment le réaliser ; Premiers concepts Le modèle statique sert à définir la sémantique des objets au sein du système ; Il permet de lever certaines ambiguïtés qui peuvent exister dans les spécifications ; emprunteur 0.. emprunter 0..3 objet prêté Exemplaire 3
Classe / Objet Le concept de classe permet de modéliser les caractéristiques de tous les objets qui sont instanciés à partir de ces classes, à savoir leurs données et leurs comportements ; Dans le modèle statique, la définition de l objet est intermédiaire entre celle de l objet réel et celle de l objet telle qu on la rencontre au moment de l implantation : Objet du modèle statique = restriction de objet réel Certaines classes de l analyse peuvent ne pas apparaître lors de l implémentation Attributs & Opérations -nom : string -prénom : string -adresse : string +changeadresse() +emprunter() Les attributs représentent les données de l objet. Chaque objet a une identité propre ; Les opérations représentent le comportement de l objet ; La précision de la description d une classe ne dépend que du niveau de granularité que l on veut donner à notre modèle ; 4
Classe ou Objet? emprunteur 0.. emprunter 0..3 objet prêté Exemplaire Pedro: -nom : Pedro : string -prénom: Gonzales : string -adresse: inconnue : string emprunter Hamlet: Exemplaire La relation d instanciation est mise en évidence par une flèche en pointillé allant de la classe vers l objet ; Le système final manipule des objets, mais la description se fait principalement via les classes ; Cela simplifie le problème posé ; Il serait trop compliqué de décrire tous les objets qui interviennent dans le système. Association «un adhérent peut emprunter au maximum 3 exemplaires» : existence d un lien entre les objets de la classe adhérent et les objets de la classe exemplaire ; Une association possède un nom (verbe) et des noms de rôles qui peuvent lever certaines ambiguïtés : SociétéIntérim employeur SociétéNettoyage travaillepour employé Un sens de lecture, indiqué par un triangle. Aucune conclusion à tirer sur la manière dont sera implantée l association! 5
Association Cardinalité représentant le nombre d instances impliquées dans l association. La cardinalité se trouve du côté de l objet qu elle décrit : Capitale Pays Continent * Pays Pays 0.. Roi Classe d association Lorsqu il est nécessaire d ajouter des informations supplémentaires sur l association ; Ces informations sont inhérentes à l association ; il est alors possible de les stocker dans une classe particulière : la classe d association : Pret -date : string -durée : entier +prolonger() -nom : string -prénom : string -adresse : string emprunteur 0.. emprunter 0..3 objet prêté Exemplaire Elles sont nécessaires quand (i) les associations sont soumises à des opérations et quand (ii)les associations sont associées à d autres classes ; 6
Association ou attribut? Représenter un lien entre 2 classes de 2 façons : grâce à une association ou à un attribut : Pret -durée : entier +prolonger() Date Pret -date : Date -durée : entier +prolonger() Une association est préférable si la classe date est importante dans le cadre du projet (ex. gestion de planning) ; Une association permet d expliciter un lien et d associer des données et des comportements à ce lien ; Comment modéliser une information simple? Une classe vs. Façon brute (chaîne de caractères, entier, etc.) ; Le second choix est limitatif : enferme l information dans une structure de données trop restreinte ; Exemple : Date Date -jour : entier -mois : entier -année : entier +affichejjmmaa() +affichejjmmaaaa() +enregistretoi() Les formats de données évoluent souvent. Il est préférable de créer des classes les représentant ; 7
Comment construire un diagramme de classes Le modèle objet sera, dans un premier temps, décrit par un diagramme de classes ; C est un réseau de classes et d associations. Il modélise la structure d un objet, son rôle au sein du système et ses relations avec les autres objets ; N.B: 2 analystes travaillant en // sur les mêmes spécifications et Ucs produiront vraisemblablement 2 modèles différents! Ces derniers varieront selon l expérience (et la sensibilité) de leurs auteurs. Ils seront cependant tous les deux justes. Comment construire un diagramme de classes : une recette Identifier les classes. Elles se cachent derrière les substantifs qui se trouvent dans les différents documents. Ces souvent des mots du domaine applicatif. L ensemble peut être alors réduit en fonction de critères comme : Suppression des synonymes ; Suppression des classes trop vagues ; Suppression des classes non pertinentes. 8
Ex. de la médiathèque Liste des mots Médiathèque Livre Cassette audio Auteur Membre Fiche temps retenus dans Cassette vidéo Support Acteur Prêt Type de média emprunt les spécs Renseignement CD audio Bibliographie Compositeur musicien Découvrir des associations, les attributs et opérations Mise en évidence des classes interdépendantes ; Elles correspondent souvent à des expressions verbales ; En général, les infos qui n ont pas encore été modélisées sont des attributs des différentes classes du modèle ; Quand on hésite entre 2 classes associées, pour placer un attribut, la solution est d intégrer cet attribut dans une classe d association entre les 2 dites classes ; À cette étape de l analyse, on identifie les opérations immédiates et simples ; surtout celles qui participent à la description de l objet 9