You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
163 lines
4.0 KiB
163 lines
4.0 KiB
# Diagramme de classe
|
|
|
|
```plantuml
|
|
@startuml
|
|
|
|
Class User {
|
|
- String pseudo
|
|
- String mot_de_passe
|
|
}
|
|
|
|
Class Carte {
|
|
- String nom
|
|
- String description
|
|
- String pouvoir
|
|
- String strategies
|
|
- int note
|
|
- String lienImage
|
|
- List<Commentaire> commentaires
|
|
- Set<User> likes
|
|
+ void addCommentaire(User)
|
|
+ void removeCommentaire(User)
|
|
+ bool hasLiked(User)
|
|
+ void addLike(User)
|
|
+ void removeLike(User)
|
|
}
|
|
|
|
Class Commentaire {
|
|
+ String contenu
|
|
+ int signale
|
|
+ int nblike
|
|
+ int nbdislike
|
|
+ Set<User> likes
|
|
+ bool hasLiked(User)
|
|
+ void addLike(User)
|
|
+ void removeLike(User)
|
|
}
|
|
|
|
Class Pack {
|
|
+ String nom
|
|
+ String description
|
|
+ int note
|
|
+ String lienImage
|
|
+ Set<Carte> cartes
|
|
+ List<Commentaire> commentaires
|
|
+ Set<User> likes
|
|
+ void addCommentaire(User)
|
|
+ void removeCommentaire(User)
|
|
+ bool hasLiked(User)
|
|
+ void addLike(User)
|
|
+ void removeLike(User)
|
|
}
|
|
|
|
Class Camp {
|
|
+ String nom
|
|
+ String description
|
|
+ String lienImage
|
|
+ Set<Carte> cartes
|
|
}
|
|
|
|
User --> Pack
|
|
User --> Carte
|
|
User --> Commentaire
|
|
Commentaire *--> Pack
|
|
Commentaire *--> Carte
|
|
Pack --|> Carte
|
|
Camp --|> Carte
|
|
|
|
hide circle
|
|
allowmixing
|
|
skinparam classAttributeIconSize 0
|
|
skinparam classBackgroundColor #ffffb9
|
|
skinparam classBorderColor #800000
|
|
skinparam classArrowColor #800000
|
|
skinparam classFontColor #black
|
|
skinparam classFontName Tahoma
|
|
|
|
@enduml
|
|
```
|
|
Voici le diagramme de classe général représentant les classes et leurs attributs. Il faut noter que nous avons utiliser les propriété a la place des attributs afin de définir des règles de lecture et d'écriture directement.
|
|
|
|
# Diagramme de classe pour la persistance
|
|
|
|
```plantuml
|
|
@startuml
|
|
|
|
Class User {
|
|
}
|
|
|
|
Class Carte {
|
|
- List<Commentaire> commentaires
|
|
- Set<User> likes
|
|
}
|
|
|
|
Class Commentaire {
|
|
+ Set<User> likes
|
|
}
|
|
|
|
Class Pack {
|
|
+ List<Commentaire> commentaires
|
|
+ Set<User> likes
|
|
}
|
|
|
|
Class Camp {
|
|
}
|
|
|
|
User --> Pack
|
|
User --> Carte
|
|
User --> Commentaire
|
|
Commentaire *--> Pack
|
|
Commentaire *--> Carte
|
|
Pack --|> Carte
|
|
Camp --|> Carte
|
|
|
|
hide circle
|
|
allowmixing
|
|
skinparam classAttributeIconSize 0
|
|
skinparam classBackgroundColor #ffffb9
|
|
skinparam classBorderColor #800000
|
|
skinparam classArrowColor #800000
|
|
skinparam classFontColor #black
|
|
skinparam classFontName Tahoma
|
|
|
|
@enduml
|
|
```
|
|
|
|
es seules données pouvant être modifiées dans le modèle Master-Detail sont les _commentaires_ et les _likes_ des __packs__ et des __cartes__. Ainsi, ce sont les seules données qui sont enregistrées à chaque modification, ajout ou suppression.
|
|
|
|
### Likes
|
|
Chaque utilisateur ne peut 'liker' qu'une fois une carte/pack, on utilise donc un set pour avoir des clés uniques, évitant les doublant. Le set nous permet également d'effectuer des opération de recherche plus rapidement pour verifier si un utilisateur à déjà 'liker' ou non.
|
|
|
|
### Commentaires
|
|
Chaque utilisateur peut commenter autant de fois qu'il veut une carte/pack, il peut également supprimer les commentaires qu'il à écrit.
|
|
|
|
|
|
|
|
# Diagramme de séquence
|
|
plantuml```
|
|
@startuml
|
|
actor User
|
|
participant "User Interface" as UI
|
|
participant Application
|
|
participant Pack
|
|
participant Carte
|
|
|
|
User -> UI: Sélectionne une carte/pack à liker
|
|
UI -> Application: Demande de like pour la carte/pack sélectionné(e)
|
|
Application -> Pack: Vérifie si l'utilisateur a déjà liké le pack
|
|
alt Pack déjà liké par l'utilisateur
|
|
Application --> UI: Affiche un message indiquant que le pack a déjà été liké
|
|
else
|
|
Application -> Carte: Vérifie si l'utilisateur a déjà liké la carte
|
|
alt Carte déjà likée par l'utilisateur
|
|
Application --> UI: Affiche un message indiquant que la carte a déjà été likée
|
|
else
|
|
Application -> Pack: Ajoute le like de l'utilisateur au pack
|
|
Pack --> Application: Confirme l'ajout du like au pack
|
|
Application -> Carte: Ajoute le like de l'utilisateur à la carte
|
|
Carte --> Application: Confirme l'ajout du like à la carte
|
|
Application --> UI: Affiche un message de succès pour le like effectué
|
|
end
|
|
end
|
|
@enduml
|
|
``` |