# Projet UML ## Diagramme global ```plantuml enum Etat <<enumeration>> { VALIDE ELIMINEE ANNULEE TERMINEE } class VehiculeAssistance { -id : int -immatriculation : String +getId() +setId() +getImmatriculation() +setImmatriculation() +afficherChauffeur(nom : String, prenom : String, numeroPermis : int) +ajouterChauffeur(chauffeur : Chauffeur) +afficherImmatriculationChauffeur() } class Chauffeur { -id : int -nom : String -prenom : String -numPermis : int +getId() +setId() +getNom() +setNom() +getPrenom() +setPrenom() +getNumPermis() +setNumPermis() } class Equipe { -id : int -nomResponsable :String -prenomResponsable : String -mailResponsable : String -telResponsable : String -nationnalite : String -nomEquipe : String +getId() +setId() +getNomResponsable() +setNomResponsable() +getPrenomResponsable() +setPrenomResponsable() +getMailResponsable() +setMailResponsable() +getTelResponsable() +setTelResponsable() +getNationnalite() +setNationnalite() +getNomEquipe() +setNomEquipe() +afficherCoureurs() +ajouterParticipation(edition: Edition) +afficherParticipations() +nombreVictoire() +nombreParticipation() } class ParticipationEquipe { -numInscription : int -etatParticipation : Etat +getNumInscription() +setNumInscription() +getEtatParticipation() +setEtatParticipation() +supprimerParticipation(ParticipationEquipe participationEquipe, Participation participation) +ajouterCoureur(coureur : Coureur) +ajouterVehicule(immatriculation, nom, prenom, numeroPermis) +afficherCoureurs() +afficherCourse() +afficherListeVehicules() +modifierCoureur(coureur : Coureur, numCoureur : int) +annulerParticipation(ParticipationEquipe participationEquipe) +eliminerEquipe(ParticipationEquipe participationEquipe) +supprimerCoureur() +listeEditions() +victoireParticipation() } class Coureur { -id : int -nom : String -prenom : String -dateNaissance : Date -groupeSanguin : String +getId() +setId() +getNom() +setNom() +getPrenom() +setPrenom() +getDateNaissance() +setDateNaissance() +getGroupeSanguin() +setGroupeSanguin() +coureursParNom() +rechercherCoureur(nom : String, prenom : String) +ajouterParticipation(edition : Edition, nomEquipe : String) +afficherParticipations() } class Participation { -numInscription : int -etatParticipation : Etat +getNumInscription() +setNumInscription() +getEtatParticipation() +setEtatParticipation() +annulerParticipation(Participation participation) +modifierInscription(nomEquipe : String) +eliminerParticipant(Participation participation) +changerEquipeParticipation(Participation participation, ParticipationEquipe participationEquipe) } class Course { -id : int -nom : String +getId() +setId() +getNom() +setNom() +afficherEdition(int annee, Date dateDebut, Date dateFin) +coursesParNom() +courseParId(Integer id) +afficherListesEditions() +creerEdition(annee : int, dateDebut : date, dateFin : date, villeDepart : String, villeArrivee : String) +rechercherCourse(nomCourse : String) +recupererListesEditions() } class Edition { -id : int -annee : int -dateDebut : Date -dateFin : Date -villeDepart : String -villeArrivee : String -paysDepart : String -paysArrivee : String -distance : float -annulee : boolean +getId() +setId() +getAnnee() +setAnnee() +getDateDebut() +setDateDebut() +getDateFin() +setDateFin() +getVilleDepart() +setVilleDepart() +getVilleArrivee() +setVilleArrivee() +getPaysDepart() +setPaysDepart() +getPaysArrivee() +setPaysArrivee() +getDistance() +setDistance() +getAnnulee() +setAnnulee() +participationsEdition(Edition edition) +participationsEditionJeunes(Edition edition) +meilleurJeune(Edition edition) +meilleurTemps(Map<Coureur, Float> participations) +meilleurGrimpeur(Edition edition) +meilleurSprinteur(Edition edition) +meilleurCoureur(List<Participation> participations, Function<Performance, Integer> critere) +meilleurePerformance(Map<Coureur, Integer> participations) +calculerPerformance(List<Participation> participations, Function<Performance, Integer> critere) +calculerSommeTemps(List<Participation> participations, Function<Performance, Float> critere) +etablirClassementEquipe() +etablirClassemenGeneral() +afficherCoureurs() +afficherEquipes() +afficherEtapes() +ajouterEtape(villeDepart : String, villeArrivee : String, paysDepart : String, paysArrivee : String, distance : float, numOrdre : int) +annulerEdition() +recupererMeilleurSprinteur() +recupererMeilleurGrimpeur() +recupererMeilleurJeune() +tempsMoyenCoureur() +afficherPlusLongueCourse() } class Etape { -id : int -villeDepart : String -villeArrivee : String -paysDepart : String -paysArrivee : String -distance : float -numOrdre : int -etatEtape : EtatEtape +getId() +setId() +getVilleDepart() +setVilleDepart() +getVilleArrivee() +setVilleArrivee() +getPaysDepart() +setPaysDepart() +getPaysArrivee() +setPaysArrivee() +getDistance() +setDistance() +getNumOrdre() +setNumOrdre() +getEtatEtape() +setEtatEtape() +etablirClassementEtape() +annulerEtape() +cloturerEtape() +lancerEtape() +tempsMoyenCoureurEtape() +recupererDistance() } enum EtatEtape { LANCEE CLOTUREE ATTENTE ANNULEE } class Performance { -id : int -temps : float -pointSprint : int -pointGrimp : int +getId() +setId() +getTemps() +setTemps() +getPointSprint() +setPointSprint() +getPointGrimp() +setPointGrimp() +ajouterPointSprint(Performance performance, int pointsSprint) +ajouterPointGrimp(Performance performance, int pointsGrimp) +ajouterTemps(Performance performance, float delta) } Edition "1..*" --* Course Edition *-- "1..*" Etape Participation "1..*" -- "1..1" Edition Participation "1..*" -- "1..1" Coureur ParticipationEquipe "1..*" -- "1..1" Equipe ParticipationEquipe "1..*" -- "1..1" Edition ParticipationEquipe "1..1" -- "4" VehiculeAssistance VehiculeAssistance "1..*" --* Chauffeur Performance "0..*" -- "1..1" Participation Performance "0..*" -- "1..1" Etape Etat <|-- Participation Etat <|-- ParticipationEquipe EtatEtape <|-- Etape ``` ## Diagramme de classe : Gestion classement ```plantuml enum Etat <<enumeration>> { VALIDE ELIMINEE ANNULEE TERMINEE } class Equipe { -nomResponsable :String -prenomResponsable : String -mailResponsable : String -telResponsable : String -nationnalite : String -nomEquipe : String +afficherCoureurs() +afficherNom() +ajouterParticipation(edition: Edition) +afficherParticipations() +nombreVictoire() +nombreParticipation() +rechercherEquipe(nomEquipe : String) +afficherNomResponsable() +afficherNationalite() } class ParticipationEquipe { -numInscription : int -etatParticipation : Etat -coureurs : list +ajouterCoureur(coureur : Coureur) +ajouterVehicule(immatriculation, nom, prenom, numeroPermis) +afficherCoureurs() +afficherCourse() +afficherListeVehicules() +modifierCoureur(coureur : Coureur, numCoureur : int) +annulerParticipation() +eliminerEquipe() +supprimerCoureur() +init() +listeEditions() +victoireParticipation() } class Coureur { -nom : String -prenom : String -dateNaissance : Date -groupeSanguin : String +afficherInformations() +recupererNom() +rechercherCoureur(nom : String, prenom : String) +ajouterParticipation(edition : Edition, nomEquipe : String) +afficherParticipations() +recupererDateNaissance() } class Participation { -numInscription : int -etatParticipation : Etat -nomEquipe : String +afficherInformations() +annulerParticipation() +init(nomEquipe : String) +modifierInscription(nomEquipe : String) +eliminerParticipant() } class Course { -nom : String +afficherNom() check +afficherEdition(int annee, Date dateDebut, Date dateFin) +afficherListesEditions() +ajouterEdition(annee : int, dateDebut : date, dateFin : date, villeDepart : String, villeArrivee : String) +rechercherCourse(nomCourse : String) +init(nom : String) +recupererListesEditions() } class Edition { -annee : int -dateDebut : Date -dateFin : Date -villeDepart : String -villeArrivee : String -paysDepart : String -paysArrivee : String -distance : float -annulee : boolean +etablirClassementEquipe() +etablirClassemenGeneral() +afficherCoureurs() +afficherEquipes() +afficherEtapes() +ajouterEtape(villeDepart : String, villeArrivee : String, paysDepart : String, paysArrivee : String, distance : float, numOrdre : int) +modifierInformations(annee : int, dateDebut : Date, villeDepart : String, villeArrivee : String, paysDepart : String, paysArrivee : String ) +annulerEdition() +afficherInformations() +recupererMeilleurSprinteur() +recupererMeilleurGrimpeur() +recupererMeilleurJeune() +init(annee : int, dateDebut : date, dateFin : date, paysDepart : String, paysArrivee : String) +tempsMoyenCoureur() +afficherPlusLongueCourse() } class Etape { -villeDepart : String -villeArrivee : String -paysDepart : String -paysArrivee : String -distance : float -numOrdre : int -etatEtape : EtatEtape +etablirClassementEtape() +annulerEtape() +cloturerEtape() +lancerEtape() +afficherInformations() +init(villeDepart : String, villeArrivee : String, paysDepart : String, paysArrivee, distance : float, numOrdre : int) +tempsMoyenCoureurEtape() +recupererDistance() } enum EtatEtape { LANCEE CLOTUREE ATTENTE ANNULEE } class Performance { -temps : float -pointSprint : int -pointGrimp : int +recupererTemps() +recupererPointSprint() +recupererPointGrimp() +ajouterPointSprint() +ajouterPointGrimp() +ajouterTemps() +init() } Edition "1..*" --* Course Edition *-- "1..*" Etape Participation "1..*" -- "1..1" Edition Participation "1..*" -- "1..1" Coureur ParticipationEquipe "1..*" -- "1..1" Equipe ParticipationEquipe "1..*" -- "1..1" Edition Performance "0..*" -- "1..1" Participation Performance "0..*" -- "1..1" Etape Etat <|-- Participation Etat <|-- ParticipationEquipe EtatEtape <|-- Etape ``` ## Diagramme de classe : Gestion Equipe ```plantuml enum Etat <<enumeration>> { VALIDE ELIMINEE ANNULEE TERMINEE } class VehiculeAssistance { -immatriculation : String +afficherChauffeur(nom : String, prenom : String, numeroPermis : int) +ajouterChauffeur(chauffeur : Chauffeur) +afficherImmatriculationChauffeur() +init(immatriculation : String, nom: String, prenom : String, numeroPermis : int) } class Chauffeur { -nom : String -prenom : String -numPermis : int +afficherChauffeur() +init(nom, prenom, numero permis) } class Equipe { -nomResponsable :String -prenomResponsable : String -mailResponsable : String -telResponsable : String -nationnalite : String -nomEquipe : String +afficherCoureurs() +afficherNom() +ajouterParticipation(edition: Edition) +afficherParticipations() +nombreVictoire() +nombreParticipation() +rechercherEquipe(nomEquipe : String) +afficherNomResponsable() +afficherNationalite() } class ParticipationEquipe { -numInscription : int -etatParticipation : Etat -coureurs : list +ajouterCoureur(coureur : Coureur) +ajouterVehicule(immatriculation, nom, prenom, numeroPermis) +afficherCoureurs() +afficherCourse() +afficherListeVehicules() +modifierCoureur(coureur : Coureur, numCoureur : int) +annulerParticipation() +eliminerEquipe() +supprimerCoureur() +init() +listeEditions() +victoireParticipation() } class Coureur { -nom : String -prenom : String -dateNaissance : Date -groupeSanguin : String +afficherInformations() +recupererNom() +rechercherCoureur(nom : String, prenom : String) +ajouterParticipation(edition : Edition, nomEquipe : String) +afficherParticipations() +recupererDateNaissance() } class Participation { -numInscription : int -etatParticipation : Etat -nomEquipe : String +afficherInformations() +annulerParticipation() +init(nomEquipe : String) +modifierInscription(nomEquipe : String) +eliminerParticipant() } class Edition { -annee : int -dateDebut : Date -dateFin : Date -villeDepart : String -villeArrivee : String -paysDepart : String -paysArrivee : String -distance : float -annulee : boolean +etablirClassementEquipe() +etablirClassemenGeneral() +afficherCoureurs() +afficherEquipes() +afficherEtapes() +ajouterEtape(villeDepart : String, villeArrivee : String, paysDepart : String, paysArrivee : String, distance : float, numOrdre : int) +modifierInformations(annee : int, dateDebut : Date, villeDepart : String, villeArrivee : String, paysDepart : String, paysArrivee : String ) +annulerEdition() +afficherInformations() +recupererMeilleurSprinteur() +recupererMeilleurGrimpeur() +recupererMeilleurJeune() +init(annee : int, dateDebut : date, dateFin : date, paysDepart : String, paysArrivee : String) +tempsMoyenCoureur() +afficherPlusLongueCourse() } Participation "1..*" -- "1..1" Edition Participation "1..*" -- "1..1" Coureur ParticipationEquipe "1..*" -- "1..1" Equipe ParticipationEquipe "1..*" -- "1..1" Edition ParticipationEquipe "1..1" -- "4" VehiculeAssistance VehiculeAssistance "1..*" --* Chauffeur Etat <|-- Participation Etat <|-- ParticipationEquipe ``` ## Diagramme de classe : Gestion Coureur ```plantuml enum Etat <<enumeration>> { VALIDE ELIMINEE ANNULEE TERMINEE } class Coureur { -nom : String -prenom : String -dateNaissance : Date -groupeSanguin : String +afficherInformations() +recupererNom() +rechercherCoureur(nom : String, prenom : String) +ajouterParticipation(edition : Edition, nomEquipe : String) +afficherParticipations() +recupererDateNaissance() } class Participation { -numInscription : int -etatParticipation : Etat -nomEquipe : String +afficherInformations() +annulerParticipation() +init(nomEquipe : String) +modifierInscription(nomEquipe : String) +eliminerParticipant() } class Edition { -annee : int -dateDebut : Date -dateFin : Date -villeDepart : String -villeArrivee : String -paysDepart : String -paysArrivee : String -distance : float -annulee : boolean +etablirClassementEquipe() +etablirClassemenGeneral() +afficherCoureurs() +afficherEquipes() +afficherEtapes() +ajouterEtape(villeDepart : String, villeArrivee : String, paysDepart : String, paysArrivee : String, distance : float, numOrdre : int) +modifierInformations(annee : int, dateDebut : Date, villeDepart : String, villeArrivee : String, paysDepart : String, paysArrivee : String ) +annulerEdition() +afficherInformations() +recupererMeilleurSprinteur() +recupererMeilleurGrimpeur() +recupererMeilleurJeune() +init(annee : int, dateDebut : date, dateFin : date, paysDepart : String, paysArrivee : String) +tempsMoyenCoureur() +afficherPlusLongueCourse() } Participation "1..*" -- "1..1" Edition Participation "1..*" -- "1..1" Coureur Etat <|-- Participation ``` ## Diagramme de classe : Gestion Course ```plantuml class Course { -nom : String +afficherNom() +afficherEdition(int annee, Date dateDebut, Date dateFin) +afficherListesEditions() +ajouterEdition(annee : int, dateDebut : date, dateFin : date, villeDepart : String, villeArrivee : String) +rechercherCourse(nomCourse : String) +init(nom : String) +recupererListesEditions() } class Edition { -annee : int -dateDebut : Date -dateFin : Date -villeDepart : String -villeArrivee : String -paysDepart : String -paysArrivee : String -distance : float -annulee : boolean +etablirClassementEquipe() +etablirClassemenGeneral() +afficherCoureurs() +afficherEquipes() +afficherEtapes() +ajouterEtape(villeDepart : String, villeArrivee : String, paysDepart : String, paysArrivee : String, distance : float, numOrdre : int) +modifierInformations(annee : int, dateDebut : Date, villeDepart : String, villeArrivee : String, paysDepart : String, paysArrivee : String ) +annulerEdition() +afficherInformations() +recupererMeilleurSprinteur() +recupererMeilleurGrimpeur() +recupererMeilleurJeune() +init(annee : int, dateDebut : date, dateFin : date, paysDepart : String, paysArrivee : String) +tempsMoyenCoureur() +afficherPlusLongueCourse() } class Etape { -villeDepart : String -villeArrivee : String -paysDepart : String -paysArrivee : String -distance : float -numOrdre : int -etatEtape : EtatEtape +etablirClassementEtape() +annulerEtape() +cloturerEtape() +lancerEtape() +afficherInformations() +init(villeDepart : String, villeArrivee : String, paysDepart : String, paysArrivee, distance : float, numOrdre : int) +tempsMoyenCoureurEtape() +recupererDistance() } enum EtatEtape { LANCEE CLOTUREE ATTENTE ANNULEE } Edition "1..*" --* Course Edition *-- "1..*" Etape EtatEtape <|-- Etape ``` ## Diagramme de classe : Analyse de donnée ```plantuml enum Etat <<enumeration>> { VALIDE ELIMINEE ANNULEE TERMINEE } class Equipe { -nomResponsable :String -prenomResponsable : String -mailResponsable : String -telResponsable : String -nationnalite : String -nomEquipe : String +afficherCoureurs() +afficherNom() +ajouterParticipation(edition: Edition) +afficherParticipations() +nombreVictoire() +nombreParticipation() +rechercherEquipe(nomEquipe : String) +afficherNomResponsable() +afficherNationalite() } class ParticipationEquipe { -numInscription : int -etatParticipation : Etat -coureurs : list +ajouterCoureur(coureur : Coureur) +ajouterVehicule(immatriculation, nom, prenom, numeroPermis) +afficherCoureurs() +afficherCourse() +afficherListeVehicules() +modifierCoureur(coureur : Coureur, numCoureur : int) +annulerParticipation() +eliminerEquipe() +supprimerCoureur() +init() +listeEditions() +victoireParticipation() } class Coureur { -nom : String -prenom : String -dateNaissance : Date -groupeSanguin : String +afficherInformations() +recupererNom() +rechercherCoureur(nom : String, prenom : String) +ajouterParticipation(edition : Edition, nomEquipe : String) +afficherParticipations() +recupererDateNaissance() } class Participation { -numInscription : int -etatParticipation : Etat -nomEquipe : String +afficherInformations() +annulerParticipation() +init(nomEquipe : String) +modifierInscription(nomEquipe : String) +eliminerParticipant() } class Course { -nom : String +afficherNom() check +afficherEdition(int annee, Date dateDebut, Date dateFin) +afficherListesEditions() +ajouterEdition(annee : int, dateDebut : date, dateFin : date, villeDepart : String, villeArrivee : String) +rechercherCourse(nomCourse : String) +init(nom : String) +recupererListesEditions() } class Edition { -annee : int -dateDebut : Date -dateFin : Date -villeDepart : String -villeArrivee : String -paysDepart : String -paysArrivee : String -distance : float -annulee : boolean +etablirClassementEquipe() +etablirClassemenGeneral() +afficherCoureurs() +afficherEquipes() +afficherEtapes() +ajouterEtape(villeDepart : String, villeArrivee : String, paysDepart : String, paysArrivee : String, distance : float, numOrdre : int) +modifierInformations(annee : int, dateDebut : Date, villeDepart : String, villeArrivee : String, paysDepart : String, paysArrivee : String ) +annulerEdition() +afficherInformations() +recupererMeilleurSprinteur() +recupererMeilleurGrimpeur() +recupererMeilleurJeune() +init(annee : int, dateDebut : date, dateFin : date, paysDepart : String, paysArrivee : String) +tempsMoyenCoureur() +afficherPlusLongueCourse() } class Etape { -villeDepart : String -villeArrivee : String -paysDepart : String -paysArrivee : String -distance : float -numOrdre : int -etatEtape : EtatEtape +etablirClassementEtape() +annulerEtape() +cloturerEtape() +lancerEtape() +afficherInformations() +init(villeDepart : String, villeArrivee : String, paysDepart : String, paysArrivee, distance : float, numOrdre : int) +tempsMoyenCoureurEtape() +recupererDistance() } enum EtatEtape { LANCEE CLOTUREE ATTENTE ANNULEE } class Performance { -temps : float -pointSprint : int -pointGrimp : int +recupererTemps() +recupererPointSprint() +recupererPointGrimp() +ajouterPointSprint() +ajouterPointGrimp() +ajouterTemps() +init() } Edition "1..*" --* Course Edition *-- "1..*" Etape Participation "1..*" -- "1..1" Edition Participation "1..*" -- "1..1" Coureur ParticipationEquipe "1..*" -- "1..1" Equipe ParticipationEquipe "1..*" -- "1..1" Edition Performance "0..*" -- "1..1" Participation Performance "0..*" -- "1..1" Etape Etat <|-- Participation Etat <|-- ParticipationEquipe EtatEtape <|-- Etape ``` ## Diagramme de classe : Gestion de données ```plantuml class VehiculeAssistance { -immatriculation : String } class Chauffeur { -nom : String -prenom : String -numPermis : int } class Equipe { -nomResponsable :String -prenomResponsable : String -mailResponsable : String -telResponsable : String -nationnalite : String -nomEquipe : String } class Coureur { -nom : String -prenom : String -dateNaissance : Date -groupeSanguin : String } class Course { -nom : String } class Edition { -annee : int -dateDebut : Date -dateFin : Date -villeDepart : String -villeArrivee : String -paysDepart : String -paysArrivee : String -distance : float -annulee : boolean } class Etape { -villeDepart : String -villeArrivee : String -paysDepart : String -paysArrivee : String -distance : float -numOrdre : int } VehiculeAssistance "1..*" --* Chauffeur Edition "1..*" --* Course Edition *-- "1..*" Etape ``` ## MCD MODIFIE ```plantuml enum Etat <<enumeration>> { VALIDE ELIMINEE ANNULEE TERMINEE } class VehiculeAssistance { -immatriculation : String +afficherChauffeur(nom : String, prenom : String, numeroPermis : int) +ajouterChauffeur(chauffeur : Chauffeur) +afficherImmatriculationChauffeur() +init(immatriculation : String, nom: String, prenom : String, numeroPermis : int) } class Chauffeur { -nom : String -prenom : String -numPermis : int +afficherChauffeur() +init(nom, prenom, numero permis) } class Equipe { -nomResponsable :String -prenomResponsable : String -mailResponsable : String -telResponsable : String -nationnalite : String -nomEquipe : String +afficherCoureurs() +afficherNom() +ajouterParticipation(edition: Edition) +afficherParticipations() +nombreVictoire() +nombreParticipation() +rechercherEquipe(nomEquipe : String) +afficherNomResponsable() +afficherNationalite() } class ParticipationEquipe { -numInscription : int -etatParticipation : Etat -coureurs : list +ajouterCoureur(coureur : Coureur) +ajouterVehicule(immatriculation, nom, prenom, numeroPermis) +afficherCoureurs() +afficherCourse() +afficherListeVehicules() +modifierCoureur(coureur : Coureur, numCoureur : int) +annulerParticipation() +eliminerEquipe() +supprimerCoureur() +init() +listeEditions() +victoireParticipation() } class Coureur { -nom : String -prenom : String -dateNaissance : Date -groupeSanguin : String +afficherInformations() +recupererNom() +rechercherCoureur(nom : String, prenom : String) +ajouterParticipation(edition : Edition, nomEquipe : String) +afficherParticipations() +recupererDateNaissance() } class Participation { -numInscription : int -etatParticipation : Etat -nomEquipe : String +afficherInformations() +annulerParticipation() +init(nomEquipe : String) +modifierInscription(nomEquipe : String) +eliminerParticipant() } class Course { -nom : String +afficherNom() +afficherEdition(int annee, Date dateDebut, Date dateFin) +afficherListesEditions() +ajouterEdition(annee : int, dateDebut : date, dateFin : date, villeDepart : String, villeArrivee : String) +rechercherCourse(nomCourse : String) +init(nom : String) +recupererListesEditions() } class Edition { -annee : int -dateDebut : Date -dateFin : Date -villeDepart : String -villeArrivee : String -paysDepart : String -paysArrivee : String -distance : float -annulee : boolean +etablirClassementEquipe() +etablirClassemenGeneral() +afficherCoureurs() +afficherEquipes() +afficherEtapes() +ajouterEtape(villeDepart : String, villeArrivee : String, paysDepart : String, paysArrivee : String, distance : float, numOrdre : int) +modifierInformations(annee : int, dateDebut : Date, villeDepart : String, villeArrivee : String, paysDepart : String, paysArrivee : String ) +annulerEdition() +afficherInformations() +recupererMeilleurSprinteur() +recupererMeilleurGrimpeur() +recupererMeilleurJeune() +init(annee : int, dateDebut : date, dateFin : date, paysDepart : String, paysArrivee : String) +tempsMoyenCoureur() +afficherPlusLongueCourse() } class Etape { -villeDepart : String -villeArrivee : String -paysDepart : String -paysArrivee : String -distance : float -numOrdre : int -etatEtape : EtatEtape +etablirClassementEtape() +annulerEtape() +cloturerEtape() +lancerEtape() +afficherInformations() +init(villeDepart : String, villeArrivee : String, paysDepart : String, paysArrivee, distance : float, numOrdre : int) +tempsMoyenCoureurEtape() +recupererDistance() } enum EtatEtape { LANCEE CLOTUREE ATTENTE ANNULEE } class Performance { -temps : float -pointSprint : int -pointGrimp : int +recupererTemps() +recupererPointSprint() +recupererPointGrimp() +ajouterPointSprint() +ajouterPointGrimp() +ajouterTemps() +init() } Edition "1..*" --* Course Edition *-- "1..*" Etape Participation "1..*" -- "1..1" Edition Participation "1..*" -- "1..1" Coureur ParticipationEquipe "1..*" -- "1..1" Equipe ParticipationEquipe "1..*" -- "1..1" Edition ParticipationEquipe "1..1" -- "4" VehiculeAssistance VehiculeAssistance "1..*" --* Chauffeur Performance "0..*" -- "1..1" Participation Performance "0..*" -- "1..1" Etape Etat <|-- Participation Etat <|-- ParticipationEquipe EtatEtape <|-- Etape ```