Afin de gérer les inscriptions d’employés d’une organisation à des sessions de formations, une application réalisée avec un langage de programmation objet est développée. L’organisme propose un catalogue de formations. Chaque formation, étalée sur plusieurs jours contigus, propose différentes sessions identiques ; seuls le numéro de session, la date de début de session et le nombre de participants maximum diffèrent. Lors de l’inscription à une formation, chaque employé classe toutes les sessions par ordre de préférence. A la clôture des inscriptions de chaque formation, l’affectation des participants aux sessions a lieu. Si le nombre de demandes pour une session dépasse le nombre de places disponibles, l’ancienneté de l’employé dans l’entreprise – un participant plus « ancien » est prioritaire-. Si un vœu pour une session ne peut être satisfait pour un participant, on étend son choix à son deuxième vœu de session, et ainsi de suite. On considère pour la suite de l’étude que deux employés n’ont jamais la même ancienneté. Diagramme des cas d’utilisation.
1) Cas d'utilisation, création d’une formation et ses sessions liées
Cas d’utilisation : création d’une formation et ses sessions liées Acteur principal : l’organisateur des formations Evénement déclencheur : nouvelle formation Pré-conditions : Les informations sur la formation et les sessions sont disponibles Scénario normal 1. L’organisateur fournit les informations sur la formation et les sessions 2. Le système enregistre ces informations. Travail à faire. Question 1.1 construire le diagramme de classes relatif à ce cas.
On fournit les méthodes principales nécessaires à la réalisation du cas.
Organisme :: ajouterFormation(code entier, libellé chaîne)
fin Organisme :: ajouterSession(numéro entier,date Date, nbMax entier, codeF entier)
fin Catalogue :: ajouterFormation(codeF entier,libellé chaîne)
fin Catalogue :: ajouterSession(numéro entier, date Date, nbMax entier, codeF entier)
fin Formation :: ajouterSession(numéro entier, date Date, nbMax entier)
fin Question 1.2 établir le diagramme de séquences Question 1.3 mettre à jour le diagramme de classes 2) Cas d'utilisation, inscription des employés à une formation Cas d’utilisation : inscription des employés à une formation Acteur principal : l’organisateur des formations Evénement déclencheur : demande d'inscription d'un participant Pré-conditions : La formation existe ainsi que ses sessions Scénario normal 1. L’organisateur fournit les information sur le participant, code de la formation, nom, prénom, ancienneté, les numéros des sessions par ordre préférentiel 2. Le système enregistre le participant pour la formation demandée ainsi que ses vœux hiérarchiques de sessions. Travail à faire.
Question 2.1 proposer un diagramme de classes.
Question 2.2 proposer une répartition des responsabilités à l'aide d'un diagramme de séquence
3) Cas d'utilisation, affectation des inscrits aux sessions d’une formation Cas d’utilisation : affectation des inscrits aux sessions d’une formation Acteur principal : l’organisateur des formations Evénement déclencheur : clôture des inscriptions Pré-conditions : La formation existe ainsi que ses sessions Les inscriptions ont eu lieu, les vœux des inscrits ont été exprimés La formation pourra accueillir tous ses inscrits Scénario normal 1. L’organisateur demande l’affectation des inscrits aux sessions 2. Le système affecte une session à chaque inscrit selon les vœux hiérarchiques exprimés et au privilège de l’ancienneté dans l’entreprise en cas de litige. Post condition. Tous les inscrits sont affectés dans des sessions Description des classes : classe Participant // Un participant est un employé de l’organisation inscrit à une formation attributs privés : nom : chaîne prénom : chaîne ancienneté : entier // Ancienneté de l’employé dans l’organisation exprimé en nombre de //jours laSession : Session // Session de formation affectée à l’employée lors du traitement des //affectations lesChoix : Collection de Session // Sessions choisies par l’employé lors de son inscription à la formation, classées par ordre de préférence décroissante méthodes publiques : procédure init(unNom, unPrénom : chaînes, uneAncienneté : entier, desChoix : Collection de Session) fonction getChoixSession( index entier) : Session procédure setLaSession(uneSession Session ) fin classe L’attribut lesChoix contient les choix de sessions classés par préférence. classe Session attributs privés : numéro : entier dateDébut : date nbMax : entier // Nombre de places offertes lesParticipants : Collection de Participants // Participants retenus pour la session méthodes publiques : procédure init(unNuméro : chaîne, uneDate : date, unNb : entier ) fonction getNuméro() : entier procédure ajouteParticipant (unParticipant : Participant) fonction estPleine() : booléen fin classe classe Formation attributs privés : code : chaîne libellé : chaîne nbJours : entier // Nombre de jour de la formation , identique pour toute ses sessions lesInscrits : Collection de Participants // Participants inscrits à la formation mesSessions : Collection de Sessions // Sessions proposée par la formation méthodes publiques : procédure affecteParticipants() fin classe Commentaire :
-
Une classe Collection
est utilisée afin de réaliser les associations de multiplicité n ;
l’annexe fournit la description de cette classe. -
La méthode Participant ::
getChoixSession retourne la session dont l’index représente le numéro
de choix, par exemple Participant :: getChoixSession(2)
retourne la session choisie en seconde position -
La méthode Session ::
ajouteParticipant ajoute un participant à la session -
La méthode Session ::
estPleine indique si le nombre d’inscrits atteint le maximum
toléré. La méthode
Formation :: affecteParticipants réalise l’affectation
des inscrits à des sessions en fonction de leurs choix et de leurs ancienneté. |
1. Etablir le diagramme de classes en faisant figurer les attributs, les valeurs de multiplicité et les sens de navigabilité entre classes. 2. Ecrire les méthodes suivantes : -
Participant ::init -
Participant ::getChoixSession -
Session ::ajouteParticipant -
Session ::estPleine -
Formation ::affecteParticipants |
Annexe : Classe Collection
Classe Collection //
Classe générique. Un objet de la classe Collection permet de gérer //
retourne le nombre d'éléments de la collection. // teste
si l’objet passé en paramètre fait partie de la collection. //
retourne l'index de l’objet passé en paramètre dans la collection, //
retourne l’objet qui se trouve à l’index passé en paramètre // ajoute un objet à la collection. Procédure trier(e nomChamp : chaîne, e typeTri : caractère) // trie la collection sur les valeurs de nomChamp, attribut de la classe stockée dans la collection ; typeTri prend « a » pour ascendant et « d » pour descendant Procédure remplacerA (e index : entier ; e unObjet :objet) //
remplace, au sein de la collection, l’objet figurant à l’index passé en //
supprime de la collection l’objet figurant à l’index passé en paramètre // vide
le contenu de la collection. |
Pour instancier une collection : // La collection instanciée contiendra des objets de la classe maClasse |
L'avantage de cette classe est de proposer des services d'ajout et de suppression plus simples que la gestion d'un tableau. En outre le problème du dimensionnement de la structure n'est pas à la charge du développeur. |
Toute variable d'un type de base (entier, chaîne) peut être considérée comme un objet d'une collection. |