Diagramme de Classes UML - FoxShelter
Vue d'ensemble
Ce diagramme présente la structure des classes principales du système FoxShelter, leurs relations et leurs responsabilités.
Diagramme de Classes
classDiagram
%% Énumérations
class EtatSante {
<<enumeration>>
Critique
Mauvais
Moyen
Bon
Excellent
}
class TypeSoin {
<<enumeration>>
Consultation
Vaccination
Chirurgie
Urgence
Controle
Traitement
Radiographie
AnalyseSanguine
}
class TypeDon {
<<enumeration>>
Argent
Nourriture
Materiel
Service
Medicaments
Equipement
}
%% Classes principales
class Renard {
+int Id
+string Nom
+string Espece
+int Age
+char Sexe
+DateTime DateArrivee
+EtatSante EtatSante
+decimal Poids
+string Description
+bool EstAdopte
+int RegimeAlimentaireId
+DateTime DateCreation
+DateTime DateModification
+string NomComplet
+string SexeTexte
+int CalculerDureeSejourJours()
+bool PeutEtreAdopte()
+decimal CalculerCoutTotal()
+SoinVeterinaire DernierSoin()
+bool NecessiteAttentionUrgente()
+string ObtenirAgeAffichage()
+void ModifierEtatSante(EtatSante nouvelEtat)
+void MarquerCommeAdopte()
}
class Personne {
<<abstract>>
+int Id
+string Nom
+string Prenom
+string Email
+string Telephone
+DateTime DateNaissance
+string Adresse
+string NomComplet
+string Initiales
+int CalculerAge()
+string ObtenirNomComplet()
+bool EstMajeure()
+string ObtenirAgeAffichage()
}
class Employe {
+decimal Salaire
+string Poste
+DateTime DateEmbauche
+bool EstVeterinaire
+string Qualifications
+int CalculerAncienneteAnnees()
+decimal CalculerSalaireAnnuel()
+bool PeutEffectuerSoins()
+string ObtenirNiveauExperience()
}
class Benevole {
+string Disponibilites
+string Competences
+int HeuresBenevolat
+DateTime DatePremiereIntervention
+bool EstActif
+string Motivation
+void AjouterHeures(int heures)
+bool EstDisponible(DateTime date)
+int CalculerDureeEngagementMois()
+string ObtenirNiveauImplication()
}
class SoinVeterinaire {
+int Id
+DateTime DateSoin
+TypeSoin TypeSoin
+string Description
+string Medicaments
+decimal Cout
+string Observations
+DateTime? DateProchaineVisite
+bool EstTermine
+int VeterinaireId
+int RenardId
+string Resume
+int DureeDepuisSoin
+bool EstUrgent()
+bool EstRecent()
+bool ASuivi()
+bool SuiviEnRetard()
+int ObtenirPriorite()
+string ObtenirCouleurAffichage()
+string ObtenirIcone()
+decimal CalculerCoutTotal()
+void MarquerCommeTermine()
+void ProgrammerSuivi(DateTime date)
+string ObtenirResume()
}
class RegimeAlimentaire {
+int Id
+string Nom
+string Description
+int FrequenceRepas
+decimal QuantiteParRepas
+string TypeNourriture
+decimal CoutJournalier
+string ComplementsAlimentaires
+bool AdapteJeunes
+bool AdapteAdultes
+bool AdapteSeniors
+bool EstRegimeMedical
+string InstructionsSpeciales
+decimal QuantiteJournaliere
+decimal CoutParKg
+string TypeRegime
+decimal CalculerCoutMensuel()
+decimal CalculerCoutAnnuel()
+bool EstAdapteAge(int age)
+decimal CalculerQuantitePeriode(int jours)
+decimal CalculerCoutPeriode(int jours)
+List~string~ ObtenirHorairesRepas()
+bool NecessiteSurveillance()
+string ObtenirRecommandationsAge(int age)
+Dictionary~string, object~ GenererPlanningJournalier()
+bool ValiderRegime()
}
class Don {
+int Id
+TypeDon TypeDon
+DateTime DateDon
+decimal? Montant
+string Description
+decimal? Quantite
+string Unite
+string NomDonateur
+string PrenomDonateur
+string Email
+string Telephone
+string Adresse
+bool EstAnonyme
+bool RecuFiscalSouhaite
+bool RecuFiscalEnvoye
+DateTime? DateEnvoiRecu
+string Commentaires
+bool EstRecurrent
+string FrequenceRecurrence
+DateTime? ProchaineEcheance
+DateTime DateCreation
+DateTime DateModification
+string DonateurComplet
+decimal ValeurEstimee
+string StatutRecuFiscal
+int Anciennete
+decimal CalculerValeurMonetaire()
+bool NecessiteRecuFiscal()
+void MarquerRecuEnvoye()
+DateTime CalculerProchaineEcheance()
+bool EstEchu()
+string ObtenirCategorie()
+string GenererMessageRemerciement()
+bool ValiderDon()
+Don CreerDonRecurrentSuivant()
}
%% Services
class RenardService {
-FoxShelterContext _context
+Task~List~Renard~~ ObtenirTousAsync()
+Task~Renard~ ObtenirParIdAsync(int id)
+Task~Renard~ AjouterAsync(Renard renard)
+Task~Renard~ ModifierAsync(Renard renard)
+Task~bool~ SupprimerAsync(int id)
+Task~List~Renard~~ RechercherAsync(string terme)
+Task~Renard~ MarquerCommeAdopteAsync(int id)
+Task~Renard~ ModifierEtatSanteAsync(int id, EtatSante nouvelEtat)
+Task~StatistiquesRenards~ ObtenirStatistiquesAsync()
+Task~List~Renard~~ ObtenirRenardsUrgentsAsync()
+Task~List~Renard~~ ObtenirNouveauxArrivantsAsync(int jours)
+Task~List~Renard~~ ObtenirRenardsNecessitantSuiviAsync()
}
class StatistiquesRenards {
+int NombreTotal
+int NombreAdoptes
+int NombreUrgents
+int NombreNouveauxArrivants
+decimal PourcentageAdoptes
+decimal CoutMoyenSoins
+int DureeSejourMoyenne
+Dictionary~EtatSante, int~ RepartitionEtatSante
+Dictionary~string, int~ RepartitionEspeces
}
%% Contexte de base de données
class FoxShelterContext {
+DbSet~Renard~ Renards
+DbSet~Employe~ Employes
+DbSet~Benevole~ Benevoles
+DbSet~SoinVeterinaire~ SoinsVeterinaires
+DbSet~RegimeAlimentaire~ RegimesAlimentaires
+DbSet~Don~ Dons
+void OnModelCreating(ModelBuilder modelBuilder)
+Task~int~ SaveChangesAsync()
}
%% Relations
Personne <|-- Employe : hérite
Personne <|-- Benevole : hérite
Renard ||--o{ SoinVeterinaire : "reçoit"
Employe ||--o{ SoinVeterinaire : "effectue"
Renard }o--|| RegimeAlimentaire : "suit"
Renard --> EtatSante : "a un"
SoinVeterinaire --> TypeSoin : "est de type"
Don --> TypeDon : "est de type"
RenardService --> FoxShelterContext : "utilise"
RenardService --> StatistiquesRenards : "génère"
FoxShelterContext --> Renard : "gère"
FoxShelterContext --> Employe : "gère"
FoxShelterContext --> Benevole : "gère"
FoxShelterContext --> SoinVeterinaire : "gère"
FoxShelterContext --> RegimeAlimentaire : "gère"
FoxShelterContext --> Don : "gère"
Description des Classes
Classes Entités
Renard
- Responsabilité : Représente un renard hébergé au refuge
- Attributs principaux : Informations d'identification, état de santé, données physiques
- Méthodes clés : Calculs de durée de séjour, vérifications d'adoptabilité, gestion de l'état
Personne (Abstraite)
- Responsabilité : Classe de base pour les personnes (employés et bénévoles)
- Attributs principaux : Informations personnelles de base
- Méthodes clés : Calculs d'âge, formatage des noms
Employe
- Responsabilité : Représente un employé du refuge
- Spécialisation : Informations professionnelles, qualifications vétérinaires
- Méthodes clés : Calculs de salaire et d'ancienneté
Benevole
- Responsabilité : Représente un bénévole du refuge
- Spécialisation : Disponibilités, compétences, suivi de l'engagement
- Méthodes clés : Gestion des heures, vérification de disponibilité
SoinVeterinaire
- Responsabilité : Représente un soin vétérinaire prodigué à un renard
- Attributs principaux : Type de soin, coût, observations, suivi
- Méthodes clés : Évaluation d'urgence, calculs de coût, gestion du suivi
RegimeAlimentaire
- Responsabilité : Définit un régime alimentaire pour les renards
- Attributs principaux : Composition, fréquence, coûts, adaptabilité
- Méthodes clés : Calculs nutritionnels et financiers, validation
Don
- Responsabilité : Représente un don fait au refuge
- Attributs principaux : Type, montant, donateur, récurrence
- Méthodes clés : Calculs de valeur, gestion des reçus fiscaux
Classes Services
RenardService
- Responsabilité : Logique métier pour la gestion des renards
- Fonctionnalités : CRUD, recherche, statistiques, gestion des états
- Pattern : Service Layer
StatistiquesRenards
- Responsabilité : Agrégation de données statistiques
- Utilisation : Tableaux de bord, rapports
Classes Infrastructure
FoxShelterContext
- Responsabilité : Contexte Entity Framework pour l'accès aux données
- Pattern : Repository/Unit of Work via EF Core
Patterns Utilisés
- Héritage : Personne → Employe/Benevole
- Composition : Renard contient RegimeAlimentaire
- Association : Relations entre entités
- Service Layer : RenardService pour la logique métier
- Repository Pattern : Via Entity Framework DbContext
Contraintes et Règles Métier
- Un renard ne peut avoir qu'un seul régime alimentaire actif
- Seuls les employés vétérinaires peuvent effectuer certains soins
- Les soins urgents doivent être traités en priorité
- Les régimes médicaux nécessitent une surveillance particulière
- Les dons récurrents génèrent automatiquement les échéances suivantes
Évolutions Possibles
- Ajout d'une classe
Adoption
pour tracer les adoptions - Classe
Planning
pour la gestion des horaires - Classe
Rapport
pour la génération de documents - Interface
INotificationService
pour les alertes - Classe
Medicament
pour une gestion plus fine des traitements