Modélisation structurelle UML
Exercice n°1 - Choix des relations statiques Pour chaque phrase, il s'agit d'identifier les classes, la relation la plus appropriée et d'en déduire les diagrammes correspondants. Dans le cadre de ce corrigé textuel, les diagrammes sont représentés par leur description logique complète. Phrase A - Frontières des pays Énoncé : La Tunisie est frontalière à l’Algérie.
D'après le document Modélisation structurelle UML
Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.

Document source
Informatique, UML, Modélisation · École Nationale des Sciences de l'Informatique (ENSI) · PDF · 2 pages · 2011
Afficher l'aperçu du document
Exercice n°1 - Choix des relations statiques
Pour chaque phrase, il s'agit d'identifier les classes, la relation la plus appropriée et d'en déduire les diagrammes correspondants. Dans le cadre de ce corrigé textuel, les diagrammes sont représentés par leur description logique complète.
Phrase A - Frontières des pays
Énoncé : La Tunisie est frontalière à l’Algérie. La Lybie est frontalière à la Tunisie.
- Analyse : "Tunisie", "Algérie" et "Lybie" sont des instances d'une même notion : un Pays. La relation "être frontalier" relie des pays entre eux. C'est donc une association réflexive (un pays est lié à d'autres pays). Cette relation est sémantiquement symétrique.
- Diagramme de classes :
Classe :
PaysAssociation réflexive :frontalierreliantPaysàPays(multiplicité0..*de chaque côté, car un pays peut avoir zéro ou plusieurs pays frontaliers). - Diagramme d'objets : <u>tunisie : Pays</u> ----(frontalier)---- <u>algerie : Pays</u> <u>tunisie : Pays</u> ----(frontalier)---- <u>lybie : Pays</u>
Phrase B - Personne et foule
Énoncé : Une personne est dans une foule. Une foule contient plusieurs personnes.
- Analyse : Une foule est un regroupement de personnes. Si la foule se disperse (est détruite), les personnes continuent d'exister. Il s'agit donc d'une relation "tout/partie" faible, c'est-à-dire une agrégation.
- Diagramme de classes :
Classe :
FouleClasse :PersonneRelation : Agrégation (losange vide du côté deFoule). Multiplicités :Foule0..*<>----1..*Personne(une foule contient au moins une ou plusieurs personnes, une personne peut être dans zéro ou plusieurs foules). - Diagramme d'objets : <u>f1 : Foule</u> <>---- <u>p1 : Personne</u> <u>f1 : Foule</u> <>---- <u>p2 : Personne</u>
Phrase C - Personne et équipe
Énoncé : Une personne fait partie de plusieurs équipes. Une équipe contient plusieurs personnes.
- Analyse : Similaire à la foule, une équipe rassemble des personnes. C'est une relation "tout/partie" où le cycle de vie des personnes est indépendant de celui de l'équipe. L'agrégation est tout à fait indiquée (une simple association "membre de" avec multiplicités .. est également acceptée en UML).
- Diagramme de classes :
Classe :
EquipeClasse :PersonneRelation : Agrégation (losange vide côtéEquipe). Multiplicités :Equipe0..*<>----1..*Personne. - Diagramme d'objets : <u>e1 : Equipe</u> <>---- <u>p1 : Personne</u> <u>e2 : Equipe</u> <>---- <u>p1 : Personne</u> <u>e2 : Equipe</u> <>---- <u>p2 : Personne</u>
Phrase D - Transaction bancaire
Énoncé : Une transaction bancaire est un achat ou une vente.
- Analyse : L'expression "est un" ou "est une" est le marqueur direct de la généralisation (héritage). Achat et Vente sont des cas particuliers (sous-classes) de Transaction Bancaire.
- Diagramme de classes :
Super-classe abstraite :
TransactionBancaireSous-classes :AchatetVente. Relation : Généralisation (flèche à bout triangulaire vide pointant deAchatetVenteversTransactionBancaire). - Diagramme d'objets : <u>t1 : Achat</u> (qui possède implicitement les propriétés d'une TransactionBancaire) <u>t2 : Vente</u> Note : On n'instancie jamais directement la classe mère si elle représente uniquement un concept abstrait décliné en sous-classes.
Phrase E - Compte et personne
Énoncé : Un compte bancaire peut appartenir à une personne physique ou morale.
- Analyse : Il y a ici deux types de relations. "Personne physique" et "personne morale" sont des spécialisations de la classe abstraite "Personne" (généralisation). Le "compte bancaire" appartient à une "Personne" (association simple).
- Diagramme de classes :
Classes :
CompteBancaire,Personne(abstraite),PersonnePhysique,PersonneMorale. Relations :- Généralisation :
PersonnePhysiqueetPersonneMoralehéritent dePersonne. - Association "appartient à" :
CompteBancaire0..*----1Personne(en supposant qu'un compte a un seul titulaire pour simplifier, bien que des comptes joints existent).
- Généralisation :
- Diagramme d'objets : <u>c1 : CompteBancaire</u> ---- <u>p1 : PersonnePhysique</u> <u>c2 : CompteBancaire</u> ---- <u>entrep1 : PersonneMorale</u>
Exercice n°2 - Liens de parenté et famille
Question 1 - Déduction des informations à partir des diagrammes
L'énoncé présente textuellement des rôles liés à une ou plusieurs associations réflexives sur la classe Personne.
Selon les rôles identifiés dans l'énoncé (-enfants 0..*, -père 1, -mère 1, -conjoint 0..* ou 1), voici ce que l'on peut déduire pour une personne donnée :
- Ses fils ? On peut connaître l'ensemble de ses enfants via le rôle
-enfants. Cependant, la classePersonnene possédant que les attributs-nomet-prénom(et aucun attribut de genre tel quesexe), il est impossible de distinguer les fils des filles. - Ses garçons (resp. ses filles) ? Même réponse que précédemment. On connaît les enfants, mais pas leur genre. C'est impossible sans ajouter une information à la classe.
- Son père (resp. sa mère) ? Oui. Le modèle indique explicitement des rôles
-père(multiplicité 1) et-mère(multiplicité 1). On peut donc naviguer d'une instance de Personne vers les instances spécifiques jouant les rôles de père et mère. - Son conjoint ? Oui, le modèle indique un rôle
-conjointpermettant de connaître le partenaire de la personne.
Question 2 - Diagramme d'objets de la famille
Nous devons représenter les instances et leurs liens conformément au modèle incluant les rôles père, mère et conjoint. La famille est composée d'Ali (père), Emna (mère), Houda et Maher (fils/filles).
Diagramme d'objets :
Nous avons 4 objets de type Personne.
- <u>ali : Personne</u> (nom = ?, prénom = "Ali")
- <u>emna : Personne</u> (nom = ?, prénom = "Emna")
- <u>houda : Personne</u> (nom = ?, prénom = "Houda")
- <u>maher : Personne</u> (nom = ?, prénom = "Maher")
Liens entre les objets :
- Conjoint : <u>ali</u> est lié à <u>emna</u> via la relation conjoint.
- Père : Le lien de parenté lie chaque enfant à son père. <u>houda</u> ----(père)----> <u>ali</u> <u>maher</u> ----(père)----> <u>ali</u>
- Mère : Le lien de parenté lie chaque enfant à sa mère. <u>houda</u> ----(mère)----> <u>emna</u> <u>maher</u> ----(mère)----> <u>emna</u>
- Enfants (inverse de père/mère ou association distincte) : <u>ali</u> ----(enfants)----> <u>houda</u> et <u>maher</u> <u>emna</u> ----(enfants)----> <u>houda</u> et <u>maher</u>
Exercice n°3 - Diagrammes de classes d'analyse
Question 1.a - Le bateau de croisière
Modélisation et Argumentation :
- Composition : Un
Bateaucontient desCabine. Une cabine fait intrinsèquement partie d'un bateau spécifique et n'a pas de sens en dehors de celui-ci. Relation de composition (losange plein côté Bateau). - Généralisation : "Les personnes sont ou bien des guides, ou bien des animateurs, ou bien des passagers". La classe
Personneest la classe mère (généralisation).Guide,AnimateuretPassagersont des classes filles. - Généralisation : Même chose pour les activités, on crée une classe mère
Activiteet des classes fillesVisiteetAnimation. - Associations :
- Les cabines sont occupées par des personnes : Association
occupeentreCabineetPersonne. - Les guides expliquent des visites aux passagers : Association ternaire entre
Guide,VisiteetPassager(ou décomposée en deux associations, un guide dirige une visite, et des passagers participent à une visite). - Les animateurs animent des animations pour les passagers : Même logique.
- Les cabines sont occupées par des personnes : Association
Opérations :
- Classe
Guide: opérationexpliquer(v : Visite, p : Passager) - Classe
Animateur: opérationanimer(a : Animation, p : Passager)
Question 1.b - Les fenêtres "type Windows"
Modélisation et Argumentation :
- Composition : Une
Fenetreest toujours composée d'unMenu, deBouton(s) et deTexte. La fenêtre contrôle le cycle de vie de ses composants. Losanges pleins côtéFenetre. - Agrégation / Composition : Une
Fenetrecontient parfois uneListeDeroulante. Composition avec une multiplicité0..1ou0..*côté Liste. - Composition : Un
Menucontient plusieursRubrique. - Généralisation (Types) :
- "Il existe deux types de fenêtres" :
FenetrePrincipaleetFenetreSecondairehéritent de la classe abstraiteFenetre. - "Plusieurs types de rubriques dont Fichier, Edition, Affichage" : Les classes
Fichier,EditionetAffichagehéritent de la classe abstraiteRubrique.
- "Il existe deux types de fenêtres" :
- Association réflexive (ou entre sous-classes) : Une fenêtre principale peut ouvrir une fenêtre secondaire. Association "ouvre" de
FenetrePrincipaleversFenetreSecondaire.
Opérations :
- Classe abstraite
Fenetre: opérationfermer()(car "il doit être possible de fermer toutes les fenêtres"). - Classe
FenetrePrincipale: opérationouvrirSecondaire()(qui instancie ou rend visible uneFenetreSecondaire).
Question 2 - Diagrammes d'objets pour l'exercice 3
Pour l'énoncé (a) - Le Bateau :
- <u>bat1 : Bateau</u> contient (composition) <u>cab1 : Cabine</u>
- <u>cab1</u> est occupée par <u>p1 : Passager</u>
- <u>g1 : Guide</u> explique <u>v1 : Visite</u>
- <u>p1 : Passager</u> participe à la visite <u>v1</u>
Pour l'énoncé (b) - Les Fenêtres :
- <u>f_princ : FenetrePrincipale</u> est composée de <u>m1 : Menu</u>, <u>b1 : Bouton</u>, <u>t1 : Texte</u>.
- <u>m1</u> est composé des rubriques <u>r1 : Fichier</u>, <u>r2 : Edition</u>.
- <u>f_princ</u> est liée à (ouvre) <u>f_sec : FenetreSecondaire</u>.
- <u>f_sec</u> est composée de <u>m2 : Menu</u>, <u>b2 : Bouton</u>, <u>t2 : Texte</u>, et <u>l1 : ListeDeroulante</u>.
Exercice n°4 : Arbre syntaxique d'une expression
Soit l'expression : (X+Y/2)/(X/3+Y)
Question 1 - Classes pertinentes
Cette problématique est classiquement résolue par le patron de conception "Composite". Une expression mathématique est un arbre où les feuilles sont des variables ou des constantes, et les nœuds internes sont des opérations. Les classes sont :
Expression(ou Noeud) : Classe abstraite représentant tout élément de la formule.OperationBinaire: Sous-classe deExpression(modélisant les opérateurs/et+).Variable: Sous-classe deExpression(modélisantXetY).Constante: Sous-classe deExpression(modélisant2et3).
Question 2 - Diagramme de classes
- Classe abstraite
Expressionavec une méthodeevaluer(). - La classe
OperationBinairepossède un attributoperateur(de type caractère ou énumération) et possède deux associations dirigées versExpressionavec les rôlesoperandeGauche(1) etoperandeDroite(1). Elle hérite deExpression. - La classe
Variablepossède un attributnom(chaine). Elle hérite deExpression. - La classe
Constantepossède un attributvaleur(réel). Elle hérite deExpression.
Question 3 - Diagramme d'objets
Il s'agit de modéliser l'arbre syntaxique abstrait pour (X+Y/2) / (X/3+Y).
- Nœud Racine : <u>div_principale : OperationBinaire</u> (operateur = '/')
- Opérande Gauche de la racine : <u>add_gauche : OperationBinaire</u> (operateur = '+')
- Opérande Gauche : <u>varX1 : Variable</u> (nom = 'X')
- Opérande Droite : <u>div_gauche : OperationBinaire</u> (operateur = '/')
- Op. G : <u>varY1 : Variable</u> (nom = 'Y')
- Op. D : <u>const2 : Constante</u> (valeur = 2)
- Opérande Droite de la racine : <u>add_droite : OperationBinaire</u> (operateur = '+')
- Opérande Gauche : <u>div_droite : OperationBinaire</u> (operateur = '/')
- Op. G : <u>varX2 : Variable</u> (nom = 'X')
- Op. D : <u>const3 : Constante</u> (valeur = 3)
- Opérande Droite : <u>varY2 : Variable</u> (nom = 'Y')
- Opérande Gauche : <u>div_droite : OperationBinaire</u> (operateur = '/')
- Opérande Gauche de la racine : <u>add_gauche : OperationBinaire</u> (operateur = '+')
Exercice n°5 : SI Entreprise
Cet exercice demande un modèle de domaine simple incluant trois entités principales et leurs relations structurelles.
Identification des Classes et Attributs
- Classe
DirectionRegionale- Attributs :
- code : String,- libelle : String
- Attributs :
- Classe
AgenceLocale- Attributs :
- code : String,- intitule : String,- dateCreation : Date,- dateFermeture : Date
- Attributs :
- Classe
Personne- Attributs :
- numero : int,- qualite : String(M., Mme, Mlle),- nom : String,- prenom : String,- dateNaissance : Date,- datePrevisionnelleArrivee : Date,- dateArrivee : Date,- dateDepart : Date
- Attributs :
Identification des Relations
- Relation "Pilote" entre
DirectionRegionaleetAgenceLocale:- "Chaque région est pilotée par une direction... qui a en charge un certain nombre d'agences"
- Type : Association ou Agrégation (la direction regroupe les agences).
- Multiplicités :
DirectionRegionale1-----1..*AgenceLocale(une direction dirige une ou plusieurs agences ; une agence dépend d'une seule direction).
- Relation "Est rattachée à" entre
AgenceLocaleetPersonne:- "À une agence sont rattachées une à plusieurs personnes"
- Type : Association simple.
- Multiplicités :
AgenceLocale1-----1..*Personne(une agence emploie une ou plusieurs personnes ; on suppose ici qu'une personne travaille dans une seule agence locale à la fois).
Remarque : Bien que l'énoncé indique un certain nombre d'attributs de manière brute, dans une modélisation poussée (qui n'est pas demandée ici), le type de la "qualité" pourrait devenir une énumération (Enum Civilite) pour mieux contrôler les valeurs.
Méthode
Face à une épreuve de modélisation structurelle UML (diagrammes de classes et d'objets) :
- Identification lexicale : Repérez les noms (qui deviendront vos classes), les adjectifs ou informations secondaires (qui deviendront les attributs), et les verbes d'action ou d'appartenance (qui définiront vos associations et opérations).
- Choix des relations (Le point bloquant classique) :
- Si la phrase dit "est un" / "sont des", utilisez la généralisation (héritage).
- Si la phrase dit "est composé de" ou si la partie n'a pas de raison d'exister sans le tout (ex: pièce d'une maison), utilisez la composition (losange plein).
- Si la phrase évoque un regroupement ("contient", "fait partie de") mais que les éléments vivent indépendamment (ex: équipe et joueur), utilisez l'agrégation (losange vide) ou une association simple.
- Diagrammes d'objets : Rappelez-vous qu'un objet est une instance spécifique. Nommez-le clairement avec la syntaxe
nomObjet : NomClasseet attribuez des valeurs concrètes à ses propriétés. Les relations entre objets sont de simples traits pleins (liens) instanciant les associations du diagramme de classes. - Patrons de conception : L'exercice 4 fait appel au patron Composite. En modélisation orientée objet, savoir reconnaître des structures récurrentes (comme un arbre syntaxique, un système de fenêtrage ou une architecture client/serveur) permet de dessiner des diagrammes robustes beaucoup plus rapidement.
Commentaires
Aucun commentaire pour le moment. Posez la première question.