12.07.2015 Views

CONCEPTION des SYSTÈMES d'INFORMATION UML SOMMAIRE

CONCEPTION des SYSTÈMES d'INFORMATION UML SOMMAIRE

CONCEPTION des SYSTÈMES d'INFORMATION UML SOMMAIRE

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>CONCEPTION</strong> <strong>des</strong> SYSTÈMES d’INFORMATION<strong>UML</strong>3 : Analyse <strong>des</strong> Données : leEpitech 3 – Automne 2007Bertrand LIAUDET<strong>SOMMAIRE</strong>ANALYSE DES DONNEES : DIAGRAMME DE CLASSES 21. L’approche objet 32. Le diagramme de classes 133. Exercices corrigés 264. Génération de C++ 305. Paquetages et vue logique 366. TP : Visio 43EPITECH - CSI - <strong>UML</strong> – Analyse <strong>des</strong> données - 2007-2008 - page 1/43- Bertrand LIAUDET


ANALYSE DES DONNEES :DIAGRAMME DE CLASSESIl est facile de décrire la méthode encore que son application exige à coup sûr savoir etpratique.Diagramme <strong>UML</strong>ANALYSE DESDONNEESDiagramme de classesLa programmation fonctionnelle suit l’analyse fonctionnelle qui est calquée sur l’analyseexterne du problème. C’est une analyse <strong>des</strong>cendante.La programmation objet est moins intuitive que la programmation fonctionnelle. Laprogrammation objet s’intéresse au système en tant qu’ensemble d’objets en interaction. C’estune analyse systémique.Le diagramme de classe est le diagramme le plus important de la modélisation orientée objet. Ilcontient les classes avec leurs métho<strong>des</strong>. Mais il n’indique pas comment utiliser cesmétho<strong>des</strong>. C’est une <strong>des</strong>cription statique du système. L’aspect dynamique sera apporté par lesdiagrammes d’interaction (diagrammes de collaboration et de séquence).La construction du diagramme de classes doit se faire après l’analyse fonctionnelle. Celle-ci,bien réalisée, mettra utilement sur la voie d’un bon diagramme de classes.La construction d’un diagramme de classes a intérêt à partir du concret : donc de diagrammesd’interaction entre les objets (instances de classe) qui sont construits à partir de l’analysefonctionnelle (les diagrammes de séquences <strong>des</strong> scénarios).A partir de ces premiers objets, on pourra commencer à construire le diagramme de classe.EPITECH - CSI - <strong>UML</strong> – Analyse <strong>des</strong> données - 2007-2008 - page 2/43- Bertrand LIAUDET


1. L’approche objetAvantages de l’approche objet• Stabilité de la modélisation par rapport aux entités du monde réel.• Construction itérative facilité par le couplage faible entre les composants.• Possibilité de réutiliser les éléments d’un développement à un autre.• Simplicité du modèle. 5 concepts fondateurs :1. Objets2. Messages3. Classes4. L’héritage5. PolymorphismeProgrammation objet vs. programmation prodécurale• La construction d’un logiciel est une suite d’itération du genre : division-réunion. Il fautdécomposer (diviser) pour comprendre. Il faut composer - réunir - pour construire.• Le processus de décomposition a été traditionnellement dirigé par un critère fonctionnel.Les fonctions du système sont identifiées puis décomposées en sous-fonctions, et ainsi <strong>des</strong>uite jusqu’à l’obtention d’éléments simples programmables sous la forme de fonction et deprocédure. C’est la méthode cartésienne : analytique.• L’architecture du système est le reflet <strong>des</strong> fonctions du système. Il y a un fort couplageentre architecture et fonctions.• L’approche objet ajoute à l’approche cartésienne une démarche systémique qui considère lesystème comme un tout organisé. Elle propose une méthode de décomposition non pasbasée uniquement sur ce que le système fait, mais sur ce que le système est et fait.Autrement dit, on s’intéresse aux données (ce que le système est) et aux fonction appliquéesà ces données (ce que le système fait).• En programmation fonctionnelle structurée, on a, schématiquement, une vision systémique<strong>des</strong> fonctionnalités d’un côté et <strong>des</strong> données structurées radicalement séparées <strong>des</strong>fonctionnalités de l’autre. En programmation objet, on ajoute à la vision systémique <strong>des</strong>fonctionnalités (analyse fonctionnelle), une vision systémique <strong>des</strong> données (diagramme declasse) auxquelles on associe directement les fonctionnalités.EPITECH - CSI - <strong>UML</strong> – Analyse <strong>des</strong> données - 2007-2008 - page 3/43- Bertrand LIAUDET


Les objetsObjet = une identité + un état + un comportementOn dit aussi :Objet = données (état) + métho<strong>des</strong> (comportement)D’un point de vue abstrait, un objet informatique est une représentation d’un objet du mondeextérieur. Un objet informatique est une sorte de miroir qui renvoie une image (uneconnaissance) d’un objet qui existe dans le monde perçu par l’utilisateur.D’un point de vue informatique, un objet informatique est une variable avec un ou plusieurschamps qui seront manipulées (en lecture ou en écriture) par les métho<strong>des</strong> de l’objets.EtatValeurs instantanées <strong>des</strong> attributs (données) d’un objet.Certaines partie de l’état peuvent évoluer au cours du temps.D’autres parties de l’état peuvent être constantes.ComportementLe comportement regroupe les métho<strong>des</strong> d’un objet.Les métho<strong>des</strong> sont <strong>des</strong> fonctions qui permettent d’accéder aux valeurs <strong>des</strong> attributs d’un objet.Ces métho<strong>des</strong> sont déclenchées par <strong>des</strong> stimulations externes : <strong>des</strong> messages envoyés pard’autres objets (c’est-à-dire <strong>des</strong> appels de métho<strong>des</strong>).On parle aussi de compétences pour les métho<strong>des</strong> d’un objet.IdentitéChaque objet a une existence propre (une place en mémoire).Les objets sont différenciés par leurs noms (comme un nom de variable).OlivierM. LiaudetToutefois, il est parfois difficile de nommer tous les objets : on peut donc les nommer du nom deleur classe, avec « : » devant.EPITECH - CSI - <strong>UML</strong> – Analyse <strong>des</strong> données - 2007-2008 - page 4/43- Bertrand LIAUDET


