@startuml Classes

	class GestionnaireDialogue {
		+void creerCompteUtilisateur(String pseudo, String prenom, String nom, String email, String motDePasse, String confirmationMotDePasse)
		+void creerCompteDepensesCommunes(String nom, String description)
		+void consulterListeCompteDepensesCommunes(CompteUtilisateur compteU)
		+void consulterCompteDepensesCommunes(CompteUtilisateur compteU, CompteDepensesCommunes CompteDC)
		+String hasher(String phraseAHasher)
		+void afficherMessageInformation(String message)
		+void afficherMessageErreur(String message)
		+void afficherListeComptesDepensesCommunes(Liste<CompteDepensesCommunes> listeComptesDepenses)
		+void afficherCompteDepensesCommunes(CompteDepensesCommunes CompteDC)
		+boolean pseudoConforme(String pseudo)
		+boolean prenomConforme(String prenom)
		+boolean nomConforme(String nom)
		+boolean emailConforme(String email)
		+boolean motDePasseConforme(String motDePasse)
		+boolean nomCompteConforme(String nom)
		+void seConnecter(String pseudo, String motDePasse)
		+void afficherPageAccueil(CompteUtilisateur utilisateur)
		+void afficherInterfaceModificationInfosPersonnelles()
		+boolean checkNouveauMdp(String hashMDP1,String hashMDP2)
	}
	GestionnaireDialogue --"1" CompteUtilisateur
	GestionnaireDialogue --"1" GestionnaireSauvegarde

	interface GestionnaireSauvegarde {
		+CompteDepensesCommunes creerCompteDepensesCommunes(CompteUtilisateur compteU, String nom, String description)
		+boolean sauvegarderCompteUtilisateur(CompteUtilisateur compte)
		+boolean pseudoExiste(String pseudo)
		+boolean combinaisonExiste(String pseudo, String hash)
		+CompteUtilisateur recuperationInformations(String pseudo)
		+Liste<CompteDepensesCommunes> getListeComptesDepensesCommunes(CompteUtilisateur compteU)
		+CompteDepensesCommunes getCompteDepensesCommunes(CompteUtilisateur compteU, CompteDepensesCommunes CompteDC)
		+String verifierInformationsUtilisateur(String prenom,String nom, String hashMDP)
		+void modifierInfosUtilisateur(CompteUtilisateur u)
	}

	class GestionnaireSauvegardeFichier implements GestionnaireSauvegarde {

	}
	class CompteUtilisateur {
		String pseudo
		String prenom
		String nom
		String email
		String hashMotDePasse
		+CompteUtilisateur(String pseudo, String prenom, String nom, String email, String hashMDP)
		+void setComptesDepensesCommunes(Liste<CompteDepensesCommunes> listeComptesDepenses)
		+boolean sauvegarder(GestionnaireSauvegarde gs)
		+boolean addCompteDepenseCommunes(CompteDepensesCommunes cdc)
		+void recupererCompteDepensesCommunes(GestionnaireSauvegarde gs)
		+Liste<CompteDepensesCommunes> getListeComptesDepensesCommunes()
		+String getPseudo()
		+String getPrenom()
		+String getNom()
		+String getEmail()
		+String getHashMotDePasse()
		+void setPseudo(String pseudo)
		+void setPrenom(String prenom)
		+void setNom(String nom)
		+void setEmail(String email)
		+void setHashMotDePasse(String HashMDP)
	}
	CompteUtilisateur --"*" CompteDepensesCommunes
	class CompteDepensesCommunes {
		+CompteDepenseCommunes(String identifiant, CompteUtilisateur compteU, String nom, String description, Date dateCreation)
	}

@enduml