## Class
### Association bidirectionnel
```mermaid
%%{init: { 'logLevel': 'debug', 'theme': 'forest' } }%%
classDiagram
direction LR
A -- B
```
```plantuml
@startuml
A - B : " "
@enduml
```
### Association unidirectionnel
```plantuml
@startuml
class A
A -> B : " "
@enduml
```
### Aggregation bidirectionnel
```plantuml
@startuml
class A {
-ptrB: B*
}
class B {
+ptrA: A*
}
A "+ptrA" o- "-ptrB" B : " "
@enduml
```
```plantuml
@startuml
class A {
-ptrB: B*
}
A o- "1" B : " "
@enduml
```
### Composition (pas bidirectionnel)
```plantuml
@startuml
class A {
#aB: B
}
A *-> B : " "
@enduml
```
### Dépendance
```plantuml
@startuml
A .> B : <>\n<>\n<>\n" "
@enduml
```
### Généralisation
```plantuml
@startuml
class "A extends B" as A
class B {
-myFunc(a: integer): void
}
A <|- B : " "
@enduml
```
### Implémentation
```plantuml
@startuml
interface B
A .|> B : " "
@enduml
```
## Timing
```plantuml
@startuml
robust "Virus Timing" as vt
vt is Infection
@2023/02/01
vt is Incubation
@2023/02/05
vt is Illnes
@2023/02/17
vt is Infection
@enduml
```
## Sequence
```mermaid
%%{init: { 'logLevel': 'debug', 'theme': 'forest' } }%%
sequenceDiagram
participant a as A
participant b as B
a ->> b: synchrone / call
a -) b: asynchrone
activate b
b -->> a: replay
deactivate b
b ->> b: sync auto call
b -) b: async auto call
```
```plantuml
@startuml
participant A as a
participant B as b
a -> b: synchrone / call
a ->>(10) b++: asynchrone
b -->> a--: replay
a -\\ b : signal
b -> b
b ->> b
@enduml
```
## State machine