Première partie : QCM



Documents pareils
Interfaces graphiques avec l API Swing

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Auto-évaluation Oracle: cours de base

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

Cours Bases de données 2ème année IUT

CREATION WEB DYNAMIQUE

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Bases de données relationnelles

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Développement Logiciel

Java DataBaseConnectivity

Cours 3. Développement d une application BD. DBA - Maîtrise ASR - Université Evry

TP Contraintes - Triggers

CATALOGUE FORMATIONS DOMAINE Bases de données

OpenPaaS Le réseau social d'entreprise

Bases de données et sites WEB Licence d informatique LI345

Application web de gestion de comptes en banques

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

//////////////////////////////////////////////////////////////////// Administration bases de données

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Programmer en JAVA. par Tama

TP1 : Initiation à Java et Eclipse

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

CHAPITRE 1 ARCHITECTURE

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

Université de Bangui. Modélisons en UML

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

Gestion des utilisateurs et de leurs droits

A QUOI SERVENT LES BASES DE DONNÉES?

Information utiles. webpage : Google+ : digiusto/

Les frameworks au coeur des applications web

Bases de données avancées

Présentation. Au programme. Fonctionnement. A l issue de ce module vous devriez...

Notion de base de données

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Introduction à JDBC. Accès aux bases de données en Java

Plan de formation : Certification OCA Oracle 11g. Les administrateurs de base de données (DBA) Oracle gèrent les systèmes informatiques

Génie Logiciel avec Ada. 4 février 2013

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

Bases de données avancées Introduction

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Notes de cours : bases de données distribuées et repliquées

Quelques aspects du Relationnel-Objet du SGBD Oracle

Bases de Données relationnelles et leurs systèmes de Gestion

Cours Bases de données 2ème année IUT

Une introduction à Java

Héritage presque multiple en Java (1/2)

Présentation du module Base de données spatio-temporelles

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Compte-rendu de projet de Système de gestion de base de données

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

Le Langage De Description De Données(LDD)

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Remote Method Invocation (RMI)

Auto-évaluation Programmation en Java

Bases de Données Avancées

Programmation Objet Java Correction

RMI le langage Java XII-1 JMF

4. Groupement d objets

I. MySQL : Serveur et SGBD

Langage SQL : créer et interroger une base

PROJET 1 : BASE DE DONNÉES REPARTIES

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

A QUOI SERVENT LES BASES DE DONNÉES?

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

I4 : Bases de Données

Devoir Data WareHouse

Premiers Pas en Programmation Objet : les Classes et les Objets

Cours Base de données relationnelles. M. Boughanem, IUP STRI

XML par la pratique Bases indispensables, concepts et cas pratiques (3ième édition)

Du 10 Fév. au 14 Mars 2014

Initiation à JAVA et à la programmation objet.

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

INITIATION AU LANGAGE JAVA

Module BD et sites WEB

UML et les Bases de Données

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

TP11 - Administration/Tuning

Cours 1: Java et les objets

SQL Historique

Cours Bases de données 2ème année IUT

Le Langage SQL version Oracle

Transcription:

D41.2 DEVELOPPEMENT CORRIGE JUIN 2010 Première partie : QCM 1. La fonction "simplexml_load_file" permet de : a. parser un document XML dans une structure PHP b. ouvrir et charger un document XML c. charger en mémoire un fichier XML d. ouvrir un fichier xml 2. XPath : a. est un langage non XML pour localiser une portion d'un document XML b. est un langage XML pour localiser une portion d'un document XML c. est une variable contenant le chemin d'un document XML d. est une fonction pour localiser un document XML 3. En PHP-XML, le parseur fait appel à des handlers : a. pour chaque début de balise b. pour chaque fin de balise c. pour chaque début ou fin de balise d. pour chaque balise 4. Un flux RSS : a. est constitué d'un canal et d'un ou plusieurs items, correspondant à des articles b. est constitué juste d'un seul canal c. est constitué d'un seul item, correspondant à un seul article d. est constitué de plusieurs canaux et d'un ou plusieurs items, correspondant à des articles 5. En langage PHP, l'appel du constructeur de la classe mère à partir de la classe dérivée se fait : a. super:: construct() b. super:: construct() c. parent:: construct() d. parent:: construct() 6. Les attributs d'une classe abstraite : a. doivent être private ou protected b. doivent être «null» c. ne peuvent être modifiés que par les méthodes des classes dérivées d. peuvent être "static" ou "public" 7. Laquelle de ces fonctions extraie le channel et appelle RSS_Channel? a. RSS_Retrieve b. RSS_Channel c. RSS_RetrieveLink d. RSS_Tags