: Eleve : ProfesseurChaque objet possède une identité attribuée de manière implicite à la création de l’objet etjamais modifiée.On peut donner un attribut clé à l’objet, qu’on appelle « clé naturelle » (par exemple, un numérode sécurité sociale). Il s’agit toutefois d’un artifice de réalisation. Cette clé appartient à l’état del’objet. Le concept d’identité est indépendant du concept d’état.EncapsulationPour accéder, en consultation ou en modification, à l’état d’un objet (à ses données), il fautpasser par ses fonctions (ses métho<strong>des</strong>). Il faut que ces fonctions soient appelées par d’autresfonctions qui peuvent être <strong>des</strong> métho<strong>des</strong> du même objet ou d’un autre.Quand une méthode d’un objet 1 est appelée par une méthode d’un objet 2, on dit que l’objet 2a envoyé un message à l’objet 1.Donc, de façon générale, pour accéder à l’état d’un objet, il faut lui envoyer un message.Les métho<strong>des</strong> sont l’interface obligatoire d’accès aux données d’un objet.Persistance <strong>des</strong> objetsUn objet persistant sauvegarde son état dans un système de stockage permanent, de sorte qu’ilest possible d’arrêter le processus qui l’a créé sans perdre l’information représentée par l’objet.C’est la passivation de l’objet.L’activation de l’objet consiste à reconstruire l’objet dans l’état dans lequel on l’avaitsauvegarder.Par défaut, les objets ne sont pas persistants.Transmission <strong>des</strong> objetsLa transmission <strong>des</strong> objets consiste à faire passer un objet, par un moyen de communicationquelconque, d’un système à un autre.Scénario de communicationL’objet révèle son vrai rôle et sa vraie responsabilité lorsque, par l’intermédiaire de l’envoi demessages, il s’insère dans un scénario de communication (c’est-à-dire un cas d’utilisationconcret du système).Atterir: Tour de contrôle : Avion[en vol]EPITECH - CSI - <strong>UML</strong> – Analyse <strong>des</strong> données - 2007-2008 - page 5/43- Bertrand LIAUDET


ClasseUne classe est la <strong>des</strong>cription d’un ensemble d’objets ayant les mêmes métho<strong>des</strong> et les mêmestypes de données.La classe peut être vue comme une extension de la notion de type.Les objets apparaissent alors comme <strong>des</strong> variables de type classe.La démarche d’abstraction objet : un nouveau paradigmeElle consiste à regrouper les éléments qui se ressemblent et à distinguer <strong>des</strong> structures de plushaut niveau d’abstraction, débarrassées de détails inutiles.La classe décrit le domaine de définition d’un ensemble d’objets.Les généralités sont contenues dans la classe.Les particularités sont contenues dans les objets.Un objet est une instance de classe.Avec les langages objet, le programmeur peut construire une représentation informatique <strong>des</strong>abstractions qu’il a l’habitude de manipuler mentalement, sans traduction vers <strong>des</strong> concepts deplus bas niveau, comme les variables, les types abstraits de données et les fonctions <strong>des</strong> langagesnon objet.Les langages objet réduisent la distance entre notre façon de raisonner et le langage compris parles ordinateurs, de sorte qu’il est plus facile de réaliser une application avec un langage objetqu’avec un langage procédural, même si l’approche objet demande un remise en cause <strong>des</strong>habitu<strong>des</strong> acquises.Les attributs d’une classeIls sont définis par un nom, un type et éventuellement une valeur initiale.ChatNom :stringAge : intClasse Chat: ChatNom= ”Minou”Age= 1Un objet ChatEPITECH - CSI - <strong>UML</strong> – Analyse <strong>des</strong> données - 2007-2008 - page 9/43- Bertrand LIAUDET


Les principales catégories d’opérationsL’héritage• Les constructeurs : pour créer les objets (création).• Les <strong>des</strong>tructeurs : pour détruire les objet (<strong>des</strong>truction).• Les sélecteurs : pour renvoyer tout ou partie de l’état d’un objet (consultation).• Les modificateurs : pour modifier tout ou partie de l’état d’un objet (modification).• Les itérateurs : pour consulter le contenu d’une structure de données qui contient plusieursobjets.L’héritage est une technique qui permet de construire une classe (espèce) en lui faisant hériter<strong>des</strong> attributs et <strong>des</strong> métho<strong>des</strong> d’autres classes (genre, super-classe).L’héritage est utilisé pour construire de nouvelles classes, pour classer les objets et pour laconception abstraite (avec le polymorphisme).AnimauxChatsChiensPrincipe de substitutionOn peut substituer n’importe quel objet d’une super-classe par n’importe quel objet d’une sous-classe.La spécialisation ajoute <strong>des</strong> attributs et <strong>des</strong> opérations mais ni n’en détruit, ni n’en modifie.Classe abstraiteUne super classe (classe genre) peut être instanciée ou pas.Une classe qui ne peut pas être instanciée est une classe abstraite. Elle est super classe d’autreclasse qui seront instanciées. Les classes servent donc surtout pour la classification et lepolymorphisme.Attention à l’héritage <strong>des</strong> associations !EPITECH - CSI - <strong>UML</strong> – Analyse <strong>des</strong> données - 2007-2008 - page 10/43- Bertrand LIAUDET


Les associations sont héritées mais pas complètement ! ! !Le plus souvent, les contraintes <strong>des</strong> associations ne sont pas transmises automatiquement de la superclassevers la sous-classe. Les contraintes sont le plus souvent traduites par un bout de code implantédans la réalisation d’une opération. Comme les langages permettent la redéfinition <strong>des</strong> opérations dansles sous-classes, les programmeurs peuvent involontairement introduire <strong>des</strong> incohérences entre laspécification d’une super-classe et sa réalisation dans une <strong>des</strong> sous-classes.Polymorphisme• Le polymorphisme décrit la caractéristique d’un élément qui peut prendre plusieurs formes(l’eau peut être à l’état solide, liquide ou gazeux).• Le polymorphisme désigne le principe qui fait qu’un nom d’objet peut désigner <strong>des</strong> objetsdifférents (<strong>des</strong> instances de classes différentes) issus d’une même arborescence.• Le polymorphisme désigne surtout le polymorphisme d’opération : la possibilité dedéclencher <strong>des</strong> opérations différentes en réponse à un même message.• Le polymorphisme permet de manipuler <strong>des</strong> objets sans en connaître précisément le type.• Le polymorphisme est lié à la notion d’héritage. On peut manipuler <strong>des</strong> objets dont le typeest abstrait au niveau de la classe générale (abstraite). Le type deviendra concret quandl’objet deviendra concret et portera le type de sa classe spécialisée.• Le polymorphisme n’influence pas l’analyse organique, mais il en dépend. Il ne faut paspenser l’analyse en terme de polymorphisme, mais en terme d’abstraction. L’analyse enterme d’abstraction rend possible le polymorphisme.• Les bénéfices du polymorphisme sont un plus grand découplage entre les objets : ils sontavant tout récoltés durant la maintenance.VocabulaireInstanceUn objet est une instance d’une classe.L’instance est une notion générale : un lien est une instance d’une association ; une variable peutêtre dite une instance d’un type.Méthode et opérationLa spécification d’une méthode correspond à son entête : on l’appelle aussi : l’opération.L’implémentation de la méthode (l’algorithme), c’est ce qu’on appelle la méthode.Méthode abstraiteUne méthode est dite abstraite quand on connaît son entête mais pas la manière dont elle peutêtre réalisée.EPITECH - CSI - <strong>UML</strong> – Analyse <strong>des</strong> données - 2007-2008 - page 11/43- Bertrand LIAUDET


Classe abstraiteUne classe est dite abstraite quand elle ne s’instancie pas directement et qu’elle sert doncuniquement de spécification.C’est une classe qui ne contient pas d’objets. Elle contient <strong>des</strong> sous-classes qui ellescontiendront <strong>des</strong> objets.En phase de modélisation, une classe est aussi dite abstraite quand elle, ou une de ses classesparents, définit au moins une méthode abstraite (et donc qu’elle ne peut pas, au moinsprovisoirement, être instanciée).EPITECH - CSI - <strong>UML</strong> – Analyse <strong>des</strong> données - 2007-2008 - page 12/43- Bertrand LIAUDET


