# Notes pour chaque diagramme + mini tuto pour EA

## Procédure réponse examen analyse

1.  Souligner les phrases et éléments importants (entités potentielles,
    fonctionalités, formulaires, informations, données, etc)
2.  Lister les questions auquel le diagramme pourra réponse (exemple
    *Peut-on déterminer la section d'un·e étudiant·e afin de pouvoir lui
    afficher ses cours ?*)
3.  Etablir la liste des éléments (entités, classes, dialog,
    controleurs, ou autres) et leur reponsabilités éventuelles (retenir
    XYZ)
4.  Etablir les relations entre les différents éléments (entités,
    classes)
5.  Etablir la liste des propriétés de chaque entité
6.  Tester le diagramme selon les questions, vérifier qu'il respecte les
    règles d'UML et les flèches/associations.
7.  Justifier toutes les décisions sur le diagramme ou sur le côté

## MCD

- Attention associations
- Attention MCD != MLD (pas de tables d'association par exemple), pas de
  FK
- Pas oublier les clés primaires

## Use Cases

- Utiliser de l'infinitif partout
- Pas de flèches entre les acteur·ice·s et les UC
- UC humains = stickman, UC non-humains = boites
- include = flèche vers un autre UC indispensable, vs extend = flèche
  vers un autre UC facultatif
- Description textuelle : Titre, résumé, acteurs, pré/post-conditions,
  déclencheur, scénario nominal, erreur et alternatif
- Scénario en tableau (colonne gauche = acteur, colonne droite = action
  du système)

### Utilisation EA

1.  Model \> Add a model using wizard \> basic use case diagram
2.  Create element : Use Cases \> Add element \> toolset \> usecase.
3.  Add arrows and lines : Select the element then drag the arrow button
    to the other element then release and select the type of relation.
4.  Switch between human actor and system actor : click on the element
    and click on the magnifying glass

## Class

- Dépendence (A ..\> B, A a besoin de B pour fonctionner)
- Association (Personne 1–utilise–0..\* Voiture, Une personne a 0 ou
  plus de voiture, mais une voiture n'a qu'une personne), lien
  structurel durable entre des instances de classes. Flèche optionelle.
  Attention inversée par rapport au MCD.
- Aggrégation (Personne –\<\> Groupe, Personne fait partie de Groupe
  mais Personne et Groupe sont indépendant car si le groupe disparait,
  les personnes restent)
- Composition (User –\<x\> App, User fait partie intégrante de App et ne
  peut pas exister sans elle)
- Généralisation (Voiture –\|\> Véhicule, une voiture est une sorte de
  véhicule)
- Réalisation (Voiture ..\|\> Véhicule, une voiture a les opérations
  d'un véhicule)
- Penser aux patterns OOP (exemple, Repository, Strategy, etc)

### Utilisation EA

1.  Model \> Add a model using wizard \> starter class diagram
2.  Configure \> Settings \> Code Engineering Datatypes… \> Java \> New
    \> *String* \> New \> Close
3.  Add new class : Starter Class Diagram \> Add element \> toolset \>
    class
4.  Add arrows and lines : select the element then drag the arrow button
    to the other element then release and select the type of relation
5.  Add attributes or methods : Right click on class \> Features &
    Properties \> Attributes/Operations
6.  Change multiplicity : for each side of the association, right click
    and click on multiplicity.
7.  Create generic interface : Create a new interface, right click on
    it, select properties, go the templates tab and add a new one named
    "T". Then on the realization line, double click on it and write
    something like "T = String"

## Séquence

- Boundary est la vue, control est le contrôleur et entity est une
  classe métier. Boundary et entity n'intéragissent jamais directement.

- Les valeurs de retours sont des flèches avec lignes pointilliées

- Les diagrammes de séquence systèmes représentes seulement les
  intéractions entre les acteurs et le système tandis que les diagrammes
  de séquence normaux (complets) représentent les intéraction entre
  toutes les classes métiers, les contrôleurs, les formulaires et les
  acteurs pour chaque fonctionalité.

### Utilisation EA

1.  Model \> Add a model usig wizard \> starter sequence diagram
2.  Double click in void of the diagram \> Features \> Supress brackets
    for Operations without Parameters
3.  To add actor, boundary, control or entity : Right click on "starter
    sequence diagram" \> Add Element… \> Toolset \> interaction, then
    drag it to the diagram as a link
4.  To add an interaction, select the origin, drag the arrow to the end
    point. Then double click on the arrow and complete message (add ~()
    ~ if you need to), parameters and return value. Eventually tick the
    "is Return" box to have dotted arrow.

## Objet

- Diagramme d'objet représente différentes configurations d'instances
  d'objets du diagramme de classes métier.
- Chaque objet peut être nommé avec un nom d'objet et/ou une classe
  et/ou un état. Par exemple `nom d'instance :Classe [état]` ou
  `nom d'instance :Classe` ou `:Classe` ou encore `nom d'instance`
- Les valeurs des attributs peuvent être définie comme
  `attribut: type = valeur`, `attribut = valeur` ou encore `valeur`

### Utilisation EA

1.  Model \> Add a model using wizard \> started objet diagram
2.  To add object : Right click on starter object diagram \> Add
    Element… \> Toolset \> Object
3.  To link objects : select object, drag arrow to other object and
    choose "association"
4.  To add states : CTRL+MAJ+R on an object or right click on object \>
    Features & Properties \> Set Run State…