UHALiens [pm04] - Exercice Karine Zampieri, Stéphane Rivière, Béatrice Amerein-Soltner Unisciel algoprog Version 10 avril 2015 Table des matières 1 UHALiens / pg-uhaliensc1 (alg, TD) 1 1.1 Hiérarchie de classes............................. 1 1.2 Classe de base................................. 1 1.3 Classes des étudiants............................. 2 1.4 Classes du personnel............................. 3 1.5 Gestionnaire des liens............................. 3 1.6 Programme de test.............................. 5 1 UHALiens / pg-uhaliensc1 (alg, TD) Cet exercice aide la direction d une université à gérer les personnes qui la fréquentent. 1.1 Hiérarchie de classes La direction de l Université (ici l UHA) souhaite stocker dans un gestionnaire de «liens» des informations sur quatre catégories de personnes : Les enseignants. Les secrétaires. Les étudiants d échange. Les étudiants réguliers. Chaque catégorie de personnes est décrite par son nom, l année où il est arrivé à l UHA et d autres informations spécifiques à sa catégorie. Créez une hiérarchie de classes permettant la gestion des UHALiens. 1.2 Classe de base Définissez une classe Lien qui représente les liens (classe de base). Incluez les attributs communs : nom et annee. 1
Unisciel algoprog UHALiens [pm04] 2 Écrivez un constructeur qui initialise les attributs (nom et année). Écrivez le destructeur virtuel qui ne fait rien (classe de base). Écrivez les accesseurs getnom du nom et getannee de l année. Écrivez une méthode virtuelle afficher qui affiche les attributs. 1.3 Classes des étudiants On distingue : Les étudiants d échange. Chaque étudiant d échange est décrit par son nom, l année où il est arrivé à l UHA, le nom de la section dans laquelle il est inscrit, ainsi que le nom de son université d origine. Les étudiants réguliers. Ce sont ceux qui suivent la totalité de leurs études à l UHA. Chaque étudiant régulier est décrit par son nom, l année où il est arrivé à l UHA, le nom de la section dans laquelle il est inscrit et son résultat à l examen final. Pour les étudiants en 1è année, on utilisera une estimation de son résultat à cet examen. Définissez une classe Etudiant qui hérite de Lien et qui représente les liens des étudiants. Incluez l attribut complémentaire : section. Écrivez un constructeur qui initialise les attributs (nom, année, section). Écrivez l accesseur getsection de la section. Définissez une classe Regulier qui hérite de Etudiant et qui représente les liens des étudiants réguliers. Incluez l attribut complémentaire : exam. Écrivez un constructeur qui initialise les attributs (nom, année, section, exam). Écrivez l accesseur getexam de la note de l examen. De même, définissez une classe Echange qui hérite de Etudiant et qui représente les liens des étudiants d échange. Incluez l attribut complémentaire : univ (université d origine).
Unisciel algoprog UHALiens [pm04] 3 Écrivez un constructeur qui initialise les attributs (nom, année, section, université). Écrivez un accesseur getuniv de l université d origine. 1.4 Classes du personnel On distingue : Les enseignants. Chaque enseignant est décrit par son nom, l année où il est arrivé à l UHA, le nom de son laboratoire et le nom de la section dans laquelle il enseigne (on supposera que chaque enseignant s occupe d une seule section). Les secrétaires. Chaque secrétaire est décrite par son nom, l année où elle est arrivée à l UHA, ainsi que par le nom de son laboratoire. Définissez une classe Personnel qui hérite de Lien et qui représente les liens du personnel. Incluez les attributs complémentaire : labo (laboratoire) et salaire. Écrivez un constructeur qui initialise les attributs (nom, année, laboratoire, salaire). Écrivez des accesseurs getlabo du laboratoire et getsalaire du salaire. Définissez une classe Enseignant qui hérite de Personnel et qui représente les liens des enseignants. Incluez l attribut complémentaire : section. Écrivez un constructeur qui initialise les attributs (nom, année, laboratoire, salaire, section). Écrivez un accesseur getsection de la section. De même, définissez une classe Secretaire qui hérite de Personnel et qui représente les liens des secrétaires. Écrivez un constructeur qui initialise les attributs (nom, année, laboratoire, salaire).
Unisciel algoprog UHALiens [pm04] 4 1.5 Gestionnaire des liens Définissez une classe UHALiens qui modélise le gestionnaire des liens. Incluez un vecteur liens de pointeurs sur Lien. Interdisez la recopie et l affectation. Écrivez un constructeur par défaut qui ne fait rien. Écrivez le destructeur qui fera appel à la méthode vider (définie plus loin) qui libère les instances dynamiques. Écrivez un accesseur size de la taille (nombre de liens). Écrivez une méthode ajouter(c) qui ajoute le pointeur sur un Lien c au gestionnaire. Écrivez une méthode interne libererinstances qui libère les instances dynamiques. Écrivez une méthode afficher qui affiche l objet. Déduisez une méthode vider qui vide l objet. On souhaite charger l ensemble des liens depuis un fichier et créer dynamiquement les instances. Par conséquent, écrivez : Une méthode interne ajouterregulier(is) qui lit les caractéristiques d un étudiant régulier depuis un flux d entrée is et l ajoute (instance dynamique) au parc. De même, une méthode interne ajouterechange(is) pour un étudiant d échange. De même, une méthode interne ajouterenseignant(is) pour un enseignant. Enfin, une méthode interne ajoutersecretaire(is) pour une secrétaire. Déduisez une méthode charger(fn) qui charge l ensemble des liens depuis un nom de fichier fn par appel aux méthodes internes. La méthode retournera Vrai si l opération de chargement s est effectuée correctement, Faux sinon. Supposez qu il y a une ligne d information par instance et que le premier caractère sur la ligne identifie la catégorie de liens : R ou r (étudiant Régulier) H ou h (étudiant d échange) M ou m (enseignant)
Unisciel algoprog UHALiens [pm04] 5 S ou s (Secrétaire) Écrivez une méthode interne decompte<t> qui calcule et renvoie le nombre de liens de type T du parc. Déduisez une méthode statistiques(annee) qui affiche les statistiques relativement à une annee, à savoir : Nombre de liens Nombre d Etudiant Nombre de Personnel Durée moyenne de présence dans l Université 1.6 Programme de test Écrivez un algorithme qui charge les données depuis un nom de fichier. Prévoyez les opérations suivantes dans votre programme : Affichage des informations enregistrées sur chaque personne. Affichage du nombre d UHALiens, d étudiants et de personnel parmi les personnes enregistrées. Affichage du nombre d années moyen pendant lesquelles les personnes enregistrées ont fréquentés l UHA. Téléchargez le fichier des données. @[dt-uhaliens1.txt] r Gaston_Peutimide 2013 SSC 12.0 // etudiant r Yvan_Rattrapeur 2012 SSC 5 // etudiant h Yves_Borgue 2013 Informatique Strasbourg // etudiant m Mathieu_Matheu 1968 LMEP 3500 Physique // personnel s Sophie_Scribona 1985 LMT 1800 // personnel