8. Le troisième paramètre de RSS_Display(url, nombre, true) permet en option d'afficher ou non : a. le nom du serveur du site b. le titre du site c. la description du site d. le titre et la description du site 9. Utiliser PHP pour afficher un flux RSS : a. est un avantage car celui-ci sera visible par les moteurs de recherche b. est un inconvénient car celui-ci sera visible par les moteurs de recherche c. est un avantage car celui-ci ne sera pas visible par les moteurs de recherche d. est un inconvénient car celui-ci ne sera pas visible par les moteurs de recherche 10. Le processeur XSLT est créé : a. à partir d'une instanciation de la classe XSLTProcessor; b. à partir de la commande XSLTProcessor create c. à partir de la commande XSLT_ create d. à partir de la fonction XSLT() 11. Quel est le résultat de <? $str1 = "Fédération européenne des Ecoles" ; print_r(explode(" ", $str1, 2)?>? a. Array ( [1] =>Fédération] [2] => européenne des Ecoles) b. Array ( [0] => Fédération [1] => européenne des Ecoles) c. Array ([1] =>Fédération] [2] => européenne [3] => des [4] => Ecoles) d. Array ([0] =>Fédération] [1] => européenne [2] => des [3] => Ecoles) 12. En langage PHP, laquelle des assertions suivantes est vraie? a. une classe abstraite est introduite par : abstracted class b. une classe qui a toutes ses méthodes abstraites doit être déclarée comme interface c. il est strictement interdit d'instancier une classe abstraite d. une classe abstraite doit être implémentée 13. L appel système fork() permet de : a. créer un processus par duplication du même fichier b. créer un processus à partir d'une structure générale de processus du noyau c. créer un processus par recopie d'un autre d. créer un processus nouveau 14. Comment sait-on que le parent d'un processus est mort? a. getppid() retourne 0 b. getppid() retourne -1 c. getppid() retourne 1 d. getpid() retourne -1 15. Dans bind(int sock, struct sockaddr * adresse, socklen_t longueur), quelle proposition est vraie? a. longueur est la taille du pointeur b. sockaddr est le descripteur de la socket c. sock est un integer qui identifie la socket d. struct sockaddr est passée par pointeur et ne sert qu'aux sockets TCP 2/20

16. Que fait la fonction accept( )? a. elle accepte un client qui vient d'en faire la demande b. elle accepte un client qui vient de se connecter et crée une socket pour communiquer avec ce client c. elle récupère seulement les informations du client (adresse IP, ) d. elle accepte le message arrivant et le stocke dans la structure passée en argument 17. Pour réaliser une communication non temporaire bidirectionnelle inter processus, il est conseillé d utiliser : a. un tube nommé b. un seul tube anonyme c. deux tubes anonymes indépendants d. deux tubes nommés indépendants 18. La création des descripteurs peut être réalisée par : a. fork() b. fop c. write d. pipe() 19. A quoi sert l'appel bind()? a. il permet d'identifier/reconnaître extérieurement la socket créée précédemment dans le code b. il fait un appel de résolution DNS sur le réseau c. bind() n'intervient pas sur les sockets d. il ouvre la socket à un processus à condition qu'elle est été créée par l'appel socket() 20. L'ordre CREATE SESSION permet de : a. se connecter à une base b. créer une session c. créer une base d. interroger le dictionnaire des données 21. L'ordre ROLLBACK permet de : a. valider une transaction b. insérer des données c. supprimer des données d. annuler une transaction 22. L'option WITH GRANT OPTION permet de : a. transmettre des privilèges reçus b. modifier la taille de la base c. augmenter la taille de la base d. ajouter des privilèges à un utilisateur 23. Un ROLE permet de : a. regrouper des utilisateurs b. regrouper des privilèges c. faire du cinéma d. aucune des trois réponses précédentes 24. Sous un SGBD, si on désire développer avec de la programmation événementielle, on utilisera : a. une vue b. un trigger c. Visual Basic 3/20

