EFF - CRJJ - Théorique - 2014 - 2015
Examen de fin de formation : Théorique
2014/2015
Durée : 5h
Documents, téléphone et calculette non autorisés – Il vous est demandé d’utiliser le formalisme vu en cours – Par souci d’équité entre les étudiants, il ne sera répondu à aucune question sur le fond du sujet ; en cas d’ambiguïté dans le sujet, veuillez préciser vos hypothèses sur la copie.
Question de cours : (20 Pts)
- Quelle est la différence entre HashSet, TreeSet et LinkedHashSet ? (1 Pt)
- Quelle est la différence entre les deux déclarations suivantes : (1 Pt)
- Set <String> set= new TreeSet<String> (); - TreeSet <String> set= new TreeSet <String> ();
- Citer deux différences entre une collection de type List et une collection de type Set. (1 Pt)
- Citer cinq différences entre une classe abstraite et une interface. (1 Pt)
- Comment trier une List (ArrayList, Vector) ? Donner un exemple pour le cas d’une liste de String. (1 Pt)
- Quel est le rôle du mot clé final appliqué sur : (1 Pt)
- Une variable,
- Une méthode,
- Une classe,
- Écrire deux méthodes permettant d’afficher les éléments de la liste suivante : (1 Pt)
TreeSet <String> l = new TreeSet <String> (); l.add ("ali"); l.add ("zineb"); l.add ("kamal"); l.add ("zineb"); l.add ("zineb");
Donner le résultat d’affichage?
- Que sera le résultat de l’exécution du programme suivant? Justifier votre réponse. (1 Pt)
class A { public int a; } public class Test { public static void main(String[] args) { A [] objA = new A[10]; objA [0].a = 2; System.out.println(objA[0].a) ; } }
- Soit le code suivant: (1 Pt)
ArrayList<Character> liste = new ArrayList(); liste.add('A'); liste.add('D'); liste.add('F'); liste.add('M'); liste.add('A'); liste.add('B'); liste.add('D');
Quelle valeur renvoie l'appel
liste.indexOf('A')
?
- -1
- 1
- 0
- 4
- Choisir les assertions correctes parmi les suivantes : (1 Pt)
- Une interface doit contenir au moins un constructeur
- Les variables déclarées dans une interface ne peuvent être modifiées dans les classes qui implémentent cette interface
- Une classe peut implémenter plusieurs interfaces
- Une interface peut étendre d’une classe
- Expliquer le rôle de chacune des technologies ci-dessous : (2,5 pts)
- JavaServer Pages Standard Tag Library (JSTL),
- Enterprise JavaBeans (EJB),
- Hibernate,
- Java Server Faces (JSF),
- Expliquer la différence entre un EJB Session sans état et avec état. (1 pt)
- Expliquer la différence de comportement entre LAZY et EAGER dans Hibernate. Donner un exemple d’utilisation. (1 pt)
- Quelle est la différence entre les patterns MVC1 et MVC2 ? (1 pt)
- Proposer une architecture pour mettre en place une application JEE ? pour chacune des couches mentionner les Framework utilisés. (2 pts)
- Citer cinq propriétés déclarées dans le fichier hibernate.cfg.xml et expliquer le rôle de chacune. (1,5 pt)
- Quelle est la différence entre le mode synchrone et le mode asynchrone dans AJAX ? (1 pt)
Exercice 1 : (10 pts)
On souhaite développer une application de gestion d’une bibliothèque. Les travaux de l’équipe chargée de l’analyse et de la conception ont abouti au diagramme de classe suivant :
- Implémenter les classes Document, Livre et Roman. Ces documents doivent être automatiquement numérotés en commençant par le numéro 1. (1,5 Pt)
- Implémenter pour les ces différentes classes la méthode toString() produisant une description sous forme de chaîne de caractères des objets. (0,5 Pt)
- La classe Bibliothèque: Une bibliothèque sera représentée par une collection (documents) de documents (Livres et Romans).
- Définissez la classe Bibliotheque, avec une telle collection en plus de son nom et de sa capacité (le nombre maximum de documents qu’elle peut contenir). (1 Pt)
- Implémenter la méthode findDocuments () permettant d’affiche tous les ouvrages de la bibliothèque. (1 Pt)
- Implémenter la méthode findDocumentByTitre (String titre) permettant d’affiche les informations de l’ouvrage dont le titre est passé en paramètre. (1 Pt)
- Implémenter la méthode addDocument (Document doc) permettant d’ajouter le document indiqué en paramètre à la collection de documents, au cas où il n’y a plus de place pour le document (si on dépasse la capacité de la bibliothèque), cette méthode doit lever une exception PlusDePlaceException. Vous devez créer la classe d’exception personnalisée PlusDePlaceException. (3 Pts)
- Dans une classe de teste: (2 Pts)
Créer Deux livres,
Créer Deux romans,
Créer Une bibliothèque,
Ajouter les quatre documents à la bibliothèque,
Afficher la liste des documents de la bibliothèque,
Exercice 2 : UML (10 pts)
Nous nous intéressons à un système simplifié de caisse enregistreuse de supermarché. Le déroulement normal d’utilisation de cette caisse est la suivante :
- Un client arrive à la caisse avec des articles à payer.
- Le caissier enregistre le numéro d’identification de chaque article (code-barres), ainsi que la quantité si elle est supérieure à un.
- La caisse affiche le prix de chaque article et son libelle.
- Après la saisie des articles, le client peut présenter au caissier des coupons de réduction pour certains articles.
- Lorsque tous les achats sont enregistrés, le caissier signale la fin de la vente.
- La caisse affiche le total des achats.
- Le client choisit son mode de paiement :
- Liquide : le caissier encaisse l’argent reçu indique la monnaie à rendre au client ;
- Chèque : le caissier vérifier la solvabilité de client en transmettant une requête à un centre d’autorisation via la caisse, si le client est solvable ,le chèque est rempli par la caisse et le client signe ce dernier. Sinon(le client n’est pas solvable) le client rentre chez lui sans ses courses.
- Carte de crédit : un terminal bancaire fait partie de la caisse. Il transmet une demande d’autorisation au centre d’autorisation en fonction du type de la carte .si la transition est autorisée, le paiement est fait.
- La caisse enregistre la vente(en transmettant le numéro d’article vendus au système de gestion des stocks) est imprime un ticket .Dans le cas d’un paiement par carte de crédit, la caisse imprime également un reçu de paiement par carte (juste après le ticket de caisse).
Tous les matins, le responsable du magasin initialise la caisse pour la journée.
- Elaborer un diagramme de cas d’utilisation détaillée de la caisse d’enregistreuse. (2 pts)
- Réaliser un diagramme de séquence système qui décrit le scénario normal de cas d’utilisation qui modélise le passage en caisse en ne considère que le paiement en liquide. (2 pts)
- Elaborer un diagramme d’activité qui décrit le système étudié. (2 pts)
- Elaborer un diagramme de classe. (2 pts)
- Elaborer un diagramme de déploiement pour mettre en place une solution JEE avec les EJB. (2 pts)
Exercice 3 : (10 pts)
On veut réaliser un serveur RMI qui offre les quatre services suivants :
- Trie d’une liste des personnes par nom,
- Calcule le produit de deux nombres,
- Inverse d’une chaine de caractère,
- Tester si une chaine de caractère est un palindrome.
- Créer l’interface nécessaire pour publier les quatre services. (2 pts)
- Créer une classe qui implémente l’interface développé dans la question 1. (2 pts)
- Créer une classe Server qui publie les quatre objets distribués. (3 pts)
- Créer un client qui consomme les quatre services. (3 pts)
Exercice 4 : (10 pts)
On souhaite créer une application web JEE permettant de trier une liste des noms saisis au niveau d’une page JSF. Les figures ci-dessous illustrent le résultat obtenu.
- Écrire un composant EJB session sans état permettant de trier une liste de chaines de caractère. (4 pts)
- Écrire une page JSF qui contient le formulaire présenté dans la « Figure 1 » et qu’utilise un managedBean session pour effectuer le remplissage et le tri de la liste. (5 pts)
- Ajouter un filtre permettant de filtrer la liste des noms. La liste sera filtrée à chaque saisi d’une nouvelle lettre.
- Écrire le code JSF permettant d’ajouter le filtre. (1 pt)