📚 Conception des Systùmes d'Information — GL2 INSAT

Le Guide Ultime
des Diagrammes UML

Tout ce que tu dois savoir pour les Cours 1→4, expliquĂ© simplement — comme si t'avais 5 ans 🧒

đŸ‘€

Cas d'Utilisation

Acteurs, use cases, include, extend, généralisation...

đŸ§±

Diagramme de Classes

Classes, attributs, associations, héritage, composition...

🔄

Diagramme de Séquence

Messages, lignes de vie, fragments alt/loop/opt/ref...

🔗

Diag. de Communication

Liens, numérotation, messages imbriqués...

🌍 C'est quoi UML ?

Avant de dessiner des diagrammes, comprends pourquoi on en a besoin.

đŸ€” Imagine que tu construis une maison...

Tu ne commences pas directement Ă  poser des briques, non ? D'abord, tu fais un plan (l'architecte dessine). UML, c'est exactement pareil mais pour les logiciels.

  • UML = Unified Modeling Language (Langage de ModĂ©lisation UnifiĂ©)
  • C'est un langage graphique, pas un langage de programmation !
  • Il permet de dessiner des plans pour comprendre un systĂšme avant de le coder
  • NormalisĂ© par l'OMG (Object Management Group)

📊 Diagrammes Statiques

Montrent la structure du systĂšme (c'est quoi les piĂšces de la maison ?)

  • Diagramme de Classes ⭐
  • Diagramme d'Objets
  • Diagramme de Paquetages
  • Diagramme de Composants

🎬 Diagrammes Dynamiques

Montrent le comportement (comment les choses bougent ?)

  • Diagramme de Cas d'Utilisation ⭐
  • Diagramme de SĂ©quence ⭐
  • Diagramme de Communication
  • Diagramme d'États-Transitions
  • Diagramme d'ActivitĂ©s

đŸ—ïž Le SystĂšme d'Information (SI)

Définition simple : Le SI d'une entreprise = toutes les données + tous les traitements nécessaires à son fonctionnement.

Donnée vs Information

ConceptC'est quoi ?Exemple
DonnéeSigne + code (brut)71540325
InformationDonnée + interprétation"C'est un numéro de téléphone"
ConnaissanceInformation interprétée"C'est un abonné de Tunis"

📜 Les 3 gĂ©nĂ©rations de mĂ©thodes de conception

GĂ©nĂ©rationApprochePoints Forts ✅Points Faibles ❌
1Úre Cartésienne Simple, bon sens, capture des besoins Focus fonctions, pas de réutilisation
2Ăšme SystĂ©mique CohĂ©rence donnĂ©es, 3 niveaux d'abstraction Manque de cohĂ©rence donnĂ©es↔traitements
3Úme Objet (UML) Modélise objets complexes, intÚgre données + traitements, encapsulation "Tout objet" difficile à apprendre

đŸ‘€ Diagramme de Cas d'Utilisation

Le premier diagramme qu'on fait — il rĂ©pond Ă  la question : "Qui fait quoi avec le systĂšme ?"

📖 C'est quoi ?

Imagine un restaurant đŸœïž. Le diagramme de cas d'utilisation, c'est comme lister :

  • Qui vient au restaurant ? → Les Acteurs (client, serveur, cuisinier...)
  • Que font-ils ? → Les Cas d'Utilisation (commander, payer, cuisiner...)
  • Quels liens entre ces actions ? → Les Relations
💡 Objectif Principal C'est un outil de communication avec le client. Il montre les fonctionnalitĂ©s du systĂšme du point de vue de l'utilisateur. C'est le cahier des charges visuel.

đŸ§© Les 4 Composants

1. Le SystĂšme (le rectangle)

Un grand rectangle qui représente les limites du systÚme. Tout ce qui est dedans = ce que le systÚme fait. Tout ce qui est dehors = l'environnement.

📩 SystĂšme Restaurant Client (acteur principal) Banque (acteur secondaire) Commander Payer Payer par CB Payer en liquide «extend» «extend»

2. Les Acteurs (les bonhommes)

TypeDescriptionPosition
Principal Celui qui initie le cas d'utilisation et en tire un bĂ©nĂ©fice đŸ”” À gauche
Secondaire SollicitĂ© pour des infos complĂ©mentaires (ne dĂ©marre rien) 🟡 À droite
⚠ Attention ! Un acteur peut ĂȘtre une personne (client, admin) ou un systĂšme externe (banque, API, serveur...). Ce n'est PAS forcĂ©ment un humain !

3. Les Cas d'Utilisation (les ellipses)

Chaque ellipse = une fonctionnalité que le systÚme offre. Le nom est toujours un verbe à l'infinitif.

4. Les Relations

RelationSymboleSignificationExemple Simple 🧒
Association Trait simple —— L'acteur participe au cas Le client utilise "Commander"
«include» FlĂšche pointillĂ©e → Le cas A inclut TOUJOURS le cas B "Retirer argent" inclut toujours "S'authentifier"
«extend» FlĂšche pointillĂ©e → Le cas B est optionnel/exceptionnel pour le cas A "Payer" peut ĂȘtre Ă©tendu par "Payer en CB"
GĂ©nĂ©ralisation FlĂšche avec triangle △ Relation parent → enfant (hĂ©ritage) "Client VIP" hĂ©rite de "Client"

🎯 Include vs Extend — La Confusion #1

C'est la question piĂšge favorite des profs. Voici comment ne JAMAIS se tromper :

✅ «include» (toujours)

Le cas principal a BESOIN du cas inclus. Sans lui, ça ne marche pas.

Retirer argent ----«include»---→ S'authentifier (Tu DOIS t'authentifier pour retirer)