2. Le diagramme de classesNotions générales sur les classes et formalisme <strong>UML</strong>ClassePersonneprénom : StringdateNaissance : Datesexe : {‘M’, ‘F’}calculAge() : IntegerrenvoyerNom() : StringNom de la classeListe d’attributsListe <strong>des</strong> métho<strong>des</strong>Le nom de la classe doit être significatif. Il commence par une majuscule.Le nom de la classe peut être préfixé par son ou ses paquetages d’appartenance.Si personne est dans le paquetage A, lui même dans le paquetage B, on écriraB ::A ::PersonneClasse abstraiteFigureGéométrique {abstract}typeTrait : Trait<strong>des</strong>siner() {abstract}RectangleDessiner()FigurePleine {abstract}La classe figure géométrique est abstraite parce quelle contient une méthode abstraite, c’est-àdireune méthode dont on connaît l’entête mais pas le corps.EncapsulationL’occultation <strong>des</strong> détails de réalisation est appelée : encapsulation. L’encapsulation présente undouble avantage :• Les données encapsulées dans les objets sont protégées.• Les utilisateurs d’une abstraction ne dépendent pas de sa réalisation, mais seulement de saspécification, ce qui réduit le couplage dans les modèles.Le degré d’encapsulation peut être paramétré : c’est la notion de visibilité.EPITECH - CSI - <strong>UML</strong> – Analyse <strong>des</strong> données - 2007-2008 - page 13/43- Bertrand LIAUDET


Visibilité <strong>des</strong> attributs et <strong>des</strong> métho<strong>des</strong>Par défaut, les attributs d’une classe sont « private » : les attributs d’un objet sont encapsuléesdans l’objet. Les attributs ne sont manipulable que par les métho<strong>des</strong> de l’objet.Par défaut, les métho<strong>des</strong> d’une classe sont « public » : les métho<strong>des</strong> d’un objet sont accessiblespar tous les « clients » de l’objet.<strong>UML</strong> définit quatre niveaux de visibilitéLa visibilité <strong>des</strong> attributs et <strong>des</strong> métho<strong>des</strong> est précisée par <strong>des</strong> mot-clés ou <strong>des</strong> symbolesSymbole Mot-clé Signification+ Public Visible partoutVisible dans tout le paquetage où la classe est définie# Protected Visible dans la classe, dans ses sous-classes et par les amis.- Private Visible uniquement dans la classe et par les amis.Attribut de ClasseCertains attributs ont une valeur identique pour tous les objets de la classe. Ce sont <strong>des</strong> sortesde constantes définies au niveau de la classe. Ce sont les attributs de classe.En <strong>UML</strong>, ces attributs sont listés avec les autres, mais ils sont soulignés.Symbole Mot-clé SignificationSoulignéValeur identique pour tous les objets de la classeAttribut dérivéCertains attributs peuvent être calculés à partir d’autres attributs de la classe.En <strong>UML</strong>, ces attributs sont listés avec les autres, mais ils sont précédés d’un « / ».Symbole Mot-clé Signification/ Attribut dont la valeur est calculée à partir de celle d’autresattributsMéthode de ClasseEPITECH - CSI - <strong>UML</strong> – Analyse <strong>des</strong> données - 2007-2008 - page 14/43- Bertrand LIAUDET


Quand une méthode ne porte pas sur les attributs d’objet de la classe mais uniquement sur <strong>des</strong>attributs de classe ou sur <strong>des</strong> valeurs constantes, cette méthode est dite méthode de classe.En <strong>UML</strong>, ces métho<strong>des</strong> sont listées avec les autres, mais elles sont soulignées.Compartiment <strong>des</strong> responsabilitésLe compartiment <strong>des</strong> « responsabilités » liste l’ensemble <strong>des</strong> tâches que la classe doit réaliser.C’est une façon de lister les métho<strong>des</strong> dont on n’a pas encore défini l’entête. Quand laconception sera achevée, ce compartiment devra disparaître.Compartiment <strong>des</strong> exceptionsLe compartiment <strong>des</strong> « exceptions » liste les situations exceptionnelles devant être gérées par laclasse. Là encore, quand la conception sera achevée, ce compartiment devra disparaître.Les classes activesLes classes actives sont <strong>des</strong> classes dont les objets, eux-mêmes actifs, possède un flot decontrôle propre se déroulant en parallèle avec ceux <strong>des</strong> autres objets actifs. Classe et objet actifsont représentés par un cadre plus épais ou avec un trait double.Relation de dépendanceLes relations de dépendances sont utilisées quand il existe une relation sémantique entreplusieurs éléments qui n’est pas de nature structurelle.Notons particulièrement : est une relation de permission qui précise que l’élément source à accès à un l’élément<strong>des</strong>tination quelle que soit la visibilité de ce dernier. est une relation d’utilisation qui précise que l’élément source requiert la présence del’élément <strong>des</strong>tination pour son bon fonctionnement.A BAssociations entre classesComme dans le modèle entité-association (modèle conceptuel <strong>des</strong> données MERISE), on peut,avec <strong>UML</strong>, établir <strong>des</strong> relations (<strong>des</strong> associations) entre les classes.Il y a trois types d’associations entre classes :• Les associations simples• Les associations d’agrégation de composition• Les associations d’héritageLes deux premières expriment <strong>des</strong> relations entre les objets de deux classes (ou plus).EPITECH - CSI - <strong>UML</strong> – Analyse <strong>des</strong> données - 2007-2008 - page 15/43- Bertrand LIAUDET