d. un index 25. Une validation de transaction est effectuée par : a. un ordre accept b. un ordre rollback c. un ordre commit d. un ordre validate 26. Un index permet d'améliorer les temps de réponse : a. des requêtes simples b. des requêtes avec jointure c. des requêtes de sélection d. des requêtes 27. Quel contrôle de transaction interdit à deux utilisateurs de mettre à jour les données en même temps? a. COMMIT b. ROLLBACK c. SAVEPOINT d. LOCK 28. Comment s appelle la mémoire partagée par les processus Oracle? a. la PGA b. la SGA c. la BUFPOOL d. la MGA 29. Mettez dans l'ordre, suivant la règle contient ou gère : a. Instance - Tablespace - Database - Table - Rows b. Instance - Database - Tablespace - Table - Rows c. Instance - Database - Table - Tablespace - Rows d. Database - Instance - Tablespace - Table Rows 30. Une instance Oracle, c est : a. les processus et les zones mémoires utiles au fonctionnement d une base de données b. l ensemble des fichiers utiles au fonctionnement d une base de données Oracle c. la phase d'installation du logiciel Oracle d. une base de données qui ne veut plus démarrer 31. A propos d un tablespace, indiquez quelle proposition est vraie : a. un tablespace ne peut pas contenir plus d'une table b. un tablespace contient soit des tables, soit des index c. un tablespace peut en même temps contenir des tables et des index d. un tablespace a une taille fixe et ne peut pas être agrandi 32. En tant que simple utilisateur, quelles sont les tables du catalogue que je ne peux pas consulter? a. user_tables b. v$datafile c. all_tables d. cat 4/20

33. Dans la phase de conception d une base de données relationnelle, au niveau conceptuel, on ne doit pas : a. dégager les entités et leur identifiant b. dégager les relations et leur identifiant c. déterminer les cardinalité des relations d. attacher les propriétés aux relations et aux objets 34. La "normalisation" d un modèle de données permet de : a. vérifier que le modèle est normalisé ISO b. vérifier que le modèle respecte les normes de l entreprise c. minimiser la redondance de l information et assurer la cohérence de la base d. s assurer que le modèle sera assez normalisé pour pouvoir être validé par les utilisateurs 35. Pour n afficher que les villes dont le résultat du count(*) est supérieur à 10.000 dans l instruction suivante en SQL SELECT ville, count(*) FROM table_ville GROUP BY ville, on doit ajouter : a. la clause where count(id_ville)>10000 b. la clause HAVING count(*)>10.000 après de GROUP BY c. la clause WHERE count(*)>10.000 après le GROUP BY d. la clause count(*)>10.000 après le WHERE 36. Lors de l'utilisation des servlets JSP : a. il peut y avoir plusieurs directives page dans une JSP b. il ne peut y avoir qu une seule directive page dans une JSP c. il ne peut pas y avoir de directive page dans une JSP d. la directive page n existe pas en JSP 37. Combien d instances de la classe A crée le code suivant? A x, u, v; x=new A(); A y=x; A z=new A(); a. une b. deux c. trois d. aucune 38. En Java, quelle assertion est vraie? a. une classe peut implémenter plusieurs interfaces, mais doit étendre une seule classe b. une classe peut implémenter plusieurs classes, mais doit étendre une seule interface c. une classe peut implémenter plusieurs classes et peut étendre plusieurs interfaces d. une classe doit implémenter une seule interface et étendre une seule classe 39. La liaison tardive est essentielle pour assurer : a. l encapsulation b. le polymorphisme c. l héritage d. la marginalisation 40. UML est : a. un langage Objet b. un langage orienté Objet c. un langage de modélisation orientée Objet d. une méthode pour la programmation orientée Objet 5/20

