[retour au README.md](../../../README.md) [Retour aux Documents](../../README_DOCUMENTS.md) [Retour au diagramme de classes](../README_DIAGRAMMES.md) # Introduction au Diagramme de Classes : Plateforme de Gestion d'Activités Sportives Bienvenue dans l'écosystème dynamique de notre plateforme de gestion d'activités sportives ! Ce diagramme de classes offre une vision complète des entités et des relations qui façonnent l'expérience des utilisateurs au sein de notre système. **Entités Principales :** - **Utilisateur (User) :** Représente les individus inscrits sur notre plateforme, avec des détails personnels tels que le nom, le prénom, l'email, etc. Chaque utilisateur a un rôle spécifique (Athlete, Coach) qui détermine ses interactions au sein de l'application. - **Rôle (Role) :** Classe abstraite qui définit les rôles spécifiques des utilisateurs (Athlete, Coach). Contient des méthodes pour gérer les amis, les entraînements, et les demandes. - **Athlète (Athlete) :** Spécialisation de la classe Role, représentant les utilisateurs actifs qui enregistrent des activités sportives, des statistiques, et interagissent avec d'autres athlètes. - **Activité (Activite) :** Contient des détails sur une activité sportive tels que le type, la date, la durée, la fréquence cardiaque, etc. - **Notification (Notification) :** Messages pour informer les utilisateurs des actions importantes. - **Entraînement (Entrainement) :** Sessions planifiées d'activités physiques avec des détails comme la date, la localisation, la description, et les retours. - **Statistique (Statistique) :** Informations détaillées sur les performances sportives d'un athlète, comprenant la distance totale, le poids, le temps total, la fréquence cardiaque, etc. - **Source de Données (SourceDonnees) :** Représente les sources utilisées pour collecter des données, telles que les montres connectées. **Relations Clés :** - Les Utilisateurs ont un rôle spécifique (Athlete, Coach) qui détermine leurs fonctionnalités. - Un Athlète peut enregistrer plusieurs Activités, Statistiques, et interagir avec différentes Sources de Données. - Les Entraînements sont liés aux Utilisateurs, permettant une planification efficace. - Les Notifications informent les Utilisateurs des événements importants. Explorez ce diagramme pour comprendre comment notre plateforme offre une expérience complète, de la gestion des utilisateurs à l'enregistrement des activités sportives et au suivi des performances. ```plantuml @startuml class User { - id: int - username: String - nom: string - prenom: string - email: string - motDePasse: string - sexe: string - taille: float - poids: float - dateNaissance: \DateTime + getId(): int + getUsername(): string + setUsername(string $username): void + setId(int $id): void + getNom(): string + setNom(string $nom): void + getPrenom(): string + setPrenom(string $prenom): void + getEmail(): string + setEmail(string $email): void + getMotDePasse(): string + setMotDePasse(string $motDePasse): void + getSexe(): string + setSexe(string $sexe): void + getTaille(): float + setTaille(float $taille): void + getPoids(): float + setPoids(float $poids): void + getDateNaissance(): \DateTime + setDateNaissance(\DateTime $dateNaissance): void + getRole(): Role + setRole(Role $role): void + addNotification($notification): void + deleteNotification($index): void + isValidPassword(string $password): bool + __toString(): string } abstract class Role { - id: int - usersRequests: array + getUsersList(): array + getUsersRequests(): array + addUsersRequests(RelationshipRequest $request): void + removeRequest(RelationshipRequest $req): bool + CheckAdd(User $user): bool + addUser(User $user): bool + removeUser(User $user): bool + addTraining(Training $training): bool + getTrainingsList(): array } abstract class Coach extends Role { } class CoachAthlete extends Coach { + CheckAdd(User $user): bool } class Athlete extends Role { + getActivities(): array + addActivity(Activity $myActivity): bool + CheckAdd(User $user): bool } class Activite { - idActivity: int - type: String - date: \DateTime - heureDebut: \DateTime - heureFin: \DateTime - effortRessenti: int - variability: float - variance: float - standardDeviation: float - average: int - maximum: int - minimum: int - avrTemperature: float - hasAutoPause: bool + getIdActivity(): int + getType(): String + getDate(): \DateTime + getHeureDebut(): \DateTime + getHeureFin(): \DateTime + getEffortRessenti(): int + getVariability(): float + getVariance(): float + getStandardDeviation(): float + getAverage(): float + getMaximum(): int + getMinimum(): int + getAvrTemperature(): float + setType(String $type): void + setEffortRessenti(int $effortRessenti): void + __toString(): String } class Notification { - type: string - message: string - toUserId: int + getType(): string + setType(string $type): void + getMessage(): string + setMessage(string $message): void + getToUserId(): int + setToUserId(int $toUserId): void + __construct(int $toUserId,string $type, string $message) + __toString(): string } class Entrainement { - idTraining: int - date: \DateTime - latitude: float - longitude: float - description: String - feedback: String + getId(): int + getDate(): \DateTime + getLocation(): String + getDescription(): String + getFeedback(): String + __toString(): String } class Statistique { - idStat: int - distanceTotale: float - poids: float - tempsTotal: time - FCmoyenne: int - FCmin: int - FCmax: int - cloriesBrulees: int + getIdStat(): int + getDistanceTotale(): float + getPoids(): float + getTempsTotal(): time + getFCmoyenne(): int + getFCmin(): int + getFCmax(): int + getCloriesBrulees(): int + __toString(): String } class SourceDonnees { - idSource: int - nom: String - type: String - precision: enum - dateDerniereUtilisation: \DateTime + getIdSource(): int + getNom(): String + getType(): String + getPrecision(): enum + getDateDerniereUtilisation(): \DateTime + __toString(): String } User -> Role : role Role -> User : usersList Athlete -> Statistique : statsList Athlete -> Activite : activityList Athlete -> SourceDonnees : sdList User -> Notification : notificationList User -> Entrainement : trainingsList Activite -> SourceDonnees : maSource @enduml ```