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.

Modélisation structurelle UML

Document source

Modélisation structurelle UML

Informatique, UML, Modélisation · École Nationale des Sciences de l'Informatique (ENSI) · PDF · 2 pages · 2011

Afficher l'aperçu du document

Consulter le document original →

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 : Pays Association réflexive : frontalier reliant Pays à 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 : Foule Classe : Personne Relation : Agrégation (losange vide du côté de Foule). Multiplicités : Foule 0..* <>---- 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 : Equipe Classe : Personne Relation : Agrégation (losange vide côté Equipe). Multiplicités : Equipe 0..* <>---- 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 : TransactionBancaire Sous-classes : Achat et Vente. Relation : Généralisation (flèche à bout triangulaire vide pointant de Achat et Vente vers TransactionBancaire).
  • 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 :
    1. Généralisation : PersonnePhysique et PersonneMorale héritent de Personne.
    2. Association "appartient à" : CompteBancaire 0..* ---- 1 Personne (en supposant qu'un compte a un seul titulaire pour simplifier, bien que des comptes joints existent).
  • 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 classe Personne ne possédant que les attributs -nom et -prénom (et aucun attribut de genre tel que sexe), 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 -conjoint permettant 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.

  1. <u>ali : Personne</u> (nom = ?, prénom = "Ali")
  2. <u>emna : Personne</u> (nom = ?, prénom = "Emna")
  3. <u>houda : Personne</u> (nom = ?, prénom = "Houda")
  4. <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 Bateau contient des Cabine. 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 Personne est la classe mère (généralisation). Guide, Animateur et Passager sont des classes filles.
  • Généralisation : Même chose pour les activités, on crée une classe mère Activite et des classes filles Visite et Animation.
  • Associations :
    • Les cabines sont occupées par des personnes : Association occupe entre Cabine et Personne.
    • Les guides expliquent des visites aux passagers : Association ternaire entre Guide, Visite et Passager (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.

Opérations :

  • Classe Guide : opération expliquer(v : Visite, p : Passager)
  • Classe Animateur : opération animer(a : Animation, p : Passager)

Question 1.b - Les fenêtres "type Windows"

Modélisation et Argumentation :

  • Composition : Une Fenetre est toujours composée d'un Menu, de Bouton(s) et de Texte. La fenêtre contrôle le cycle de vie de ses composants. Losanges pleins côté Fenetre.
  • Agrégation / Composition : Une Fenetre contient parfois une ListeDeroulante. Composition avec une multiplicité 0..1 ou 0..* côté Liste.
  • Composition : Un Menu contient plusieurs Rubrique.
  • Généralisation (Types) :
    • "Il existe deux types de fenêtres" : FenetrePrincipale et FenetreSecondaire héritent de la classe abstraite Fenetre.
    • "Plusieurs types de rubriques dont Fichier, Edition, Affichage" : Les classes Fichier, Edition et Affichage héritent de la classe abstraite Rubrique.
  • Association réflexive (ou entre sous-classes) : Une fenêtre principale peut ouvrir une fenêtre secondaire. Association "ouvre" de FenetrePrincipale vers FenetreSecondaire.

Opérations :

  • Classe abstraite Fenetre : opération fermer() (car "il doit être possible de fermer toutes les fenêtres").
  • Classe FenetrePrincipale : opération ouvrirSecondaire() (qui instancie ou rend visible une FenetreSecondaire).

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 de Expression (modélisant les opérateurs / et +).
  • Variable : Sous-classe de Expression (modélisant X et Y).
  • Constante : Sous-classe de Expression (modélisant 2 et 3).

Question 2 - Diagramme de classes

  • Classe abstraite Expression avec une méthode evaluer().
  • La classe OperationBinaire possède un attribut operateur (de type caractère ou énumération) et possède deux associations dirigées vers Expression avec les rôles operandeGauche (1) et operandeDroite (1). Elle hérite de Expression.
  • La classe Variable possède un attribut nom (chaine). Elle hérite de Expression.
  • La classe Constante possède un attribut valeur (réel). Elle hérite de Expression.

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')

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

  1. Classe DirectionRegionale
    • Attributs : - code : String, - libelle : String
  2. Classe AgenceLocale
    • Attributs : - code : String, - intitule : String, - dateCreation : Date, - dateFermeture : Date
  3. Classe Personne
    • Attributs : - numero : int, - qualite : String (M., Mme, Mlle), - nom : String, - prenom : String, - dateNaissance : Date, - datePrevisionnelleArrivee : Date, - dateArrivee : Date, - dateDepart : Date

Identification des Relations

  1. Relation "Pilote" entre DirectionRegionale et AgenceLocale :
    • "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 : DirectionRegionale 1 ----- 1..* AgenceLocale (une direction dirige une ou plusieurs agences ; une agence dépend d'une seule direction).
  2. Relation "Est rattachée à" entre AgenceLocale et Personne :
    • "À une agence sont rattachées une à plusieurs personnes"
    • Type : Association simple.
    • Multiplicités : AgenceLocale 1 ----- 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) :

  1. 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).
  2. 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.
  3. Diagrammes d'objets : Rappelez-vous qu'un objet est une instance spécifique. Nommez-le clairement avec la syntaxe nomObjet : NomClasse et 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.
  4. 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.

Partager

Commentaires

Aucun commentaire pour le moment. Posez la première question.

Les commentaires sont relus avant publication. Votre e-mail n'est jamais affiché.

← Toutes les révisions