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.
SAE-S2.01_MAUI/README.md

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
```