Truc : La flĂšche part du cas principal VERS le cas inclus

đŸ”¶ «extend» (parfois)

Le cas étendu peut ou ne peut pas se produire. C'est optionnel.

Payer ←---«extend»---- Payer par CB (Payer par CB est UNE OPTION de payer)

Truc : La flĂšche part du cas optionnel VERS le cas principal

🧠 Moyen mnĂ©motechnique ULTIME «include» = "J'ai INCLUS mon dĂ©jeuner dans mon sac, je l'emporte TOUJOURS"
«extend» = "J'ÉTENDS ma serviette Ă  la plage SI il fait beau (optionnel)"

Direction des flĂšches :
‱ include : Cas principal → → → Cas inclus (je vais CHERCHER ce dont j'ai besoin)
‱ extend : Cas optionnel → → → Cas principal (le cas optionnel VIENT se greffer)

📝 Comment Construire un Diagramme de Cas d'Utilisation (Pas à Pas)

  1. Identifie le SYSTÈME
    Lis l'énoncé et trouve ce qu'on construit. Dessine le rectangle avec le nom du systÚme.
  2. Trouve les ACTEURS
    Cherche les noms de personnes/rÎles/systÚmes externes dans le texte. Pose la question : "Qui utilise le systÚme ?" et "Qui est sollicité par le systÚme ?"
  3. Trouve les CAS D'UTILISATION
    Cherche les verbes d'action dans le texte : "le client peut consulter", "le serveur enregistre"... Chaque verbe = un cas potentiel.
  4. Relie les acteurs aux cas
    Chaque acteur est relié par un trait simple aux cas auxquels il participe.
  5. Ajoute les relations entre cas
    Y a-t-il des actions obligatoires (include) ? Des alternatives optionnelles (extend) ? Des spécialisations (généralisation) ?
  6. Vérifie la cohérence
    Chaque acteur est lié à au moins un cas. Chaque cas est lié à au moins un acteur. Pas de cas "orphelin".

🔍 Comment Analyser un ÉnoncĂ© (Exemple TD1)

Prenons l'exercice de l'agence de voyages :

📋 Texte : "Une agence de voyages organise des voyages oĂč l'hĂ©bergement se fait en hĂŽtel. Le client doit disposer d'un taxi quand il arrive Ă  la gare. Certains clients demandent Ă  l'agent de voyages d'Ă©tablir une facture dĂ©taillĂ©e. Le voyage se fait soit par avion, soit par train."

🔎 Analyse mot par mot :

  • Acteurs : Client (celui qui demande) — acteur principal
  • SystĂšme : Agence de voyages
  • Cas principaux : "Organiser voyage", "RĂ©server hĂ©bergement", "RĂ©server transport"
  • "soit par avion, soit par train" → C'est un «extend» ou une gĂ©nĂ©ralisation de "RĂ©server transport"
  • "certains clients demandent une facture dĂ©taillĂ©e" → C'est optionnel → «extend»
  • "doit disposer d'un taxi" → C'est obligatoire → «include»
🔑 Mots-clĂ©s magiques dans les Ă©noncĂ©s :
  • "doit", "toujours", "obligatoire" → «include»
  • "peut", "certains", "optionnel", "soit...soit" → «extend»
  • "est un type de", "est aussi" → gĂ©nĂ©ralisation

⚖ RĂšgles de CohĂ©rence (Erreurs Ă  ne PAS faire)

❌ ERREUR : Acteur dans le systùme Un acteur est TOUJOURS à l'EXTÉRIEUR du rectangle systùme. Jamais dedans !
❌ ERREUR : Cas sans acteur Chaque cas d'utilisation doit ĂȘtre reliĂ© Ă  au moins un acteur (directement ou indirectement via include/extend).
❌ ERREUR : Trait entre 2 acteurs Les acteurs ne communiquent pas entre eux ! Seule relation possible : la gĂ©nĂ©ralisation (hĂ©ritage).
❌ ERREUR : Trop de dĂ©tails Un cas d'utilisation n'est PAS un "bouton" ou une "page web". C'est un SERVICE complet rendu Ă  l'acteur.

📄 Description Textuelle d'un Cas d'Utilisation

Chaque cas d'utilisation peut (et souvent doit) ĂȘtre dĂ©crit textuellement :

ChampDescription
NomLe nom du cas (verbe Ă  l'infinitif)
Acteur principalQui lance ce cas
PrĂ©conditionsCe qui doit ĂȘtre vrai AVANT
Scénario nominalLes étapes du cas normal (1, 2, 3...)
Scénarios alternatifsLes variantes (extend)
PostconditionsCe qui est vrai APRÈS

đŸ§± Diagramme de Classes

Le diagramme STAR ⭐ d'UML — il montre la structure de ton systùme : les objets et leurs liens.

📖 C'est quoi ?

Le diagramme de cas d'utilisation dit Ă  QUOI sert le systĂšme. Le diagramme de classes dit DE QUOI il est fait.

Imagine un jeu LEGO đŸ§±. Le diagramme de classes, c'est la notice qui liste toutes les piĂšces et comment elles s'emboĂźtent.

📩 Comment dessiner une Classe

Une classe a 3 compartiments :

Personne - nom: String - age: int + getNom(): String + getAge(): int + setNom(n: String): void ← Nom ← Attributs ← OpĂ©rations

Visibilité des attributs/opérations

SymboleVisibilitĂ©Signification 🧒
-privatePersonne ne peut y toucher sauf moi
+publicTout le monde peut y accéder
#protectedMoi et mes enfants seulement
~packageCeux de mon groupe/paquet

🔗 Les Associations (les liens entre classes)

Association Simple

Un trait entre deux classes = elles sont liées. On peut ajouter :

  • Nom de l'association (un verbe : "emploie", "possĂšde"...)
  • RĂŽles (Ă  chaque extrĂ©mitĂ© : "employeur", "employĂ©")
  • Sens de lecture (petite flĂšche ▶)
Personne Entreprise emploie ▶ -employĂ© 1..* -employeur 0..1

⭐ Les Multiplicités (SUPER IMPORTANT)

NotationSignificationExemple 🧒
1Exactement 1 (obligatoire)1 personne a exactement 1 cerveau
0..10 ou 1 (optionnel)1 personne a 0 ou 1 voiture
* ou 0..*0 ou plusieurs1 personne peut avoir 0 ou plein d'amis
1..*Au moins 11 équipe a au minimum 1 joueur
n..mEntre n et m1 main a entre 0 et 5 doigts
🧠 Comment lire les multiplicitĂ©s ? Lis toujours depuis UNE instance d'un cĂŽtĂ© vers l'autre cĂŽtĂ© :

Personne 1..* ————— 0..1 Entreprise

→ "1 Entreprise emploie 1 ou plusieurs (1..*) Personnes"
→ "1 Personne travaille dans 0 ou 1 (0..1) Entreprise"

⚠ La multiplicitĂ© est TOUJOURS du cĂŽtĂ© OPPOSÉ Ă  la classe qu'on lit !

💎 AgrĂ©gation vs Composition

C'est la question piĂšge #2 des profs !

◇ AgrĂ©gation (losange VIDE)

Relation "contient" mais les parties peuvent exister seules.

Exemple : Une Équipe ◇—— Joueur

Si l'équipe est dissoute, les joueurs existent encore ! Ils peuvent rejoindre une autre équipe.

◆ Composition (losange PLEIN)

Relation "composé de" et les parties meurent avec le tout.

Exemple : Une Maison ◆—— Piùce

Si la maison est détruite, les piÚces n'existent plus !

🧠 Test magique en 2 questions :
  1. Si je dĂ©truis le tout, les parties sont-elles dĂ©truites aussi ? OUI → Composition ◆
  2. Une partie peut-elle appartenir Ă  plusieurs "touts" en mĂȘme temps ? NON → Composition ◆
Si tu rĂ©ponds OUI Ă  Q1 ET NON Ă  Q2 → Composition ◆
Sinon → AgrĂ©gation ◇
Équipe Joueur ◇ AgrĂ©gation (vide) Maison PiĂšce ◆ Composition (plein)

🧬 HĂ©ritage (GĂ©nĂ©ralisation / SpĂ©cialisation)

C'est comme une famille đŸ‘šâ€đŸ‘©â€đŸ‘§ : l'enfant hĂ©rite des caractĂ©ristiques du parent mais peut avoir les siennes en plus.

  • La classe enfant hĂ©rite tous les attributs et opĂ©rations du parent
  • L'enfant peut redĂ©finir (override) les mĂ©thodes du parent
  • Toutes les associations du parent s'appliquent aux enfants
  • Principe de substitution : partout oĂč on attend un Animal, on peut mettre un Chat đŸ±
VĂ©hicule Voiture 🚗 Moto đŸïž Camion 🚛

🎓 Concepts AvancĂ©s

📎 Classe d'Association

Quand une association elle-mĂȘme a des attributs ou des opĂ©rations, on crĂ©e une classe d'association.

Exemple : Personne — travaille — SociĂ©tĂ©. Le "contrat de travail" a un salaire et une date → classe d'association "Contrat"

Elle est reliée à l'association par un trait en pointillé.

🔒 Classe Abstraite & Interface

Classe abstraite : Une classe qu'on ne peut pas instancier directement. Son nom est en italique. Elle contient au moins une méthode abstraite (sans corps).

Interface : Un "contrat" qui dit quelles opérations une classe doit implémenter. Notation : «interface» au-dessus du nom.

Relation d'implĂ©mentation = flĂšche pointillĂ©e avec triangle vide △

🧭 NavigabilitĂ©

Une flÚche à une extrémité indique dans quel sens on peut traverser l'association.

A ——→ B signifie : A connaüt B, mais B ne connaüt pas A.

Par défaut (pas de flÚche) : la navigabilité est dans les deux sens.

📊 Diagramme d'Objets (compagnon du diag. de classes)

Le diagramme d'objets montre des instances concrÚtes à un moment donné.

  • Le nom est soulignĂ© : jean:Personne
  • On montre les valeurs des attributs (pas les types)
  • Pas de multiplicitĂ©s dans un diagramme d'objets !

Diagramme de classes = les RÈGLES / Diagramme d'objets = les FAITS

🔹 Comment Construire un Diagramme de Classes (Pas à Pas)

  1. Trouver les CLASSES
    Cherche les noms / substantifs importants dans le texte. "Client", "Commande", "Produit" → ce sont des classes.
  2. Trouver les ASSOCIATIONS
    Cherche les verbes qui relient deux classes. "Le client passe une commande" → association entre Client et Commande.
  3. Trouver les MULTIPLICITÉS
    Pour chaque association, pose la question : "1 Client peut passer combien de commandes ?" et "1 Commande est passée par combien de clients ?"
  4. Trouver les ATTRIBUTS
    Cherche les détails (nom, prix, date...) = ce sont des attributs. Ils sont plus "petits" que des classes.
  5. Organiser avec l'HÉRITAGE
    Y a-t-il des "types de" ? "Un vĂ©lo est un type de produit" → hĂ©ritage.
  6. Vérifier agrégation/composition
    Y a-t-il des relations "fait partie de" ? Utilise le test des 2 questions.
  7. Raffiner et itérer
    Vérifie les chemins d'accÚs. Simplifie. Ajoute les opérations si demandé.
🔑 Truc pour diffĂ©rencier Classe vs Attribut :
Si un concept a ses propres attributs ou relations → c'est une classe.
Si c'est juste une valeur simple (nom, ñge, prix) → c'est un attribut.

Exemple : "adresse" → Si c'est juste "12 rue X" → attribut. Si elle a (rue, ville, codePostal) → classe !

🔄 Diagramme de SĂ©quence

Il montre comment les objets discutent entre eux dans le temps — comme un script de film 🎬

📖 C'est quoi ?

Imagine un groupe WhatsApp đŸ“± : chaque personne envoie des messages, et tu vois l'ordre dans lequel ils arrivent (qui a parlĂ© en premier, en deuxiĂšme...). Le diagramme de sĂ©quence, c'est exactement ça !

  • Dimension horizontale → Les objets/acteurs (les "participants")
  • Dimension verticale ↓ Le temps (de haut en bas)
  • Les flĂšches = les messages Ă©changĂ©s

đŸ§© Les Composants

Client :Caisse :BaseDeDonnĂ©es 1: scanner(article) 2: getPrix(article) prix afficherPrix() 3: finVente() ← message synchrone (flĂšche pleine ▶) ← retour (flĂšche pointillĂ©e) ← asynchrone (flĂšche ouverte >) Zone d'activation Ligne de vie ↑

Les Participants

  • Ligne de vie = ligne verticale pointillĂ©e sous chaque participant = son "existence" dans le temps
  • Zone d'activation = petit rectangle sur la ligne de vie = le moment oĂč l'objet est actif (il fait quelque chose)

✉ Les Types de Messages

TypeFlùcheDescriptionExemple 🧒
Synchrone —▶ (pleine) L'envoyeur attend la rĂ©ponse avant de continuer Tu appelles quelqu'un au tel et tu attends qu'il dĂ©croche
Asynchrone —> (ouverte) L'envoyeur continue sans attendre Tu envoies un SMS et tu continues ta vie
Retour - - - > (pointillé) La réponse à un message synchrone La personne te rappelle avec la réponse
Création - -«create»- -> Crée un nouvel objet Tu crées un nouveau groupe WhatsApp
Destruction ❌ sur la ligne de vie DĂ©truit un objet Tu supprimes le groupe
RĂ©cursif FlĂšche qui revient sur soi L'objet s'envoie un message Ă  lui-mĂȘme Tu te parles tout seul đŸ€·

đŸ—ïž Les Fragments CombinĂ©s (Structures de contrĂŽle)

Ce sont des boĂźtes rectangulaires qui entourent des messages pour montrer des conditions, boucles, etc.

🔀 alt (si...sinon)

Comme un if/else. Divisé en 2 zones par une ligne pointillée. Chaque zone a sa condition entre [crochets].

┌─ alt ─────────────┐ │ [montant > 0] │ │ payer() │ │- - - - - - - - - -│ │ [else] │ │ erreur() │ └───────────────────┘

🔁 loop (boucle)

Comme un while. RépÚte les messages tant que la condition est vraie.

┌─ loop ────────────┐ │ [pour chaque │ │ article] │ │ scanner(article) │ │ afficherPrix() │ └────────────────────┘

❓ opt (optionnel)

Comme un if sans else. Le fragment est exécuté seulement SI la condition est vraie.

┌─ opt ─────────────┐ │ [clientFidùle] │ │ appliquerRemise()│ └───────────────────┘

📌 ref (rĂ©fĂ©rence)

Fait référence à un autre diagramme de séquence. Utile pour ne pas surcharger le schéma.

┌─ ref ─────────────┐ │ │ │ Processus de │ │ paiement │ │ │ └───────────────────┘

🔹 Comment Construire un Diagramme de SĂ©quence (Pas Ă  Pas)

  1. Identifie le SCÉNARIO
    Un diag. de séquence illustre UN scénario (souvent le scénario nominal d'un cas d'utilisation). Lis l'énoncé et identifie les étapes.
  2. Identifie les PARTICIPANTS
    Les acteurs + les objets impliqués. Regarde le diagramme de classes pour trouver les bonnes classes.
  3. Place-les horizontalement
    L'acteur Ă  gauche, puis les objets dans l'ordre oĂč ils interviennent.
  4. Trace les MESSAGES de haut en bas
    Suis l'ordre chronologique du scénario. Chaque étape = un message (ou plusieurs).
  5. Ajoute les RETOURS
    Chaque message synchrone doit avoir un message de retour (pointillé).
  6. Ajoute les FRAGMENTS si nécessaire
    S'il y a des conditions → alt/opt. Des boucles → loop. Des sous-scĂ©narios → ref.
🧠 CohĂ©rence avec le diagramme de classes !
  • Les participants doivent ĂȘtre des instances de classes qui existent dans le diag. de classes
  • Les messages doivent correspondre Ă  des opĂ©rations dĂ©finies dans la classe du destinataire
  • Les arguments des messages doivent ĂȘtre cohĂ©rents avec les paramĂštres des opĂ©rations

🔍 Analyse d'Exercice (TD3 — ChampionnatEchecs)

Voici comment aborder ce type d'exercice pas Ă  pas :

Question 1 : Comment modéliser admin et participants ?

Ce sont des acteurs (bonhommes allumettes). Ils sont extérieurs au systÚme.

L'administrateur crée le championnat et génÚre les parties.

Les participants s'inscrivent et jouent.

Question 2 : Création championnat + inscription 2 joueurs

Participants : Admin, :ChampionnatDEchecs, :Joueur1, :Joueur2

  1. Admin → «create» → :ChampionnatDEchecs(MAX=...)
  2. Participant1 → :ChampionnatDEchecs : inscriptionJoueur("nom1","prĂ©nom1")
  3. :ChampionnatDEchecs → «create» → :Joueur (numĂ©ro=1)
  4. Retour ← numĂ©ro=1
  5. Participant2 → :ChampionnatDEchecs : inscriptionJoueur("nom2","prĂ©nom2")
  6. :ChampionnatDEchecs → «create» → :Joueur (numĂ©ro=2)
  7. Retour ← numĂ©ro=2

⚠ CohĂ©rence : L'opĂ©ration inscriptionJoueur retourne un integer (le numĂ©ro) — exactement comme dans le diag. de classes !

Question 4 : Déroulement d'une partie en 4 coups

Astuce : Utilise un fragment loop pour les coups !

  1. Joueur1 → :Partie : jouerCoup("e2-e4")
  2. :Partie → :Partie : vĂ©rifierMat() → retour false
  3. Joueur2 → :Partie : jouerCoup("e7-e5")
  4. :Partie → :Partie : vĂ©rifierMat() → retour false
  5. ... (répéter)
  6. Au dernier coup : vĂ©rifierMat() → retour true
  7. :Partie → :Partie : finirPartie()

Le message vĂ©rifierMat() est un message rĂ©cursif (l'objet :Partie s'appelle lui-mĂȘme).

🔗 Diagramme de Communication

C'est le jumeau du diagramme de sĂ©quence — mĂȘme info, prĂ©sentation diffĂ©rente.

📖 C'est quoi ?

Imagine que au lieu de lire les messages d'un groupe WhatsApp de haut en bas (séquence), tu vois tous les participants reliés en réseau avec des numéros sur les messages. C'est le diagramme de communication !

  • Les objets sont des rectangles reliĂ©s par des traits (liens)
  • Les messages sont numĂ©rotĂ©s pour montrer l'ordre
  • C'est un graphe, pas une timeline

✍ Syntaxe des Messages

FormatSignificationExemple
4 : méthode()Message simple numéro 44 : Afficher(x,y)
3.3.1 : mĂ©thode()Message imbriquĂ© (3→3.3→3.3.1)3.3.1 : Afficher(x,y)
4.2 : ret := méthode()Avec valeur de retour4.2 : ùge := Calculer(date)
[condition] 6 : méthode()Message conditionnel[age>=18] 6.2 : Voter()
1 * : méthode()Message itéré (boucle)1 * : Laver()
:GUI :CourseSection :Course aStudent:Student :Registration 1: requestToRegister → 2: getPrereq → 3: hasPassedCourse? 4: «create» 5: addToSchedule →

⚔ SĂ©quence vs Communication — Quand utiliser quoi ?

📊 Diagramme de SĂ©quence

  • Quand l'ordre temporel est important
  • Quand on part d'un cas d'utilisation
  • Pour des scĂ©narios dĂ©taillĂ©s et longs
  • Plus facile Ă  lire pour les dĂ©butants

🔗 Diagramme de Communication

  • Quand on veut voir l'architecture
  • Pour valider le diag. de classes
  • Quand les relations entre objets comptent plus
  • ReflĂšte mieux la structure du systĂšme
💡 Ils sont Ă©quivalents ! Tout diagramme de sĂ©quence peut ĂȘtre converti en diagramme de communication et vice versa. C'est juste un point de vue diffĂ©rent sur la mĂȘme interaction.

🧠 Astuces pour RĂ©ussir TOUT Exercice

Les stratĂ©gies qui font la diffĂ©rence entre 10/20 et 18/20 đŸ’Ș

📋 Comment Lire un ÉnoncĂ© (MĂ©thode du Surlignage)

  1. 1Ăšre lecture : COMPRENDS le contexte
    Lis tout sans rien marquer. Comprends de quoi on parle (une banque ? un hĂŽpital ? un jeu ?).
  2. 2Ăšme lecture : SURLIGNE avec des couleurs mentales
    🟱 VERT = Acteurs (noms de personnes/rîles/systùmes externes)
    đŸ”” BLEU = Classes/EntitĂ©s (noms/concepts importants)
    🟡 JAUNE = Actions/Cas (verbes d'action)
    🟣 ROSE = Conditions ("si", "peut", "doit", "certains"...)
  3. 3ùme lecture : VÉRIFIE ce qu'on te demande
    Quel diagramme ? Quel scénario ? Quelles contraintes ?

💀 Top 10 des Erreurs qui Font Perdre des Points

1. ❌ Sens des flùches include/extend Include : Cas principal → Cas inclus
Extend : Cas optionnel → Cas principal
2. ❌ MultiplicitĂ©s inversĂ©es La multiplicitĂ© se lit depuis l'autre cĂŽtĂ© ! "1..*" Ă  droite = "un objet Ă  gauche est liĂ© Ă  1 ou plusieurs Ă  droite"
3. ❌ AgrĂ©gation au lieu de Composition Pose les 2 questions magiques ! Destruction + Appartenance exclusive = Composition ◆
4. ❌ Messages vers le mauvais objet En sĂ©quence : vĂ©rifie que le message correspond Ă  une opĂ©ration de la classe du DESTINATAIRE
5. ❌ Oublier les messages de retour Chaque message synchrone ▶ doit avoir un retour ← (flĂšche pointillĂ©e)
6. ❌ Acteur Ă  l'intĂ©rieur du rectangle systĂšme Les acteurs sont TOUJOURS dehors !
7. ❌ Cas d'utilisation trop dĂ©taillĂ©s "Cliquer sur bouton" n'est PAS un cas d'utilisation ! "S'authentifier" OUI.
8. ❌ Oublier les attributs/opĂ©rations En classe : mets les attributs (privĂ©s -) et les opĂ©rations (publiques +)
9. ❌ NumĂ©rotation dĂ©sordonnĂ©e (communication) Les numĂ©ros doivent reflĂ©ter l'ordre chronologique ET l'imbrication
10. ❌ Pas de cohĂ©rence entre diagrammes Si tu as un diag. de classes ET de sĂ©quence, les classes/opĂ©rations doivent ĂȘtre les mĂȘmes !

🌳 Arbre de DĂ©cision : Quel Diagramme Utiliser ?

La question demande...→ DiagrammeIndice dans l'Ă©noncĂ©
"Qui fait quoi ?"Cas d'Utilisation"les acteurs", "les fonctionnalités", "les besoins"
"De quoi est composé le systÚme ?"Classes"les entités", "la structure", "les données"
"Dans quel ordre ça se passe ?"Séquence"le scénario", "le déroulement", "les échanges"
"Comment les objets coopÚrent ?"Communication"la coopération", "les liens entre objets"

📜 Cheat Sheet Express par Diagramme

đŸ‘€ Cas d'Utilisation — Checklist rapide
  • ☐ Rectangle systĂšme avec nom
  • ☐ Acteurs principaux Ă  gauche
  • ☐ Acteurs secondaires Ă  droite
  • ☐ Cas = ellipse + verbe infinitif
  • ☐ Traits acteur ↔ cas
  • ☐ «include» = toujours obligatoire (flĂšche vers le cas inclus)
  • ☐ «extend» = optionnel (flĂšche vers le cas Ă©tendu)
  • ☐ GĂ©nĂ©ralisation = triangle vide
  • ☐ Chaque cas liĂ© Ă  au moins 1 acteur
đŸ§± Classes — Checklist rapide
  • ☐ Chaque classe : Nom + Attributs + OpĂ©rations
  • ☐ VisibilitĂ© : - private, + public, # protected
  • ☐ Associations avec nom et/ou rĂŽles
  • ☐ MultiplicitĂ©s aux DEUX extrĂ©mitĂ©s
  • ☐ AgrĂ©gation ◇ / Composition ◆ si nĂ©cessaire
  • ☐ HĂ©ritage avec triangle △ vide
  • ☐ Classe d'association si l'association a des attributs
  • ☐ Attribut type = String, int, boolean, Date...
  • ☐ NavigabilitĂ© si prĂ©cisĂ©e
🔄 SĂ©quence — Checklist rapide
  • ☐ Participants en haut : nomObjet:Classe
  • ☐ Lignes de vie verticales en pointillĂ©
  • ☐ Zones d'activation (rectangles)
  • ☐ Messages synchrones = flĂšche pleine ▶
  • ☐ Messages de retour = flĂšche pointillĂ©e
  • ☐ Messages = opĂ©rations de la classe destinataire
  • ☐ Fragments alt/loop/opt/ref si conditions
  • ☐ «create» pour crĂ©er un objet
  • ☐ CohĂ©rence avec le diagramme de classes
🔗 Communication — Checklist rapide
  • ☐ Objets = rectangles
  • ☐ Liens = traits entre objets
  • ☐ Messages numĂ©rotĂ©s : 1, 2, 3...
  • ☐ Messages imbriquĂ©s : 1.1, 1.2, 2.1...
  • ☐ Conditions entre [crochets]
  • ☐ * pour itĂ©ration
  • ☐ FlĂšche sur le lien pour la direction du message

🎯 StratĂ©gie d'Examen

✅ Avant de commencer :
  • Lis TOUT l'Ă©noncĂ© 2 fois
  • Identifie le type de diagramme demandĂ©
  • Surligne les acteurs, classes, actions
  • Dessine d'abord un brouillon
✅ Pendant le dessin :
  • Commence par le plus Ă©vident (acteurs ou classes principales)
  • Ajoute les dĂ©tails progressivement
  • VĂ©rifie la cohĂ©rence Ă  chaque Ă©tape
  • Relis l'Ă©noncĂ© pour ne rien oublier
✅ Aprùs avoir fini :
  • VĂ©rifie que chaque Ă©lĂ©ment du texte est dans ton diagramme
  • VĂ©rifie les multiplicitĂ©s
  • VĂ©rifie les sens des flĂšches
  • VĂ©rifie la notation (include vs extend, ◇ vs ◆)
✅ Si tu bloques :
  • Commence par ce que tu sais
  • Mets des post-it mentaux "Ă  vĂ©rifier"
  • Ne perds pas 20min sur une multiplicitĂ©, avance !
  • Un diagramme partiel > pas de diagramme

✅ Checklist Globale — Tout en un Coup d'ƒil

La derniĂšre page Ă  relire avant l'exam đŸ”„

📊 RĂ©sumĂ© des 4 Diagrammes

đŸ‘€ Cas d'Utilisation đŸ§± Classes 🔄 SĂ©quence 🔗 Communication
Type Dynamique (fonctionnel) Statique (structurel) Dynamique (temporel) Dynamique (spatial)
Question Qui fait quoi ? De quoi c'est fait ? Dans quel ordre ? Qui parle Ă  qui ?
ÉlĂ©ments clĂ©s Acteurs, Cas (ellipses), Relations Classes, Attributs, Associations Objets, Messages, Temps Objets, Liens, Messages numĂ©rotĂ©s
PiÚge #1 Include vs Extend Agrégation vs Composition Oublier les retours Numérotation incorrecte
Source TD TD1 TD2 TD3 Cours 4

đŸ—ïž Les Mots Magiques (RĂ©sumĂ©)

→ Include "doit", "toujours", "nĂ©cessite", "obligatoire", "il faut"
→ Extend "peut", "optionnel", "certains", "parfois", "soit...soit"
→ HĂ©ritage "est un type de", "est un", "spĂ©cialise", "hĂ©rite"
→ Composition ◆ "composĂ© de", "contient" (et meurt avec), "fait partie intĂ©grante"
→ AgrĂ©gation ◇ "contient", "regroupe" (mais indĂ©pendant), "a des"
→ Association simple "utilise", "rĂ©serve", "emploie", tout autre verbe

💎 Formule de Succùs

🏆 La MĂ©thode R.A.C.E.

RRead — Lis l'Ă©noncĂ© 2 fois minimum
AAnalyse — Surligne acteurs/classes/verbes/conditions
CConstruis — Dessine Ă©tape par Ă©tape (brouillon d'abord!)
EExamine — VĂ©rifie cohĂ©rence, multiplicitĂ©s, flĂšches