Logiciel : plantuml 
https://plantuml.com/fr/

@startuml "Diagramme de classes participantes PHP"

class FrontController <<contrôle>>{

}

FrontController --> ControllerAdmin
FrontController --> ControllerUtilisateur
FrontController --> ControllerInvite

class ControllerUtilisateur <<contrôle>>{

}

ControllerUtilisateur --> ControllerLancerJeu

class ControllerInvite <<contrôle>>{

}

ControllerInvite --> ControllerLancerJeu

class ControllerAdmin <<contrôle>>{

}

class ControllerLancerJeu <<contrôle>>{
    lancerJeuAléatoirement()
    lancerJeu()
}


class Accueil <<dialogue>>{
    rejoindrePartie()
    lancerUnJeu()
    seConnecter()
    seDeconnecter()
}

Accueil --> RejoindrePartie
Accueil --> LancerUnJeu
Accueil --> Connexion

class RejoindrePartie <<dialogue>>{
    codeInvitation : String
    rejoindrePartie()
}

class LancerUnJeu <<dialogue>>{
    jeux : Array
    choisirJeu()
    choisirJeuAléatoirement()
}

class Connexion <<dialogue>>{
    email : String
    motDePasse : String
    seConnecter()
}

Connexion --> EspacePersonnel

class EspacePersonnel <<dialogue>>{
    scientifiqueTrouvés : Array
    accéderFicheScientifique()
    ChangerPseudo()
}

EspacePersonnel --> DetailsScientifique
EspacePersonnel --> ChangerPseudo

class DetailsScientifique <<dialogue>>{
    nom : String
    prenom : String
    photo : String
    dateNaissance : Date
    descriptif : String
    thematiques : Array
    retourEspacePersonnel()
}

class ChangerPseudo <<dialogue>>{
    pseudo : String
    setPseudo()
}





class Scientifique <<entité>>{
    nom : String
    prenom : String
    photo : Raw
    dateNaissance : Date
    descriptif : String
    ratioTrouvee : Float
}

class Thematique <<entité>>{
    libelle : String
}

class "Difficulté" <<entité>>{
    libelle: String
}

abstract Compte <<entité>>{
    email : String
    motDePasse : Hash
}

class Utilisateur <<entité>>{
    pseudo : String
}

class Admin <<entité>>{
}


class Jeu <<entité>>{
    nom : String
    nbrParties : Integer
}


@enduml