41. OCL est : a. un langage Objet b. un langage orienté Objet c. un langage de contrainte. d. une méthode pour la programmation orientée Objet 42. RUP est : a. un langage Objet b. un langage orienté Objet c. un langage de contrainte. d. une méthode pour la programmation orientée Objet 43. En utilisant UML, quelle sont les possibilités pour des paramètres d opération? a. in b. out c. in, out d. in, out, in/out 44. Un attribut statique est : a. un attribut qui n est pas hérité par les classes filles b. un attribut constant c. un attribut normal d. un attribut passé par référence 45. Une interface est : a. une classe abstraite b. une classe abstraite qui interagit avec l utilisateur c. une classe dont toutes les méthodes sont abstraites d. une classe imaginaire 46. Une agrégation est : a. un ensemble d attributs b. une composition faible c. une composition forte d. un ensemble de classes 47. Le symbole «~» représente (UML) a. un élément non visible b. un élément visible par tous c. un élément visible seulement par les sous-classes d. un élément visible seulement par les classes du même paquetage 48. MDA signifie : a. que l architecture est guidée par les modèles b. que l architecture est guidée par le code c. que l architecture est décomposée en blocs d. que l architecture est décomposée en paquetages 6/20

49. En UML, quelle cardinalité n existe pas? a. 0..1 b. 1 c. N..1 d. M..N 50. Une relation "extends" pour les «use case» signifie : a. peut être complété par b. doit être complété par c. n est pas complété par d. est complété par 7/20

Deuxième partie : Exercices Dossier 1 - UML 2 Modélisation d un suivi de commande et de fret de marchandises Question 1 Réalisez le diagramme de classe. 1 point par classe 3 points pour les multiplicités 8/20

Dossier 1 - UML 2 Modélisation d un logiciel Question 2 Proposez un diagramme de cas d utilisation correspondant aux besoins décrits ci-dessus. Question 3 Proposez un diagramme de séquence correspondant à l ajout d une fiche produit. 9/20

Dossier 2 - ORACLE et PL/SQL Question 1 Réalisez une fonction en langage pl/sql nommée Qtable(PC$Table, PC$ClauseWhere ) - dynamique et totalement générique qui permet d interroger n importe quelle table (paramètre PC$Table), - avec une clause where passée elle aussi en paramètre (PC$ClauseWhere), - qui renvoie un integer LN$Total donnant le nombre d occurrences correspondantes a cette clause. Donnez un exemple d utilisation. FUNCTION Qtable ( PC$Table IN VARCHAR2, PC$ClauseWhere IN VARCHAR2 ) RETURN PLS_INTEGER IS LC$Requete VARCHAR2(512) ; LN$Total PLS_INTEGER ; BEGIN LC$Requete := Select count(*) From PC$Table where PC$ClauseWhere ; EXECUTE IMMEDIATE LC$Requete INTO LN$Total ; return LN$Total ; END ; NombreDept := Qtable( Departement, deptno between 1 and 13 ) ; 10/20

