Gestion méthodique du personnel

[30 minutes]

Le service de gestion du personnel d'une entreprise désire s'équiper d'un outil lui permettant de gérer informatiquement ses employés, leurs salaires et leurs congés. Les spécifications suivantes ont pu être mises en exergue par une analyse des besoins réalisée auprès des utilisateurs du service du personnel.

Généralités :

  • tout employé est identifié par un nom, un prénom et une date de naissance ;

  • tout employé remplit une fonction et appartient à un service ;

  • pour chaque employé on gère la date d'embauche et la quotité (c'est à dire le pourcentage de temps travaillé par rapport au temps plein, en cas de travail à temps partiel).

Gestion des salaires :

  • pour chaque employé on gère l'historique de ses salaires dans l'entreprise, chaque salaire étant affecté à une période de temps ;

  • un salaire est composé d'un salaire brut, de charges patronales et de charges salariales ;

  • on cherchera à partir des ces données à obtenir également le salaire chargé (brut + charges patronales), et le salaire net (brut - charges salariales), et ce en particulier pour le salaire en cours (celui que touche actuellement le salarié).

Gestion des congés :

  • pour chaque employé, on mémorise chaque congé pris (posant qu'un congé concerne toujours une ou plusieurs journées entières) ;

  • chaque employé a le droit aux jours de congés suivants :

    • 25 jours (pour une quotité de 1) et 25 x quotité sinon,

    • chaque fonction ouvre les droits à un certain nombre de jours de RTT,

    • chaque service ouvre les droits à un certain nombre de jours de RTT,

    • chaque tranche de 5 ans passés dans l'entreprise donne droit à 1 jour supplémentaire,

    • les employés de plus de 40 ans ont un jour supplémentaire, et ceux de plus de 50 ans deux.

  • pour chaque employé on cherchera à connaître le nombre total de jours de congés autorisés, le nombre de jours pris et le nombre de jours restants sur l'année en cours.

Question

Réaliser le diagramme de classes permettant de modéliser ce problème.

Indice

On fera apparaître les méthodes pertinentes étant donné le problème posé.

Méthodes

Solution

Exemple
Description

@startuml

hide circle

class Employé {

nom : text

prénom : text

ddn : date

date_embauche : date

quotité : pourcentage

age() : posint

congés_restants() : posint

congés_pris() : posint

poser_congés(début:date, fin:date)

}

note left : (nom, prénom, ddn) unique

class Fonction {

nom : text {unique}

rtt : postint

}

Employé "1" - "1..*" Fonction : " remplit "

class Service {

nom : text {unique}

rtt : posint

}

Employé "1" - "1..*" Service : " appartient "

class Salaire {

début : date

fin : date

brut : decimal

part_patronale : decimal

part_salariale : decimal

salaire_chargé() : decimal

salaire_net() : decimal

salaire_en_cours?() : boolean

}

Employé "1" -- "*" Salaire : " reçoit "

class Congé {

début : date

fin : date

nb_jours() : posint

}

Employé "1" -- "*" Congé : " prend "

@enduml

Remarque

On remarquera la méthodes poser_congés qui modélise une opération dont l'importance dans l'énoncé justifie une mise en exergue.

Bien entendu, il n'existe pas de solution unique à ce problème. Par exemple si seul le salaire en cours est réellement intéressant, on pourra affecter les méthodes salaireCharge et salaireNet à la classe Employe plutôt que Salaire.

RappelPourquoi représenter des méthodes en UML en base de données ?
  • Pour rendre l'UML plus explicite, la méthode est alors une technique d'annotation

  • Pour montrer qu'elles sont importantes et s'en souvenir au moment du développement de l'application (on met ainsi en exergue certaines fonctions énoncées lors de la clarification)

  • Parce qu'elle peuvent donner lieu à des vues intéressantes en relationnel