Tout ce que tu dois savoir pour les Cours 1â4, expliquĂ© simplement â comme si t'avais 5 ans đ§
Acteurs, use cases, include, extend, généralisation...
Classes, attributs, associations, héritage, composition...
Messages, lignes de vie, fragments alt/loop/opt/ref...
Liens, numérotation, messages imbriqués...
Avant de dessiner des diagrammes, comprends pourquoi on en a besoin.
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.
Montrent la structure du systĂšme (c'est quoi les piĂšces de la maison ?)
Montrent le comportement (comment les choses bougent ?)
Définition simple : Le SI d'une entreprise = toutes les données + tous les traitements nécessaires à son fonctionnement.
| Concept | C'est quoi ? | Exemple |
|---|---|---|
| Donnée | Signe + code (brut) | 71540325 |
| Information | Donnée + interprétation | "C'est un numéro de téléphone" |
| Connaissance | Information interprétée | "C'est un abonné de Tunis" |
| GĂ©nĂ©ration | Approche | Points 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 |
Le premier diagramme qu'on fait â il rĂ©pond Ă la question : "Qui fait quoi avec le systĂšme ?"
Imagine un restaurant đœïž. Le diagramme de cas d'utilisation, c'est comme lister :
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.
| Type | Description | Position |
|---|---|---|
| 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 |
Chaque ellipse = une fonctionnalité que le systÚme offre. Le nom est toujours un verbe à l'infinitif.
| Relation | Symbole | Signification | Exemple 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" |
C'est la question piĂšge favorite des profs. Voici comment ne JAMAIS se tromper :
Le cas principal a BESOIN du cas inclus. Sans lui, ça ne marche pas.
Truc : La flĂšche part du cas principal VERS le cas inclus
Le cas étendu peut ou ne peut pas se produire. C'est optionnel.
Truc : La flĂšche part du cas optionnel VERS le cas principal
Prenons l'exercice de l'agence de voyages :
Chaque cas d'utilisation peut (et souvent doit) ĂȘtre dĂ©crit textuellement :
| Champ | Description |
|---|---|
| Nom | Le nom du cas (verbe Ă l'infinitif) |
| Acteur principal | Qui lance ce cas |
| PrĂ©conditions | Ce qui doit ĂȘtre vrai AVANT |
| Scénario nominal | Les étapes du cas normal (1, 2, 3...) |
| Scénarios alternatifs | Les variantes (extend) |
| Postconditions | Ce qui est vrai APRĂS |
Le diagramme STAR â d'UML â il montre la structure de ton systĂšme : les objets et leurs liens.
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.
Une classe a 3 compartiments :
| Symbole | VisibilitĂ© | Signification đ§ |
|---|---|---|
| - | private | Personne ne peut y toucher sauf moi |
| + | public | Tout le monde peut y accéder |
| # | protected | Moi et mes enfants seulement |
| ~ | package | Ceux de mon groupe/paquet |
Un trait entre deux classes = elles sont liées. On peut ajouter :
| Notation | Signification | Exemple đ§ |
|---|---|---|
| 1 | Exactement 1 (obligatoire) | 1 personne a exactement 1 cerveau |
| 0..1 | 0 ou 1 (optionnel) | 1 personne a 0 ou 1 voiture |
| * ou 0..* | 0 ou plusieurs | 1 personne peut avoir 0 ou plein d'amis |
| 1..* | Au moins 1 | 1 équipe a au minimum 1 joueur |
| n..m | Entre n et m | 1 main a entre 0 et 5 doigts |
Personne 1..* âââââ 0..1 EntrepriseC'est la question piĂšge #2 des profs !
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.
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 !
C'est comme une famille đšâđ©âđ§ : l'enfant hĂ©rite des caractĂ©ristiques du parent mais peut avoir les siennes en plus.
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 : 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 âł
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.
Le diagramme d'objets montre des instances concrÚtes à un moment donné.
Diagramme de classes = les RĂGLES / Diagramme d'objets = les FAITS
Il montre comment les objets discutent entre eux dans le temps â comme un script de film đŹ
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 !
| Type | FlĂšche | Description | Exemple đ§ |
|---|---|---|---|
| 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 đ€· |
Ce sont des boĂźtes rectangulaires qui entourent des messages pour montrer des conditions, boucles, etc.
Comme un if/else. Divisé en 2 zones par une ligne pointillée. Chaque zone a sa condition entre [crochets].
Comme un while. RépÚte les messages tant que la condition est vraie.
Comme un if sans else. Le fragment est exécuté seulement SI la condition est vraie.
Fait référence à un autre diagramme de séquence. Utile pour ne pas surcharger le schéma.
Voici comment aborder ce type d'exercice pas Ă pas :
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.
Participants : Admin, :ChampionnatDEchecs, :Joueur1, :Joueur2
â ïž CohĂ©rence : L'opĂ©ration inscriptionJoueur retourne un integer (le numĂ©ro) â exactement comme dans le diag. de classes !
Astuce : Utilise un fragment loop pour les coups !
Le message vĂ©rifierMat() est un message rĂ©cursif (l'objet :Partie s'appelle lui-mĂȘme).
C'est le jumeau du diagramme de sĂ©quence â mĂȘme info, prĂ©sentation diffĂ©rente.
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 !
| Format | Signification | Exemple |
|---|---|---|
4 : méthode() | Message simple numéro 4 | 4 : 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 retour | 4.2 : ùge := Calculer(date) |
[condition] 6 : méthode() | Message conditionnel | [age>=18] 6.2 : Voter() |
1 * : méthode() | Message itéré (boucle) | 1 * : Laver() |
Les stratĂ©gies qui font la diffĂ©rence entre 10/20 et 18/20 đȘ
| La question demande... | â Diagramme | Indice 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" |
La derniĂšre page Ă relire avant l'exam đ„
| đ€ 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 |