Question 2 Soit la Procédure NDS ci-dessous, réécrivez-la en utilisant le package DBMS_SQL CREATE PROCEDURE insert_into_table ( table_name VARCHAR2, deptnumber NUMBER, deptname VARCHAR2, location VARCHAR2) IS stmt_str VARCHAR2(200); BEGIN stmt_str := 'INSERT INTO ' table_name ' values (:deptno, :dname, :loc)'; EXECUTE IMMEDIATE stmt_str USING deptnumber, deptname, location; END;) CREATE PROCEDURE insert_into_table ( table_name VARCHAR2, deptnumber NUMBER, deptname VARCHAR2, location VARCHAR2) IS cur_hdl INTEGER; stmt_str VARCHAR2(200); rows_processed BINARY_INTEGER; BEGIN stmt_str := 'INSERT INTO ' table_name ' VALUES (:deptno, :dname, :loc)'; -- open cursor cur_hdl := dbms_sql.open_cursor; -- parse cursor dbms_sql.parse(cur_hdl, stmt_str, dbms_sql.native); -- supply binds dbms_sql.bind_variable (cur_hdl, ':deptno', deptnumber); dbms_sql.bind_variable (cur_hdl, ':dname', deptname); dbms_sql.bind_variable (cur_hdl, ':loc', location); -- execute cursor rows_processed := dbms_sql.execute(cur_hdl); -- close cursor dbms_sql.close_cursor(cur_hdl); 11/20

END; Question 3 Donnez les avantages et inconvénients du NDS par rapport au package DBMS_SQL. NDS : - Plus grande rapidité d exécution. En moyenne, le SQL dynamique natif s exécute de 1.5 à 3 fois plus rapidement. - Support des types définis, le SQL dynamique natif supporte tous les types définis par l utilisateur, Objets, collections, etc - Support des types RECORD pour les ordres Select. - Le SQL dynamique natif permet d utiliser un objet de type RECORD dans une clause INTO. Package DBMS_SQL : - Supporté par le client, les fonctions du package DBMS_SQL sont supportées par les applications clientes à l inverse du SQL dynamique natif. - Supporte la procédure DESCRIBE_COLUMNS qui permet de connaitre les informations relatives aux colonnes d un curseur ouvert au travers de DBMS_SQL. - Support de la clause RETURNING pour les opérations UPDATE et DELETE. - D BMS_SQL supporte la clause RETURNING pour des opérations UPDATE ou DELETE effectuées sur plusieurs lignes. Le SQL dynamique natif ne supporte une clause RETURNING que sur les opérations ne retournant qu une seule ligne Question 4 Définissez «OFA», son objectif et ses avantages. Oracle Optimal Flexible Architecture, que l'on pourrait traduire par meilleure architecture évolutive, est un ensemble de convention de nommage et de répartition de fichiers sur les différents disques dur du serveur. On peut aussi définir OFA comme un ensemble de bonnes habitudes à prendre pour la création d'une base. Bien qu'ofa ne soit pas indispensable à la création d'une base, Oracle recommande son utilisation si vous prévoyez une augmentation du nombre d'utilisateurs ou encore si vous souhaitez mettre en place d'autres bases de données dans votre environnement. Son objectif est de prévenir tout un ensemble de problèmes qui pourraient survenir si vous utilisiez plusieurs versions d'oracle, plusieurs bases de données, ou des bases de données à fort taux d'utilisation. La norme OFA a été réalisée afin d'offrir des avantages non négligeables, notamment dans les cas suivants : - Facilité de maintenance des bases de données à travers une organisation de fichiers standardisée. - Fiabilité grâce à des données réparties sur plusieurs disques. - Performance accrue par des réductions de conflits d'entrée/sortie sur les disques. - Oracle Universal Installer sépare les fichiers exécutables des fichiers de base de données. Cette opération prend tout son sens lorsque vous souhaitez mettre à jour votre version d'oracle Ses avantages sont : - indépendance des sous-répertoires, - les opérations sur un fichier d'une certaine catégorie ne sont pas répercutées sur un fichier d'une autre catégorie, - convention de nommage pour les fichiers de données, on peut ainsi identifier les fichiers plus facilement, - séparation des différents types de tablespace pour obtenir les avantages d'i/o, mais aussi réduire la fragmentation. 12/20