L’association d’héritage permettent de définir <strong>des</strong> sous-ensembles dans un ensemble ouinversement de définir un ensemble à partir de sous-ensembles. Elle exprime une relation entreles classes et pas entre les objets.Les associations simplesAssociationUne association représente une relation structurelle entre <strong>des</strong> classes d’objets.Une ligne entre deux classes représente une association.Association binaire (arité = 2)La plupart <strong>des</strong> associations sont binaires : elles ne réunissent que deux classes.Association ternaire et plus (arité >2)L’association et ses différents ornementsmultiplicité nom multiplicitérôleNom et sens de lecture <strong>des</strong> associationsL’association peut avoir un nom. Le nom explicite le lien entre les deux classes. C’est souventun verbe. Le sens de lecture permet de préciser dans quel sens il faut lire le nom.rôlePersonne travaille pour entrepriseRôles <strong>des</strong> extrémités <strong>des</strong> associationsPersonne Employé entrepriseEmployeurLe rôle est un pseudo-attribut. On peut préciser sa visibilité (+, -, #)La plupart du temps, le nommage <strong>des</strong> rôles est limité en fonction de la navigabilité.EPITECH - CSI - <strong>UML</strong> – Analyse <strong>des</strong> données - 2007-2008 - page 16/43- Bertrand LIAUDET


Navigabilité <strong>des</strong> associationsABL’association n’est navigable que dans le sens de A vers B.Une association navigable uniquement dans un sens peut être vue comme une demi-association.Multiplicité (cardinalité) <strong>des</strong> associationsChaque extrémité de l’association peut porter une indication de multiplicité qui montre combiend’objets de la classe considérée peuvent être liés à un objet de l’autre classe.1 Un et un seul0..1 Zéro ou unNM..NN (entier naturel qui peut être précisé)De M à N (entiers naturels qui peuvent être précisés)* De zéro à plusieurs0..* De zéro à plusieurs1..* De un à plusieursPersonne Employé 1 Département0..* EmployeurChaque personne est employée dans un département et un seul.Les départements sont employeur de 0 ou plusieurs personnes.Attention :Les cardinalités sont mises à l’inverse du modèle entité-association (MCD) :Personne 1.1 Emploi 0..N DépartementEPITECH - CSI - <strong>UML</strong> – Analyse <strong>des</strong> données - 2007-2008 - page 17/43- Bertrand LIAUDET


Classe-AssociationUne association peut avoir ses propriétés qui ne sont disponibles dans aucune <strong>des</strong> classes qu’ellerelie.Pour cela, on relie une classe à une association :Personne Employé 1 Département0..* EmployeurPosteFonctionSalaireDateLa classe-association correspond à l’association non-hiérarchique du MCD.Contraintes sur les associationsToutes sortes de contraintes peuvent être définies sur les associations.Certaines s’appliquent à une seule association :• {ordonné} : précise qu’une collection (0..*) doit être ordonnée.Personne1 0..*{ordonné}CompteCertaines s’appliquent à plusieurs associations :• {sous ensemble} : précise qu’une collection est incluse dans une autre collection• {ou exclusif} : pour un objet donné, une seule association, parmi les associations contraintespar le ou exclusif, est possible.Qualification <strong>des</strong> associations (restriction)Parents d’élèvesClasse *d’école {sous-ensemble} Personne2 *DéléguésLa qualification <strong>des</strong> associations consiste à réduire le nombre d’occurrences d’une association.Elle ne s’applique qu’à <strong>des</strong> association dont la multiplicité est supérieure à 1 (sinon, le nombred’occurrences ne peut pas être réduit).donateurs 1 * donsEPITECH - CSI - <strong>UML</strong> – Analyse <strong>des</strong> données - 2007-2008 - page 18/43- Bertrand LIAUDET


Dans ce cas, la qualification ne peut s’appliquer qu’aux donateurs (un donateur peut faireplusieurs dons).donateurs attribut qualifiant 1 donsL’attribut qualifiant peut être extrait de la classe <strong>des</strong> dons.ou encore :donateurs numéro du don 1 0.1 donsdonateurs année du don 1 0.n donsLa qualification restreint la relation aux seuls couples concernés par un qualifieur.La qualification <strong>des</strong> associations est une forme d’association contrainte.Agrégation et compositionAgrégationL’agrégation est une association non symétrique dans laquelle une <strong>des</strong> extrémités, l’agrégat,joue un rôle prédominant par rapport à l’autre extrémité, l’élément agrégé.AgrégatElément agrégéQuelle que soit l’arité de l’association, il ne peut y avoir qu’un seul agrégat.L’agrégation représente en général une relation d’inclusion structurelle ou comportementale.Ecole Salle ChaiseFenêtreUne école est composé de plusieurs salles, qui elles-mêmes sont composées de plusieurs fenêtreset plusieurs chaises.En général, les agrégations sont navigables uniquement dans le sens Agrégat vers Elémentagrégé.En général, les agrégations sont <strong>des</strong> associations 1..*CompositionLa composition est un cas particulier d’agrégation.EPITECH - CSI - <strong>UML</strong> – Analyse <strong>des</strong> données - 2007-2008 - page 19/43- Bertrand LIAUDET


Composite0..1 *ComposantLa composition implique une coïncidence <strong>des</strong> durées de vie <strong>des</strong> composants et du composite : la<strong>des</strong>truction du composite implique la <strong>des</strong>truction de tous ses composants.La composition implique aussi une contrainte sur les valeurs de multiplicité du côté del’agrégat : elle ne peut être que 0 ou 1 : un composant ne peut pas être partageable.Ecole Salle ChaiseFenêtreSi on supprime la salle, les fenêtres sont aussi supprimées. Ce qui n’est pas le cas <strong>des</strong> chaises.GénéralisationLe terme généralisation désigne une relation de classification entre un élément plus général (legenre) et un élément plus spécifique (l’espèce). La classe Chat est une espèce de la classeAnimal.On parle de classe spécifique, ou sous-classe, ou classe enfant.Et de classe générale, ou sur-classe, ou super classe, ou classe parent, ou classe mère.Chat Animal GirafeOu encore :ChienAnimalChat Chien GirafeDistinction entre généralisation et compositionUn chat est un animal : c’est une généralisation. La classe chat est une partie de la classe animal.Chaque objet « chat-x » appartient à la classe « chat » et à la classe « animal ».Un chat a deux oreilles : c’est une composition. L’objet « oreille » est une partie de l’objet« chat ». Pour tout objet « chat », il existe deux objets « oreille ».EPITECH - CSI - <strong>UML</strong> – Analyse <strong>des</strong> données - 2007-2008 - page 20/43- Bertrand LIAUDET


HéritageLa classe spécifique contient <strong>des</strong> attributs et <strong>des</strong> métho<strong>des</strong> qui lui sont propres.La classe spécifique hérite de tous les attributs, métho<strong>des</strong> et associations de la classe générale,sauf pour ceux qui sont privées.Une classe spécifique peut redéfinir une ou plusieurs métho<strong>des</strong>. C’est le principe de la surcharge<strong>des</strong> opérations. Un objet utilise les opérations les plus spécialisées dans la hiérarchie <strong>des</strong> classes.Un objet spécifique peut être utilisé partout où un objet général est attendu : partout où onattend un animal, on peut utiliser un chat.Généralisation multipleUne sous-classe peut avoir plusieurs sur-classesLes classes InterfacePrésentationUne classe « interface » prend en charge la communication entre le système et sonenvironnement, que ce soit un utilisateur ou un autre système.Ce comportement est caractérisé par un ensemble d’opérations ayant une visibilité « public ».Ces opérations sont réalisées dans <strong>des</strong> classes « entité ».L’interface peut regrouper <strong>des</strong> opérations communes à plusieurs classes.CaractéristiquesUne interface est une classe avec le stéréotype « interface ».C’est une classe particulière :• elle est abstraite : ell n’a pas d’instance qui la réalisent (pas d’objets).• elle ne contient pas d’attributs.Une interface est réalisée par la classe à laquelle elle est reliée.Les opérations de l’interface sont toutes abstraites (et définies dans la ou les classes qui laréalisent).Représentation <strong>des</strong> interfacesune classe une interface une classe Vue ALa flèchesignifie que la source réalise la <strong>des</strong>tination est le nom d’un stéréotypeEPITECH - CSI - <strong>UML</strong> – Analyse <strong>des</strong> données - 2007-2008 - page 21/43- Bertrand LIAUDET


On peut préciser le stéréotype du lien : « réalise » (ce n’est pas obligé).une classeVue ASi plusieurs classes partagent les mêmes métho<strong>des</strong> d’interface (et non plus seulement opérationsabstraites), une seule classe réalisera l’interface, les autres l’utilisent : stéréotype « use ».ou encore :Classe 1 Classe 2Classe 1 Classe 2MéthodePour trouver les interfaces, il faut examiner toutes les paires : ( acteurs physiques - scénario ).On a intérêt à créer une classe interface par cas et sous-cas d’utilisation (include et extend).Les interfaces se trouvent à un haut niveau d’abstraction. On commence par renseigner lesbesoins en interfaces utilisateur sans les implémenter. Ces classes seront affinées au fur et àmesure.On a intérêt à regrouper les interfaces dans un paquetage à part.Les classes de variables et d’opérations globales : stéréotype MathPI :Real=3,14Sinus (angle): RealCosinus(angle): RealTangente(Angle):RealEPITECH - CSI - <strong>UML</strong> – Analyse <strong>des</strong> données - 2007-2008 - page 22/43- Bertrand LIAUDET


Les classes paramétrables : templateUne classe paramétrable est un modèle de classe.Une classe paramétrable a <strong>des</strong> paramètres formels.Une classe paramétrable est liée à <strong>des</strong> paramètres effectifs pour devenir une classe paramétréequi pourra être instanciée.ParamètresformelsClasse paramétrableCe genre de classe n’apparaît généralement pas en analyse.Les classes activesPar défaut, les classes sont passives.Une classe active possède son propre flot d’exécution.Les classes actives peuvent être <strong>des</strong> ou <strong>des</strong> .Un processus est un flot de contrôle lourd qui s’exécute dans un espace d’adressageindépendant.Un thread est un flot de contrôle léger qui s’exécute à l’intérieur d’un processus.Une classe active cho un ou plusieurs flots de contrôle.Représentation <strong>UML</strong>Le rectangle de la classe est en gras ou en trait double.Construction d’un diagramme de classes : 3 grands types de classe3 points de vue guident la modélisation du diagramme <strong>des</strong> classes :• Le point de vue statique• Le point de vue fonctionnel• Le point de vue dynamiqueEPITECH - CSI - <strong>UML</strong> – Analyse <strong>des</strong> données - 2007-2008 - page 23/43- Bertrand LIAUDET


Le point de vue statique : les classe « entité » ou « métier »• Il met l’accent sur les concepts du domaine et les associations qui les relient.• Les classes correspondantes sont parfois stéréotypées par le nom « entité » ou « entity »:c’est le point de vue qui se rapproche le plus du MCD.Méthode de construction du diagramme <strong>des</strong> classes « entité » :• Analyse du type de celle faite pour un MCD. Il s’agit de trouver les classes (entités), lesattributs et les associations à partir de la <strong>des</strong>cription « métier » du domaine.• En même temps ou à la suite, ajouter les métho<strong>des</strong> (les responsabilités au sens large)• En même temps ou à la suite, organiser et simplifier le diagramme en utilisant l’héritage.• En même temps ou à la suite, ajouter les classes « interface » et « control »• Itérer et affiner le modèleLe point de vue fonctionnel : les classes « interface »• Il met l’accent sur les interfaces : interfaces utilisateur ou interfaces avec d’autres systèmes.• Les classes correspondantes sont stéréotypées par le nom « interface » ou « boundary ».• Les classes « interface » constituent la partie du système qui dépend de l’environnement.Méthode pour trouver les classes « interface » :• Examiner les paires acteur - scénario (occurrence de cas d’utilisation).• Les classes correspondent en gros à une étape de l’interaction avec l’utilisateur. Si on adécrit <strong>des</strong> cas d’utilisation inclus ou étendus, chaque cas d’utilisation correspondra à uneclasse interface. Dans le cas d’une extension, le cas d’utilisation qui regroupe les extensionscorrespondra aussi à une classe interface.• Ne pas hésiter à travailler à un haut niveau d’abstraction : ces classes seront affinéespendant la conception.Le point de vue dynamique : les classes « control »• Il met l’accent sur l’implémentation.• Les classes correspondantes sont stéréotypées par le nom « control ».• Les classes « control » modélisent le séquençage comportemental (une séquence est unesuite ordonnée d’opérations ; le séquençage est la détermination de la séquence).Méthode pour trouver les classes « control » :• Ajouter une classe « control » pour chaque paire acteur / cas d’utilisation.• Les classes « control » définies par le couple acteur/cas d’utilisation ne sont qu’un point dedépart : au cours de l’avancement de l’analyse, elle pourront être éliminées, éclatées oufusionnées.EPITECH - CSI - <strong>UML</strong> – Analyse <strong>des</strong> données - 2007-2008 - page 24/43- Bertrand LIAUDET


Attention !!!Les classes « interface » et « control » ne doivent pas conduire à dissocier le comportement etles données :• Elles ne doivent pas conduire à revenir à la programmation procédurale !• Elles ne doivent pas appauvrir le diagramme <strong>des</strong> classes « entité ».Le point de vue essentiel reste le point de vue <strong>des</strong> classes « entité ». Les deux autres points devue servent :• A rendre plus concrète la modélisation• A partir d’un niveau d’abstraction élevé• A affiner le diagramme <strong>des</strong> classes « entité ».EPITECH - CSI - <strong>UML</strong> – Analyse <strong>des</strong> données - 2007-2008 - page 25/43- Bertrand LIAUDET


3. Exercices corrigésL’employéTrouver le diagramme de classe de la situation suivante :Un employé est caractérisé par son nom, son prénom, son sexe et son âge. Les responsabilitésde la classe sont, entre autres, le calcul de l’âge, le calcul du revenu de l’employé et le calcul <strong>des</strong>charges patronales (ce que l’employeur paie en plus du salaire de l’employé). Les attributs de laclasse sont privés. Le nom, le prénom et l’âge de l’employé font partie de l’interface de la classeemployé.Deux types de revenus sont envisagés : le salaire et toutes les autres sources de revenu. Oncalcule les charges en appliquant un coefficient de 15 % sur le salaire et de 20% sur les autresrevenus.Un objet de la classe « employé » peut être créé à partir du nom et de la date de naissance.(d’après <strong>UML</strong>-2, édition Pearson Education).Solution avec classe interface « lolipop » :EmployeInterface Employés-Charges Salaire : float = 0,5-ChargesAutreRevenus : float = 0,2-Nom : string-Prénom : string-Sexe : char-DateNais : Date+getNom() : string+getPrenom() : string+calculAge() : int+Employe(entrée nom : string, entrée dateNais : Date) : Employe+CalculRevenuNet() : float+CalculCharges() : floatEPITECH - CSI - <strong>UML</strong> – Analyse <strong>des</strong> données - 2007-2008 - page 26/43- Bertrand LIAUDET


Représentation avec classe interface héritée :«interface»Interface Employés+getNom() : string+getPrenom() : string+calculAge() : intEmploye-Charges Salaire : float = 0,5-ChargesAutreRevenus : float = 0,2-Nom : string-Prénom : string-Sexe : char-DateNais : Date+getNom() : string+getPrenom() : string+calculAge() : int+Employe(entrée nom : string, entrée dateNais : Date) : Employe+CalculRevenuNet() : float+CalculCharges() : floatExplications complémentaires :• Les 3 opérations de la classes interfaces sont abstraites, comme la classe interface. C’estdans la classe employé que les opérations seront réalisées.• 2 attributs de classe (soulignés)• 4 attributs d’instance• Les 3 premières opérations sont <strong>des</strong> opérations d’interface (calculAge, getNom,getPrenom). Rien ne les distingue visuellement <strong>des</strong> opérations de la classe. Mais dans lastructure Visio, elles sont rangées dans la classe interface Employés.• On peut aussi représenter la classe interface comme une classe « normale » en montrant lesopérations de la classe. Rappelons que les classes interface sont <strong>des</strong> classes abstraites• Les 3 opérations suivantes sont celles de la classe Employés. Les opérations en italiquessont celles qui sont encore abstraites. On ne connaît pas l’algorithme (on ne sait pascomment on calcule le salaire et les charges patronales). On parle de « responsabilités »pour les métho<strong>des</strong> abstraites et de « méthode » pour les métho<strong>des</strong> concrètes.• Remarque : il existe <strong>des</strong> opérations par défaut qu’il n’est pas nécessaire de préciser :constructeur<strong>des</strong>tructeursgetAttribut par attributsetAttribut par attribut• Constructeurs C ++ correspondant :( ) ;//## constructeur de base, par défautEPITECH - CSI - <strong>UML</strong> – Analyse <strong>des</strong> données - 2007-2008 - page 27/43- Bertrand LIAUDET un(const Employes &right) ;//## constructeur de recopie, par défaut un• Ou : Employes (const Employes &) ;(string, date);//## constructeur spécifique un─ Employes un─ Employes─ Employes


• Destructeur C ++ correspondant :( ) ;//## <strong>des</strong>tructeur par défaut• Get et Set C ++ correspondant :String getNom () const;setNom (String value);Ou : void setNom (String);String get_Prenom () const;setPrenom (String value);Ou : void setPrenom (String);─ ~Employes─ etc.─ const─ void─ void─ constL’hôtelTrouver le diagramme de classes de la situation suivante :Un hôtel est composé d’au moins deux chambres. Chaque chambre dispose d’une salle d’eau quipeut être une douche ou une salle de bain. L’hôtel héberge <strong>des</strong> personnes. Il peut employer dupersonnel et est dirigé par un <strong>des</strong> employés. L’hôtel a les caractéristiques suivantes : uneadresse, le nombre de pièces, la catégorie. Une chambre est caractérisée par le nombre et le typede lits, le prix et le numéro. On peut calculer le chiffre d’affaires et le prix de la chambre enfonction du nombre d’occupants. On gère aussi la réservation <strong>des</strong> chambres. On peut connaître àtout moment la disponibilité <strong>des</strong> chambres.(d’après <strong>UML</strong>-2, édition Pearson Education).EPITECH - CSI - <strong>UML</strong> – Analyse <strong>des</strong> données - 2007-2008 - page 28/43- Bertrand LIAUDET


Solution :Hotel-Nom : string-Adresse : string-Catégorie : int+calculCA() : float+disponibilitéChambre() : Liste de Chambre+réserverChambre()+facturerOccupation()1facturation2..*Chambre-Numéro : int-nbLitSimple : int-nbLitDouble : int-nbLitEnfant : int-salleDEau : string*Occupation-dateArrivée : Date-dateDépart : Date-nbAdulte : int-nbEnfant : int-coût : float*emploie+calculCoût()est dirigé parPersonne-Nom : string-Prénom : string-Adresse : string*1..*-employés-directeur1EmployéClientExplications complémentaires :• L’hôtel est composé de chambres. Si on détruit l’hôtel, les chambres sont détruites. Enréalité, ce n’est pas un très bon exemple, à moins de considérer que l’hôtel est aussicomposé d’occupations et d’employés. La composition crée une liste de référence parvaleurs (et non pas par adresse comme dans le cas de l’agrégation simple).• Tous les liens qui partent de l’hôtel ne sont navigables que dans le sens de l’hôtel vers lesclasses liées. En effet, c’est à partir de l’hôtel quelles sont les chambres de l’hôtel, quellessont les chambres disponibles, quelles sont les employés de l’hôtel. On pourra aussi calculerle chiffre d’affaire à partir de l’occupation <strong>des</strong> chambres.• Les réservations sont gérées comme <strong>des</strong> occupations.• DisponibilitéChambre renvoie la liste <strong>des</strong> chambres. On l’utilisera pour faire la réservation.• RéserverChambre ne ressort rien : on met à jour les données et c’est tout.• Facturer l’occupation ne renvoie rien : le résultat est directement affecté à l’attribut coût del’occupation.• CalculCA renvoie le résultat. On en fera ensuite ce qu’on veut.• Personnes est une classe abstraite (en italique). Elle n’est jamais instanciée.EPITECH - CSI - <strong>UML</strong> – Analyse <strong>des</strong> données - 2007-2008 - page 29/43- Bertrand LIAUDET


4. Génération de C++ClasseClasse A sans navigabilité vers BAa1 : Doublea2 : Date1Bb1 : Booleanb2 : Integerclass A {public://## Constructors (generated)A();A(const A &right);//## Destructor (generated)~A();//## Assignment Operation (generated)A & operator=(const A &right);//## Equality Operations (generated)int operator==(const A &right) const;int operator!=(const A &right) const;//## Le générateur de code génère un constructeur de base, un constructeurde recopie, un <strong>des</strong>tructeur, un opérateur d’affectation, un opérateurd’égalité et un opérateur de différence.private: //## Get and Set Operations for Class Attributes (generated)//## Attribute: a1const Double get_a1 () const;void set_a1 (Double value);EPITECH - CSI - <strong>UML</strong> – Analyse <strong>des</strong> données - 2007-2008 - page 30/43- Bertrand LIAUDET


## Attribute: a2const Date get_a2 () const;void set_a2 (Date value);//## Le générateur de code génère un un get et un set pour tous lesattributs. A noter que ces métho<strong>des</strong> sont « private ».private: // Data Members// for Class AttributesDouble a1;Date a2;};//## Get and Set Operations for Class Attributes (inline)inline const Double A::get_a1 () const {return a1;}inline void A::set_a1 (Double value) {a1 = value;}inline const Date A::get_a2 () const {return a2;}inline void A::set_a2 (Date value) {a2 = value;}Classe et navigabilitéClasse A avec navigabilité vers 1 BAa1 : Doublea2 : Date1Bb1 : Booleanb2 : IntegerEPITECH - CSI - <strong>UML</strong> – Analyse <strong>des</strong> données - 2007-2008 - page 31/43- Bertrand LIAUDET


class A {public://## Get and Set Operations for Associations (generated)const B * get_the_B () const;void set_the_B (B * value);private: // Data Members// for Class AttributesDouble a1;Date a2;};// for AssociationsB *the_B;//## Le générateur de code ajoute un attribut dans la classe A : « the_B »qui est un pointeur sur un objet B. Il ajoute aussi un un get et un set pour« the_B ». A noter que ces métho<strong>des</strong> sont « public ».//## Get and Set Operations for Associations (inline)inline const B * A::get_the_B () const {return the_B;}inline void A::set_the_B (B * value) {the_B = value;}Classe A avec navigabilité vers 1..15 BAa1 : Doublea2 : Date 1..15Bb1 : Booleanb2 : Integerclass A {EPITECH - CSI - <strong>UML</strong> – Analyse <strong>des</strong> données - 2007-2008 - page 32/43- Bertrand LIAUDET


public://## Get and Set Operations for Associations (generated)const BoundedSetByReference get_the_B () const;void set_the_B (BoundedSetByReference value);private: // Data Members// for AssociationsBoundedSetByReference the_B;};//## Get and Set Operations for Associations (inline)inline const BoundedSetByReference A::get_the_B () const {return the_B;}inline void A::set_the_B (BoundedSetByReference value) {the_B = value;}Classe, navigabilité et agrégationClasse A avec navigabilité et agrégation vers 1 BB * the_B;//## On travaille par référence. En détruisant A, on ne détruit pas les 15B.A noter que c’est la même chose que la navigabilité toute seule. La notiond’agrégation n’est qu’une façon d’appuyer sur le rôle plus fort de A parrapport à B.Classe A avec navigabilité et agrégation vers 15 BB * the_B[15];Classe A avec navigabilité et agrégation vers 0..1 BB * the_B;Classe A avec navigabilité et agrégation vers 1..10 BBundedSetByReference the_B;Classe A avec navigabilité et agrégation vers 1..n BUnBundedSetByReference the_B;Classe A avec navigabilité et agrégation vers n BEPITECH - CSI - <strong>UML</strong> – Analyse <strong>des</strong> données - 2007-2008 - page 33/43- Bertrand LIAUDET


UnBundedSetByReference the_BClasse, navigabilité et compositionClasse A avec navigabilité et composition vers 1 BB the_B;//## On travaille par valeur. En détruisant A, on détruit B (ou les B dansles cas suivants).Classe A avec navigabilité et composition vers 15 BB the_B[15];Classe A avec navigabilité et composition vers 0..1 BOptionalByValue the_B;Classe A avec navigabilité et composition vers 1..n BUnbundedSetByValue the_B;Classe A avec navigabilité et composition vers n BUnbundedSetByValue the_BClasse associationA1 1..5BCclass C {public://## Get and Set Operations for Associations (generated)const BoundedSetByReference get_the_B () const;void set_the_B (BoundedSetByReference value);const A * get_the_A () const;void set_the_A (A * value);EPITECH - CSI - <strong>UML</strong> – Analyse <strong>des</strong> données - 2007-2008 - page 34/43- Bertrand LIAUDET


private: // Data Members// for AssociationsA *the_A;BoundedSetByReference the_B;};HéritageAB#include “A.h”class B : public A {...};EPITECH - CSI - <strong>UML</strong> – Analyse <strong>des</strong> données - 2007-2008 - page 35/43- Bertrand LIAUDET


5. Paquetages et vue logiquePrésentationLa vue logique est constituée par les classes et les paquetages.L’organisation en paquetage est un élément clé de l’architecture.Les principaux paquetages apparaissent très tôt dans la phase d’analyse.Les paquetagesUn paquetage permet de regrouper les classes pour faciliter leur emploi, leur maintenance et leurréutilisation.Dans la version 2 d’<strong>UML</strong>, un paquetage peut regrouper n’importe quels éléments demodélisations (les cas d’utilisation, etc.).ClientInclusion de paquetageUn paquetage peut inclure un autre paquetage.Un paquetage peut être inclus dans deux paquetages différents.Les paquetages de cas d’utilisation définissent <strong>des</strong> sous-domaines fonctionnels du systèmeétudiés. Ces sous-domaines peuvent partager <strong>des</strong> cas d’utilisation.BanqueCompteTransactionEPITECH - CSI - <strong>UML</strong> – Analyse <strong>des</strong> données - 2007-2008 - page 36/43- Bertrand LIAUDET


Nommage <strong>des</strong> paquetagesBanque ::Compte désigne le paquetage Compte défini dans le paquetage BanqueSi le cas d’utilisation « Retirer argent » se trouve dans le paquetage transaction, on écrira :Banque ::Compte ::Retirer argent pour le désigner.Dépendances entre paquetages : ajoute les éléments du paquetage <strong>des</strong>tination au paquetage source.Si on ne précise pas le stéréotype, c’est « importe » par défaut.Les éléments du paquetage <strong>des</strong>tination sont visibles dans le paquetage source. Toutefois, il n’y apas de relation de possession.Paquetage métiers, paquetages interfaces et paquetages techniquesLa vue logique est élaborée au début de la phase d’analyse architectonique avec les classes« métier ».Dès cette étape, on distinguera entre les classes métiers et les classes interfaces. On regrouperaaussi les classes interfaces dans un paquetage interface.• Paquetage Interface : il permet de regrouper les classes interfaces et ainsi de définir lesclasses métier indépendamment de leur utilisation.Ensuite, en fonction <strong>des</strong> choix de programmation effectués (langage, gestion d’une base dedonnées, gestion <strong>des</strong> erreurs, etc.), on pourra avoir d’autres paquetages dans l’architecture de lavue logique :• Paquetage BaseDeDonnées : il permet de gérer le problème de la permanence <strong>des</strong> données.• Paquetage IHM : il contient <strong>des</strong> classes fournies par le langage de programmation.• Paquetage ClassesDeBase (global) : c’est un paquetage qui est utilisé par tous les autrespaquetages du système.• PaquetageGestionDesErreurs (global) : c’est un paquetage spécialisé dans la gestion <strong>des</strong>erreurs et qui est utilisé par tous les autres paquetages du système.Enfin, l’analyse <strong>des</strong> classes métiers permettra de les regrouper dans différents paquetagesmétiers.• Paquetages Métiers : ils permettent de définir <strong>des</strong> ensembles de classes portables d’un projetà un autre.EPITECH - CSI - <strong>UML</strong> – Analyse <strong>des</strong> données - 2007-2008 - page 37/43- Bertrand LIAUDET


Amélioration de l’analyse <strong>des</strong> classes : notion de métaclasseUne métaclasse est une classe (2) d’une classe (1). La métaclasse est telle qu’un objet de cetteclasse contient <strong>des</strong> données et <strong>des</strong> opérations qui caractérisent plusieurs objets de la classe dontelle est issue : classe (1).Exemple :Soit la classe <strong>des</strong> vols d’une compagnie aérienne. Cette classe contient les attributs suivants :VolnumérodateDépartheureDépartdateArrivéeheureArrivéejourLe numéro du vol caractérise tous les vols qui ont lieu le même jour de la semaine à la mêmeheure.En réalité, cette classe modélise deux classes : la métaclasse <strong>des</strong> « genres de vols » -VolGénérique - et la classe <strong>des</strong> vols concrets.La classe <strong>des</strong> vols concrets ne contient que les attributs : dateDépart et dateArrivée.VolGénériqueVolNuméro 1 décrit * dateDépartheureDépartdateArrivéeheureArrivéejourDétermination <strong>des</strong> paquetages métier et réduction du couplageÀ partir de la première analyse <strong>des</strong> classes métiers, on va réfléchir à leur regroupement dansdifférents paquetages métiers.Cette analyse est en partie logique : on regroupe ensemble ce qui va ensemble, et en partieintuitive : parfois les limites ne sont pas évidentes à trouver.Le choix <strong>des</strong> frontières entre les paquetages se fera aussi en fonction du couplage entre lespaquetages c’est-à-dire de la navigabilité entre les classes.Paquetage 1 Paquetage 2Classe 1 Classe 2EPITECH - CSI - <strong>UML</strong> – Analyse <strong>des</strong> données - 2007-2008 - page 38/43- Bertrand LIAUDET


Réduction de la navigabilité entre les classes et du couplage entre les paquetages :Paquetage 1 Paquetage 2Classe 1 Classe 2Le choix de la navigabilité est fait en fonction de l’utilisation prévue pour les classes. Ce choixdoit être justifié.Paquetage réutilisableUn paquetage est réutilisable quand il ne dépend d’aucun autre paquetage.Paquetage généralisé - paquetage spécialiséSi on est amené à déterminer <strong>des</strong> classes abstraites qui seront donc spécialisées par d’autresclasses, on peut créer une frontière de paquetage entre la classe abstraite et ses classesspécialisées.Le paquetage contenant la classe abstraite est alors dit « paquetage généralisé ». Il n’est pas ditpaquetage abstrait car il peut aussi, par ailleurs, contenir <strong>des</strong> classes concrètes.Le paquetage contenant les classes concrète est alors dit « paquetage spécialisé ».La relation entre les deux paquetages est une relation de généralisation :Paquetage spécialiséPaquetage généraliséClasse 1 Classe 2Paquetage paramétré (ou générique ou template) et bound package<strong>UML</strong> 2 introduit la notion de paquetage paramétré (ou paquetage générique, ou paquetagetemplate).Les paquetages liés au paquetage paramétré sont appelés bound package.Cette notion est encore très expérimentale !EPITECH - CSI - <strong>UML</strong> – Analyse <strong>des</strong> données - 2007-2008 - page 39/43- Bertrand LIAUDET


Notion de pattern et de frameworkPrésentationLes patterns sont <strong>des</strong> micro-architectures finies.Les frameworks dont <strong>des</strong> architectures semi-finies.Ils permettent d’élever la granularité de la modélisation, et d’éviter de réinventer la roue àchaque projet !Classes Pattern FrameworkGranularité croissanteCaractéristiques <strong>des</strong> patterns• Les patterns synthétisent l’élaboration itérative de solutions éprouvées, qui ont évolué aucours du temps pour fournir <strong>des</strong> structures toujours plus flexibles et plus facilementréutilisables.• Les patterns forment un vocabulaire de très haut niveau et très expressif. Les informaticienshabitués aux patterns identifient, nomment et parlent <strong>des</strong> problèmes et <strong>des</strong> solutions enutilisant ce vocabulaire.• Les patterns sont indépendants de tout langage de programmation, ce qui leur confère unegrande généricité. En contrepartie, il n’y a pas de réutilisation de code et un effort deprogrammation est requis pour les mettre en œuvre.Les différents types de patterns• Les patterns de conception (<strong>des</strong>ign patterns) : ce sont les plus populaires car ce sont lespatterns <strong>des</strong> informaticiens.• Les patterns d’analyse ou patterns métier : les deux notions sont équivalentes. Ilsdépendent d’un secteur d’activité particulier.• Les patterns d’architecture : ils décrivent la structure <strong>des</strong> architectures logicielles, commela structuration en couches.• Les patterns organisationnels : ils fournissent <strong>des</strong> solutions à <strong>des</strong> problèmesorganisationnels, telle l’organisation <strong>des</strong> activités de développement logiciel.• Les patterns d’implémentation : ils expliquent comment exploiter un langage deprogrammation pour résoudre certains problèmes typiques.• Les patterns pédagogiques : ils décrivent <strong>des</strong> solutions récurrentes dans le domaine del’apprentissage.EPITECH - CSI - <strong>UML</strong> – Analyse <strong>des</strong> données - 2007-2008 - page 40/43- Bertrand LIAUDET


Exemple de <strong>des</strong>ign pattern : Le pattern « composite »* Elément1 Nœud FeuilleCe pattern est décrit dans « Design Patterns : Elements of Reusable Object-Oriented Software,E. Gamma et al., 1995, Addison-Wesley.Il fournit une solution pour modéliser les arbres.Caractéristiques <strong>des</strong> frameworks• Les frameworks définissent <strong>des</strong> ossatures pour <strong>des</strong> familles d’applications.• L’architecture d’un framework est générique, volumineuse et complexe.• Un framework est une architecture semi-finie dictant l’architecture générale de l’applicationou du sous-système à construire.• Un framework peut être représenté par : les cas d’utilisation (le comportement externe), lespaquetages (la macrostructure statique) et les collaborations (les patterns).• Il faut fournir un effort important pour comprendre l’architecture générale <strong>des</strong> classes quicomposent un framework et ainsi pour le maîtriser (cas <strong>des</strong> MFC : IHM sous Windows :même si la création d’une fenêtre est une tâche aisée, il faut compter 6 mois pour maîtriserles MFC).• Contrairement aux patterns, un framework est implémenté afin de permettre ledéveloppement rapide de nouvelles applications. Il dépend ainsi du langage deprogrammation utilisé pour son implémentation.Classification <strong>des</strong> frameworks selon leur domaine d’utilisation• Les frameworks métier (framework verticaux) : ils encapsulent l’expertise d’un domaineparticulier.• Les frameworks d’application (framework horizontaux) : ils encapsulent l’expertisetechnique applicable à plusieurs domaines.Classification <strong>des</strong> frameworks selon leur structure• Les frameworks boîte blanche : ce sont <strong>des</strong> applications semi-finies dont la spécialisationse fait par définition de sous-classes. Il faut connaître la structure interne <strong>des</strong> super-classespour les spécialiser.EPITECH - CSI - <strong>UML</strong> – Analyse <strong>des</strong> données - 2007-2008 - page 41/43- Bertrand LIAUDET


• Les frameworks boîte noire .Intérêt <strong>des</strong> frameworksDu fait de l’architecture générique qu’il propose, le framework permet :• Productivité accrue.• Prototypage rapide.• Évolution facilitée.• Maintenance facilitée.EPITECH - CSI - <strong>UML</strong> – Analyse <strong>des</strong> données - 2007-2008 - page 42/43- Bertrand LIAUDET


6. TP : VisioDiagramme de classesCréer un diagramme de structure statique.ClasseMettre <strong>des</strong> classesDouble cliquer sur la classe.Changer le nom.On peut choisir « is abstract » pour les classes abstraites.InterfaceMettre une interface.Relier la à la classe.Avec bouton droit, on passe de la représentation « lolipop » à la représentation « classe ».AttributMéthodeChoisir la « catégories - attributs » : on va définir les attributs.Pour définir le type <strong>des</strong> attributs, faire « propriété » puis « type ».Pour les attributs de classe, choisir « portéePropriété » : « classificateur » et non pas « instance »+ « modifiable » à « gelé ».Choisir la « catégories - opérations » : on va définir les opérations.Pour définir le type <strong>des</strong> opérations, faire « propriété » puis « type ».GénéralisationLiensChoisir « Généralisation »Lier les classes avec les points d’accroche.Choisir « Association binaire », « Composition » ou « Classe d’association ».Lier les classes avec les points d’accroche.Double cliquer sur le lien. Modifier le nom de terminaison, la multiplicité, le isnavigable etl’agrégation pour chaque terminaison de l’association.On peut donner un nom à l’association et l’afficher avec bouton droit, option d’affichage <strong>des</strong>formes.EPITECH - CSI - <strong>UML</strong> – Analyse <strong>des</strong> données - 2007-2008 - page 43/43- Bertrand LIAUDET

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!