7.2 KiB
retour au README.md
Retour au diagramme de classes
Introduction au Modèle de Données de l'Application
L'architecture de données de notre application de suivi d'activités sportives repose sur un modèle robuste, avec des entités clés pour représenter les activités, les athlètes et les coachs. Découvrez les composants principaux de notre modèle de données :
Activité
L'entité Activité représente une session d'activité sportive avec des détails variés tels que le type d'activité, la date, la durée, l'effort ressenti, etc. Le ActiviteEntity
encapsule ces données, tandis que le ActiviteGateway
gère la communication avec la base de données pour les activités.
Athlète
L'entité Athlète représente un utilisateur de l'application qui participe à des activités sportives. Le AthleteEntity
stocke les détails de l'athlète, et le AtheletGateway
facilite l'accès et la gestion des données des athlètes.
Coach
L'entité Coach représente un utilisateur qui peut superviser et coacher d'autres athlètes. Le CoachEntity
stocke les détails du coach, tandis que le CoachGateway
gère les interactions avec la base de données.
Mapper
Les mappers, tels que ActiviteMapper
, AthleteMapper
, et CoachMapper
, facilitent la conversion entre les entités et les modèles utilisés dans l'application.
Connexion à la Base de Données
La classe Connection
étend de PDO
et assure la connexion à la base de données. Chaque Gateway utilise cette connexion pour interagir avec la base de données.
@startuml
class ActiviteEntity {
- idActivite: int
- type: string
- date: string
- heureDebut: string
- heureFin: string
- effortRessenti: int
- variabilite: int
- variance: int
- ecartType: int
- moyenne: int
- maximum: int
- minimum: int
- temperatureMoyenne: int
+ getIdActivite(): int
+ getType(): string
+ getDate(): string
+ getHeureDebut(): string
+ getHeureFin(): string
+ getEffortRessenti(): int
+ getVariabilite(): int
+ getVariance(): int
+ getEcartType(): int
+ getMoyenne(): int
+ getMaximum(): int
+ getMinimum(): int
+ getTemperatureMoyenne(): int
+ setIdActivite(idActivite: int): void
+ setType(type: string): void
+ setDate(date: string): void
+ setHeureDebut(heureDebut: string): void
+ setHeureFin(heureFin: string): void
+ setEffortRessenti(effortRessenti: int): void
+ setVariabilite(variabilite: int): void
+ setVariance(variance: int): void
+ setEcartType(ecartType: int): void
+ setMoyenne(moyenne: int): void
+ setMaximum(maximum: int): void
+ setMinimum(minimum: int): void
+ setTemperatureMoyenne(temperatureMoyenne: int): void
}
class ActiviteGateway {
+ __construct(connection: Connection)
+ getActivite(): ?array
+ getActiviteById(activiteId: int): ?array
+ getActiviteByType(type: string): ?array
+ getActiviteByDate(date: string): ?array
+ getActiviteByTimeRange(startTime: string, endTime: string): ?array
+ getActiviteByEffort(effortRessenti: int): ?array
+ getActiviteByVariability(variabilite: int): ?array
+ getActiviteByTemperature(temperatureMoyenne: int): ?array
+ addActivite(activite: ActiviteEntity): bool
+ updateActivite(oldActivite: ActiviteEntity, newActivite: ActiviteEntity): bool
+ deleteActivite(idActivite: int): bool
}
class ActiviteMapper {
+ map(data: array): ActiviteEntity
+ ActiviteEntityToModel(activiteEntity: ActiviteEntity): Activite
}
class AthleteEntity {
- idAthlete: int
- nom: string
- prenom: string
- email: string
- sexe: string
- taille: float
- poids: float
- motDePasse: string
- dateNaissance: string
+ getIdAthlete(): int
+ getNom(): string
+ getPrenom(): string
+ getEmail(): string
+ getSexe(): string
+ getTaille(): float
+ getPoids(): float
+ getMotDePasse(): string
+ getDateNaissance(): string
+ setIdAthlete(idAthlete: int): void
+ setNom(nom: string): void
+ setPrenom(prenom: string): void
+ setEmail(email: string): void
+ setSexe(sexe: string): void
+ setTaille(taille: float): void
+ setPoids(poids: float): void
+ setMotDePasse(motDePasse: string): void
+ setDateNaissance(dateNaissance: string): void
}
class AtheletGateway {
+ __construct(connection: Connection)
+ getAthlete(): ?array
+ getAthleteById(userId: int): ?array
+ getAthleteByName(name: string): ?array
+ getAthleteByFirstName(firstName: string): ?array
+ getAthleteByEmail(email: string): ?array
+ getAthleteByGender(gender: string): ?array
+ getAthleteByHeight(height: int): ?array
+ getAthleteByWeight(weight: int): ?array
+ getAthleteByBirthDate(birthdate: string): ?array
+ addAthlete(athlete: AthleteEntity): bool
+ updateAthlete(oldAthlete: AthleteEntity, newAthlete: AthleteEntity): bool
+ deleteAthlete(idAthlete: int): bool
}
class AthleteMapper {
+ fromSqlToEntity(data: array): array
+ athleteEntityToModel(athleteEntity: AthleteEntity): User
+ athleteToEntity(user: User): AthleteEntity
}
class CoachEntity {
- idCoach: int
- nom: string
- prenom: string
- email: string
- sexe: string
- taille: float
- poids: float
- motDePasse: string
- dateNaissance: string
+ getIdCoach(): int
+ getNom(): string
+ getPrenom(): string
+ getEmail(): string
+ getSexe(): string
+ getTaille(): float
+ getPoids(): float
+ getMotDePasse(): string
+ getDateNaissance(): string
+ setIdCoach(idCoach: int): void
+ setNom(nom: string): void
+ setPrenom(prenom: string): void
+ setEmail(email: string): void
+ setSexe(sexe: string): void
+ setTaille(taille: float): void
+ setPoids(poids: float): void
+ setMotDePasse(motDePasse: string): void
+ setDateNaissance(dateNaissance: string): void
}
class CoachGateway {
+ __construct(connection: Connection)
+ getCoach(): ?array
+ getCoachById(userId: int): ?array
+ getCoachByName(name: string): ?array
+ getCoachByFirstName(firstName: string): ?array
+ getCoachByEmail(email: string): ?array
+ getCoachByGender(gender : string): ?array
+ getCoachByHeight(height: int): ?array
+ getCoachByBirthDate(birthdate: string): ?array
+ addCoach(coach: CoachEntity): bool
+ updateCoach(oldCoach: CoachEntity, newCoach: CoachEntity): bool
+ deleteCoach(idCoach: int): bool
}
class CoachMapper {
+ map(data: array): CoachEntity
+ CoachEntityToModel(coachEntity: CoachEntity): User
+ CoachToEntity(user: User): CoachEntity
}
class Connection extends PDO {
- stmt
+ __construct(dsn: string, username: string, password: string)
+ executeQuery(query: string, parameters: array): bool
+ executeWithErrorHandling(query: string, params: array): array
+ getResults(): array
}
Connection <- ActiviteGateway : connection
Connection <- AtheletGateway : connection
Connection <- CoachGateway : connection
AthleteMapper -> AthleteEntity
CoachMapper -> CoachEntity
ActiviteMapper -> ActiviteEntity
ActiviteMapper -> ActiviteGateway
CoachMapper -> CoachGateway
AthleteMapper -> AtheletGateway
@enduml