Question 5 Vous disposez d un serveur de base de données avec 4 disques durs, représentez, sur un schéma, l architecture logicielle recommandée pour respecter les points définis ci-dessus (question 4). Question 6 Le schéma ci-dessous représente un architecture web 3 tiers utilisant ORACLE comme base de données, indiquez sur ce schéma les vulnérabilités d un tel système. 13/20

Dossier 3 - JAVA et IHM Question 1 L architecture des tâches est donnée en figure 1 où le détail des classes TacheElementaire et TacheComplexe n est pas donné. Une tâche est caractérisée par un nom et un coût. Une tâche est soit une tâche élémentaire, soit une tâche complexe qui est alors composée de sous-tâches. Il est ainsi possible d ajouter une sous-tâche à une tâche complexe, ajouter(tache) ou de supprimer une sous-tâche, supprimer(tache). Le coût d une tâche complexe est la somme des coûts des tâches qui la composent. Indiquez le ou les patrons de conception utilisés dans cette architecture. 7.5 points La tâche complexe est le composite, Tache est le composant et TacheElementaire est la feuille. Notons que les objets ajouter et supprimer ne sont ici que sur le composite et pas sur le composant. Le listing 1 donne le code de l interface Tache. Écrivez en Java la classe Tache Elementaire qui est une réalisation de l interface Tache : 7.5 points Tache { String getnom(); int getcout(); Réponse : public class TacheElementaire implements Tache { private String nom; private int cout; public TacheElementaire(String nom, int cout) { this.nom = nom; this.cout = cout; public String getnom() { return this.nom; public int getcout() { return this.cout; 14/20

Question 2 Nous nous intéressons maintenant à la classe TacheComplexe, en particulier à sa relation avec l interface Tache. Une tâche complexe est composée d un nombre quelconque de tâches. On décide d utiliser l interface java.util.collection pour stocker les sous-tâches. On l utilisera bien entendu, dans sa version générique. Comme on souhaite pouvoir parcourir toutes les sous-tâches d une tâche complexe, la Classe TacheComplexe réalise l interface java.lang.iterable. Indiquez quel est le principal intérêt de la généricité. 6 points Le contrôle de type réalisé par le compilateur. Indiquez quel est le coût de la tâche ta construite comme indiqué dans le listing suivant : 6 points public class TestTache1 { Le coût de la tâche ta est de 30. public static void main(string[] args) { TacheComplexe ta = new TacheComplexe("A"); ta.ajouter(new TacheElementaire("A1", 10)); ta.ajouter(new TacheElementaire("A2", 20)); System.out.println("Cout de ta = " + ta.getcout()); 15/20

Écrivez en Java la classe TacheComplexe. 6 points Interface graphique pour définir une tâche complexe Nous définissons maintenant une interface graphique en Swing minimale qui permet d ajouter de nouvelles soustâches à une tâche complexe. Le code partiel de cette classe est donné au listing 3. import java.util.collection; import java.util.arraylist; import java.util.iterator; public class TacheComplexe implements Tache, Iterable<Tache> { private Collection<Tache> soustaches; private String nom; public TacheComplexe(String nom) { this.nom = nom; this.soustaches = new ArrayList<Tache>(); public void ajouter(tache tache) { this.soustaches.add(tache); public void supprimer(tache tache) { this.soustaches.remove(tache); public String getnom() { return this.nom; public int getcout() { int result = 0; for (Tache t : soustaches) { result += t.getcout(); return result; public Iterator<Tache> iterator() { 16/20

return this.soustaches.iterator(); Dessinez la fenêtre (et les composants graphiques qu elle contient) telle qu elle est affichée quand cette classe est exécutée. 6 points Complétez cette classe pour que les boutons Ajouter et Quitter deviennent actifs. Le bouton Quitter ferme la fenêtre. Le bouton Ajouter ajoute une nouvelle sous-tâche à la tâche complexe passée en paramètre du constructeur de cette classe. Le nom et le coût de cette sous tâche sont, bien entendu, saisis par l utilisateur dans les zones de saisie prévues, valeurnom et valeurcout. Dans le cas où l utilisateur saisit une information qui n est pas un entier pour saisir le coût, on signalera l erreur en mettant la couleur de fond de la zone de saisie correspondante en rouge (setbackground(color.red)). On rappelle que la méthode Integer.parseInt(String) renvoie l entier correspondant à la chaîne de caractère passé en paramètre. Cette méthode lève l exception NumberFormatException si la chaîne ne correspond pas à un entier. 10 points Listing 3 La classe TacheComplexeSwing import javax.swing.*; import java.awt.*; import java.awt.event.*; public class TacheComplexeSwing { private TacheComplexe tache; final JFrame fenetre = new JFrame("Nouvelle tâche"); final private JTextField valeurnom = new JTextField(10); final private JTextField valeurcout = new JTextField(10); final private JButton boutonajouter = new JButton("Ajouter"); final private JButton boutonquitter = new JButton("Quitter"); public TacheComplexeSwing(TacheComplexe tache) { this.tache = tache; Container c = fenetre.getcontentpane(); c.setlayout(new BorderLayout()); 17/20

JPanel informations = new JPanel(new GridLayout(2,2)); informations.add(new JLabel("Nom : ", SwingConstants.RIGHT)); informations.add(valeurnom); informations.add(new JLabel("Coût : ", SwingConstants.RIGHT)); informations.add(valeurcout); c.add(informations, BorderLayout.CENTER); JPanel boutons = new JPanel(new FlowLayout()); boutons.add(boutonajouter); boutons.add(boutonquitter); c.add(boutons, BorderLayout.SOUTH); boutonquitter.addactionlistener(new ActionQuitter()); boutonajouter.addactionlistener(new ActionAjouter()); fenetre.pack(); fenetre.setvisible(true); private class ActionAjouter implements ActionListener { public void actionperformed(actionevent ev) { try { String nom = valeurnom.gettext(); int cout = Integer.parseInt(valeurCout.getText()); tache.ajouter(new TacheElementaire(nom, cout)); System.out.println("cout total = " + tache.getcout()); catch (NumberFormatException e) { valeurcout.setbackground(color.red); private class ActionQuitter implements ActionListener { public void actionperformed(actionevent ev) { System.out.println("Appui sur Quitter..."); fenetre.dispose(); public static void main(string[] args) { new TacheComplexeSwing(new TacheComplexe("Test TacheComplexeSwing")); 18/20

Sauvegarde d une tâche en XML Soit la DTD pour représenter une tâche : 1 <?xml version="1.0" encoding="utf-8"?> 2 3 <!ELEMENT taches (tache*)> 4 <!ELEMENT tache (attribut*, tache*)> 5 <!ELEMENT attribut EMPTY> 6 <!ATTLIST attribut 7 nom CDATA #REQUIRED 8 valeur CDATA #REQUIRED> Donnez le contenu du fichier XML qui correspond à la tâche ta. 6 points <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE taches SYSTEM "taches.dtd"> <taches> <tache> <attribut nom="nom" valeur="a" /> <attribut nom="cout" valeur="30" /> <tache> <attribut nom="nom" valeur="a1" /> <attribut nom="cout" valeur="10" /> </tache> <tache> <attribut nom="nom" valeur="a2" /> <attribut nom="cout" valeur="20" /> </tache> </tache> </taches> 19/20

Grille de notation Exercices NOM Prénom N Dossier 1 - UML 2 30 points Question 1 /10 Question 2 /10 Question 3 /10 Dossier 2 - ORACLE et PL/SQL 55 points Question 1 /6 Question 2 /12 Question 3 /7 Question 4 /12 Question 5 /6 Question 6 /12 Dossier 3 - JAVA et IHM 55 points Question 1 /15 Question 2 /40 Orthographe et présenation /10 TOTAL /150 Appréciation générale : 20/20