Évaluation mise à niveau conception et programmation avec orientation objet Introduction. Il s'agit de réaliser une application WEB qui présente aux internautes qui l'utilisent la moyenne des différentes évaluations accumulées tout au long de l'année universitaire par les étudiants. La formation est suivie par des étudiants en alternance avec un contrat d'apprentissage et des étudiants en formation initiale. Tous les étudiants sont soumis aux mêmes évaluations dans les différents modules ou matières qui leur sont enseignés. En revanche, les étudiants apprentis sont également évalués par leur maître d'apprentissage sur trois critères (voir ci-dessous). Les étudiants en formation initiale doivent réaliser un stage durant l'année universitaire. Le stage donne lieu à une seule note négociée entre les deux tuteurs (le professeur et le professionnel de l'entreprise dans laquelle l'étudiant fait son stage). L'évaluation des modules. Chaque module ou matière peut donner lieu à une ou plusieurs évaluations (devoirs, exposés, projets, etc). Chaque évaluation est pondérée par un coefficient. Chaque étudiant collectionne au cours de sa scolarité des évaluations. Le calcul de la moyenne des évaluations doit tenir compte des coefficients qui leur sont affectés. Chaque étudiant est capable de la calculer. Licence MISIGD-2016-2017 IUT Vélizy 1/5
L'évaluation de l'appréciation des maîtres d'apprentissage. Chaque maître d'apprentissage est tenu de fournir à son apprenti une évaluation. Celle-ci repose sur trois critères : Initiative et autonomie Rigueur et sérieux Réalisation des missions confiées Chaque appréciation peut prendre la valeur A, B ou C. Voici la correspondance qu'a mise en place le responsable de la formation afin d'obtenir une note sur 20 à partir des trois appréciations. AAA 18 AAB 16 ABB 14 BBB 12 BBC 10 BCC 8 CCC 6 Une classe de type singleton a été conçue afin d'implémenter cette correspondance (voir le code source fourni avec le sujet). La note obtenue possède le même coefficient que la moyenne des notes obtenues aux évaluations des modules ou matières (c est à dire 1). L'évaluation du stage. Chaque étudiant en formation initiale fait un stage. Celui-ci est évalué par ses deux tuteurs. Le professeur et le professionnel de l'entreprise dans laquelle il fait son stage. La note de stage est affectée d'un coefficient de 0.75 dans le calcul de la moyenne générale d'un étudiant. Le calcul de la moyenne. Le calcul de la moyenne dépend des évaluations des matières collectionnées par chaque étudiant dans le conteneur evaluations. Ce conteneur est une liste java.util.list implémentée par la classe java.util.arraylist. Et selon le type de scolarité suivie par l'étudiant (formation par apprentissage ou formation initiale), la moyenne dépend soit des appréciations de l'apprentissage traduites en une note sur 20, soit de la note de stage. Les appréciations sont collectionnées par un étudiant apprenti dans un conteneur de type liste java.util.list implémentée par la classe java.util.arraylist. La note de stage est mémorisée par chaque étudiant en formation initiale. Le calcul de la moyenne repose sur un algorithme dont une partie est commune aux deux types d'étudiant, le calcul de la moyenne des évaluations. Et dont l'autre partie dépend du type de Licence MISIGD-2016-2017 IUT Vélizy 2/5
l'étudiant (apprenti ou en formation initiale). Il faut implémenter le patron de méthode (design pattern template) pour gérer cette problématique. La persistance des objets. Les objets qui composent le graphe métier de l'application (les étudiants apprentis ou en initiale, les adresses, les évaluations et les appréciations) persistent dans une base de données orientée objet (OODBMS 1 ). Une couche logicielle de type DAO 2 a été développée. Elle permet de stocker et de restaurer les objets métiers. Le contrôleur. Le contrôleur de l'application WEB est un composant logiciel de type SERVLET de la distribution JAVA EE (Enterprise Edition). Il implémente la méthode doget(httpservletrequest req, HttpServletResponse rep). Celle-ci restaure tous les étudiants et pour chacun d'eux invoque la méthode tostring() dont le flux de sortie est converti e, flux HTML. Le polymorphisme de la méthode tostring(). La méthode tostring() doit construire une chaîne de caractères composée du matricule, du nom, du prénom, de la moyenne, des appréciations (pour un apprenti), et de la note de stage (pour un étudiant en initiale). 1 OODBMS : Objet Oriented Data Base Management system 2 DAO : Data Access Object Licence MISIGD-2016-2017 IUT Vélizy 3/5
Annexes. Le code source fourni avec le sujet se trouve dans l'archive code_source.jar. Cette archive doit être importée dans le projet Eclipse (Dynamic Web Project). Le script contexte.bash permet de démarrer le contexte de déploiement. Il s agit de deux microconteneurs virtuels de type Docker. Le premier héberge le système de gestion de base de données orienté objet (produit logiciel DB4o). Le second héberge le serveur d applications JAVA EE WEB (produit logiciel APACHE TOMCAT). Rendre le fichier exécutable par chmod +x contexte.bash. Exécution du script par./contexte.bash. #!/bin/bash docker stop $(docker ps -a -q) docker rm $(docker ps -a -q) docker run -d --name db4o lecoz/db4o docker run -d --name tomcat --link db4o:db4o lecoz/tomcatsshsiolapie echo ADRESSE TCPIP DU CONTENEUR db4o : docker inspect --format '{{.NetworkSettings.IPAddress }}' db4o echo ADRESSE TCPIP DU CONTENEUR tomcat : docker inspect --format '{{.NetworkSettings.IPAddress }}' tomcat Le projet Eclipse doit importer les librairies servlet-api.jar et db4o-8.0.276.16149-all-java5.jar. Menu properties sur le projet puis sous-menu Java Build Path puis onglet Libraries et enfin Add Externel JARs L exportation du projet sous la forme d une archive WAR doit contenir le fichier web.xml, la page index.html de redirection fournie avec le sujet, le byte-code des classes JAVA et la librairie db4o indiquée ci-dessus (menu Deployment Assembly puis bouton Add). La classe DAOImpl implémente les méthodes restaurer(), peupler() et dépeupler(). La première retourne tous les étudiants stockés dans la base de données avec leur adresse, évaluations et appréciations. La seconde crée un jeu d essai avec deux étudiants (un apprenti et un en initiale) avec leur adresse, évaluations et appréciations. La dernière supprime en cascade tous les objets métiers de la base de données. La méthode peupler() n est invoquée qu une seule fois au déploiement de l application (invocation dans la méthode public void init(servletconfig config) de la SERVLET). La méthode dépeupler() n est invoquée qu une seule fois à l arrêt ou au déchargement de l application (invocation dans la méthode public void destroy() de la SERVLET). Le contexte de déploiement. client distant TCP/IP conteneur Docker "tomcat" APACHE TOMCAT TCP/IP conteneur Docker "db4o" DB4o navigateur HTML evaluation.war db4o Sortie HTML dans le navigateur distant. Licence MISIGD-2016-2017 IUT Vélizy 4/5
Calcul de la moyenne. La méthode moyenne() doit retourner la moyenne des évaluations plus le résultat de la méthode calculspecifique() divisé par deux. La moyenne des évaluations est égale à la somme des notes obtenues divisée par la somme des coefficients de ces notes. Le calcul spécifique pour un apprenti est égal à la note retournée par la méthode correspondre() de la classe singleton CorrespondanceAppreciationNote. Cette méthode prend en argument la liste des appréciations de l'apprenti. Le calcul spécifique pour un étudiant en formation initiale est égal à la note de stage affectée du coefficient 0.75. Licence MISIGD-2016-2017 IUT Vélizy 5/5