L2 Informatique - gr A HLIN406-25 mars 2015 Nom : Prénom : Numéro d étudiant : Contrôle continu 1 Tous documents sur support papier autorisés. Durée : 1h00. L ensemble des réponses sera à donner sur les feuilles d énoncé. Ne pas dégrapher les feuilles. Les questions sont indépendantes les unes des autres. Question 1. Un laboratoire souhaite mettre en place un système de gestion des pages web du personnel. Un membre du laboratoire peut consulter une page ou manipuler une page. La manipulation d une page est obligatoirement précédée d une authentification. La figure 1 présente un diagramme de cas d utilisation partiel pour ce système. Figure 1 Un diagramme de cas d utilisation partiel
1. La consultation d une page peut inclure une impression de manière optionnelle. La relation établie entre Consulter page et Imprimer vous paraît-elle correcte (justifiez et le cas échéant proposez une correction). 2. Ajoutez sur le schéma (page précédente) les éléments pour modéliser : (a) Manipuler une page peut prendre différentes formes : créer, modifier ou supprimer. (b) Un agent du service informatique peut contrôler une page. (c) Un agent du service informatique est un membre du personnel et peut à ce titre consulter et manipuler une page. Question 2. La figure 2 présente une variante du diagramme de cas d utilisation, pour la partie concernant la manipulation et l authentification. Laquelle des deux versions vous semble la plus adaptée et pourquoi? Réponse à la question 2 : Figure 2 Autre version d une partie du diagramme de cas d utilisation HLIN406 2 25 mars 2015
Question 3. Soit le code Java donné aux listings 1 et 2. package c r e a t i o n I n s t a n c e s ; Listing 1 SiteWeb.java public class SiteWeb { private f i n a l S t r i n g i d e n t i f i a n t ; private int e s p a c e D i s q u e U t i l i s e ; // en GO private s t a t i c int espacedisquemax ; // en GO private CMS cms ; public SiteWeb ( S t r i n g i d e n t i f i a n t, CMS cms ) { this. i d e n t i f i a n t = i d e n t i f i a n t ; this. cms = cms ; package c r e a t i o n I n s t a n c e s ; Listing 2 CMS.java public enum CMS { joomla, drupal, e z p u b l i s h ; a- Complétez le main du listing 3 afin qu il crée une instance de la classe SiteWeb, dans une variable s1, représentant un site web d identifiant Site-marie-durand écrit avec le content management system (CMS) ezpublish. package c r e a t i o n I n s t a n c e s ; Listing 3 MainSiteWeb.java public class MainSiteWeb { public s t a t i c void main ( S t r i n g [ ] a r g s ) { b- Dessinez ci-dessous s1 sous forme de diagramme d instances. Réponse à la question 3.b : HLIN406 3 25 mars 2015
c- Ecrivez une méthode setespacedisqueutilise qui initialise l espace disque utilisé avec un entier strictement positif passé en paramètre. Si l entier est négatif ou nul, un message d erreur est affiché. Réponse à la question 3.c : HLIN406 4 25 mars 2015
Question 4. Soit le diagramme de classes UML présenté à la figure 3 et montrant une classe SiteWeb et une classe MembreLabo, reliées par une association bidirectionnelle. Un développeur propose un début de traduction Figure 3 Association bidirectionnelle entre les classes SiteWeb et MembreLabo Java présenté aux listings 4 et 5. Un membre du laboratoire est créé sans site Web à l origine. Son site personnel peut lui être affecté ultérieurement grâce à la méthode setsitepersonnel. Un site web ne peut être créé sans propriétaire, et ce propriétaire (membre du laboratoire) ne peut ensuite être modifié. Ecrivez le constructeur de la classe SiteWeb qui prend en paramètre un membre du laboratoire qui sera lr propriétaire. Si la valeur null est passée en paramètre au constructeur lors de l appel, un message d erreur est affiché et le propriétaire vaut null. Sinon la liaison entre le site web et le membre du labo est réalisée. package a s s o c B i d i r ; Listing 4 SiteWeb.java import c r e a t i o n I n s t a n c e s.cms; public class SiteWeb { private f i n a l MembreLabo p r o p r i e t a i r e ; public s t a t i c void main ( S t r i n g [ ] a r g s ) { MembreLabo m = new MembreLabo ( marie durand ) ; SiteWeb s1 = new SiteWeb (m) ; package a s s o c B i d i r ; Listing 5 MembreLabo.java public class MembreLabo { private S t r i n g nom ; private SiteWeb s i t e P e r s o n n e l ; public MembreLabo ( S t r i n g nom) { this. nom = nom ; public void s e t S i t e P e r s o n n e l ( SiteWeb s i t e P e r s o n n e l ) { this. s i t e P e r s o n n e l = s i t e P e r s o n n e l ; Réponse à la question 4 : HLIN406 5 25 mars 2015
Question 5. Proposez un diagramme de classes pour modéliser la situation suivante (en complétant celui de la question précédente que vous reporterez ici) : Un laboratoire accueille au moins deux membres (MembreLabo). Un membre ne peut appartenir qu à un laboratoire. Un laboratoire a pour directeur l un de ses membres. Un membre de laboratoire peut être ou non directeur d un (seul) laboratoire. L accueil d un membre dans un laboratoire est décrit par une durée en mois et un statut (parmi : doctorant, ingénieur, chercheur, enseignant-chercheur). Un laboratoire expose des sites web. Un site web est exposé par un et un seul laboratoire. Dans la classe laboratoire, une méthode entre permet d accueillir un membre. Elle prend en paramètre ce membre, la durée de l accueil en mois et le statut. Dans la classe laboratoire, une méthode estmembre prend en paramètre un nom et retourne vrai si un membre portant ce nom existe dans le laboratoire. Dans la classe laboratoire, une méthode listemembres retourne l ensemble des membres. Réponse à la question 5 : HLIN406 6 25 mars 2015
Question 6. On propose le début suivant pour l implémentation de la classe Laboratoire. import java. u t i l. Vector ; public class L a b o r a t o i r e { private Vector<SiteWeb> l i s t e S i t e s W e b ; a- Comment et où pensez-vous créer le vecteur? (répondez par le code correspondant et le lieu où vous le mettriez) b- Ecrivez dans la classe Laboratoire une méthode ajoute qui prend en paramètre un site web et l ajoute au laboratoire, s il n était pas déjà présent. Sinon un message d erreur est affiché. c- La méthode de Laboratoire nommée infodessites (en bas de la page), qui cherche à construire une chaîne contenant les infos des sites du laboratoire contient deux erreurs. Identifiez-les et proposez une correction. public S t r i n g i n f o D e s S i t e s ( ) { S t r i n g r e s u l t a t= ; for ( S t r i n g s : this. l i s t e S i t e s W e b ) r e s u l t a t=s ; return r e s u l t a t ; HLIN406 7 25 mars 2015