@startuml
'Uniquement pour faciliter la lecture du diagramme, pas encore d'usage
abstract class TraceCalculImpact{
}
hide TraceCalculImpact

' Classes de trace


class TraceCalculImpactEquipementPhysique {
    String formule
    Integer quantite
    Double tauxUtilisation
    String paysUtilisation
    String nomCourtDataCenter
    ConsoElecAnMoyenne consoElecAnMoyenne
    MixElectrique mixElectrique
    NbJourUtiliseAn nbJourUtiliseAn
    Double valeurReferentielImpactEquipement
    String sourceReferentielImpactEquipement
    DureeDeVie dureeDeVie
}

class TraceCalculImpactEquipementVirtuel {
    String formule
    boolean vCPUok
    Integer vCPU
    Integer nbvCPU
    Integer nbVM
}

class TraceCalculImpactMessagerie {
    String formule
    String critere
    String sourceReferentielImpactMessagerie
    Double volumeTotalMailEmis
    Double nombreMailEmis
    Double constanteCoefficientDirecteur
    Double poidsMoyenMail
    Double constanteOrdonneeOrigine
    Double nombreMailEmisXDestinataires
}

class TraceCalculImpactReseau {
    String formule
    String critere
    String etapeACV
    String sourceReferentielReseau
    String equipementPhysique
    String impactReseauMobileMoyen
    String goTelecharge
}

' Classes des objets associées aux calculs

class ConsoElecAnMoyenne {
    Double valeur
    Double valeurEquipementConsoElecAnnuelle
    Double valeurReferentielConsoElecMoyenne
    String sourceReferentielImpactEquipement
}

 class DureeDeVie {
    Double valeur
    String dateAchat
    String dateRetrait
    DureeDeVieParDefaut dureeDeVieParDefaut
}

 class DureeDeVieParDefaut {
    Double valeur
    Double valeurEquipementDureeVieDefaut
    Double valeurReferentielHypothese
    String sourceReferentielHypothese
    String typeEquipement
}

class MixElectrique {
   Double valeur
   boolean isServeur
   Double dataCenterPue
   Double valeurReferentiel
   String sourceReferentiel
   String pays
}

class NbJourUtiliseAn {
    Double equipementNbJourUtiliseAn
    Double valeurReferentielHypothese
    String sourceReferentielHypothese
    Double valeur
}

ConsoElecAnMoyenne "0-1" -up- "1" TraceCalculImpactEquipementPhysique : peut contenir >
DureeDeVie "0-1" -up- "1" TraceCalculImpactEquipementPhysique : peut contenir >
MixElectrique "0-1" -up- "1" TraceCalculImpactEquipementPhysique : peut contenir >
NbJourUtiliseAn "0-1" -up- "1" TraceCalculImpactEquipementPhysique : peut contenir >

DureeDeVieParDefaut "0-1" -up- "1" DureeDeVie : peut contenir >


TraceCalculImpact <|-- "hérite de" TraceCalculImpactReseau
TraceCalculImpact <|-- "hérite de" TraceCalculImpactMessagerie
TraceCalculImpact <|-- "hérite de" TraceCalculImpactEquipementVirtuel
TraceCalculImpact <|-- "hérite de" TraceCalculImpactEquipementPhysique

@enduml
