D412INF10S

15
FEDERATION EUROPEENNE DES ECOLES EUROPEAN FEDERATION OF SCHOOLS EUROPÄISCHER SCHULVERBAND FEDERAZIONE EUROPEA DELLE SCUOLE FEDERACION EUROPEA DE CENTROS DOCENTES Organisation Non Gouvernementale dotée du statut participatif auprès du Conseil de l’Europe NGO enjoying participatory status with the Council of Europe © Fédération Européenne Des Ecoles – European Federation of Schools – Juin 2010 UC D41.2 MASTER Européen d’Informatique – Sujet TECHNIQUES PROFESSIONNELLES D41.2 – DEVELOPPEMENT Type d’épreuve : QCM + Exercices Durée : 3 heures Session : Juin 2010

Transcript of D412INF10S

Page 1: D412INF10S

FEDERATION EUROPEENNE DES ECOLES EUROPEAN FEDERATION OF SCHOOLS EUROPÄISCHER SCHULVERBAND FEDERAZIONE EUROPEA DELLE SCUOLE FEDERACION EUROPEA DE CENTROS DOCENTES Organisation Non Gouvernementale dotée du statut participatif auprès du Conseil de l’Europe NGO enjoying participatory status with the Council of Europe

© Fédération Européenne Des Ecoles – European Federation of Schools – Juin 2010 UC D41.2 MASTER Européen d’Informatique – Sujet

TECHNIQUES PROFESSIONNELLES

D41.2 – DEVELOPPEMENT

Type d’épreuve : QCM + Exercices

Durée : 3 heures

Session : Juin 2010

Page 2: D412INF10S

© Fédération Européenne Des Ecoles – European Federation of Schools – Juin 2010 UC D41.2 MASTER Européen d’Informatique – Sujet

2/15

D41.2 – DEVELOPPEMENT

BAREME DE NOTATION POUR LE QCM

Bonne réponse

3 points

Absence de réponse

0 point

Réponse erronée

- 1 point

BAREME DE NOTATION POUR LES EXERCICES

Dossier 1 - UML 2 30 points Dossier 2 - ORACLE et PL/SQL 55 points Dossier 3 - JAVA et IHM 55 points Orthographe et présentation 10 points Total 150 points

Page 3: D412INF10S

© Fédération Européenne Des Ecoles – European Federation of Schools – Juin 2010 UC D41.2 MASTER Européen d’Informatique – Sujet

3/15

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

Page 4: D412INF10S

© Fédération Européenne Des Ecoles – European Federation of Schools – Juin 2010 UC D41.2 MASTER Européen d’Informatique – Sujet

4/15

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

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

Page 5: D412INF10S

© Fédération Européenne Des Ecoles – European Federation of Schools – Juin 2010 UC D41.2 MASTER Européen d’Informatique – Sujet

5/15

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 d. un index

Page 6: D412INF10S

© Fédération Européenne Des Ecoles – European Federation of Schools – Juin 2010 UC D41.2 MASTER Européen d’Informatique – Sujet

6/15

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

Page 7: D412INF10S

© Fédération Européenne Des Ecoles – European Federation of Schools – Juin 2010 UC D41.2 MASTER Européen d’Informatique – Sujet

7/15

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

Page 8: D412INF10S

© Fédération Européenne Des Ecoles – European Federation of Schools – Juin 2010 UC D41.2 MASTER Européen d’Informatique – Sujet

8/15

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 toute 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

Page 9: D412INF10S

© Fédération Européenne Des Ecoles – European Federation of Schools – Juin 2010 UC D41.2 MASTER Européen d’Informatique – Sujet

9/15

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

Page 10: D412INF10S

© Fédération Européenne Des Ecoles – European Federation of Schools – Juin 2010 UC D41.2 MASTER Européen d’Informatique – Sujet

10/15

Deuxième partie : Exercices

Dossier 1 - UML 2 Modélisation d’un suivi de commande et de fret de marchandises Une société souhaite réaliser un système d’information de suivi de commande ainsi que de fret de marchandises. En ce qui concerne le suivi de commande, chaque commande émise par un client est effectuée à une société de transport. Pour le fret, chaque société de transport assure le bon acheminement de la commande en utilisant tous les types de transports dont elle dispose (par exemple : camion, bateau, …), ainsi qu’en mobilisant le personnel conducteur adéquat. Un client est identifié par son nom, son prénom, son adresse, son numéro de téléphone fixe ainsi que son numéro de portable si celui-ci est communiqué. Chaque client est identifié de manière unique par son nom et son adresse. Les clients peuvent passer une ou plusieurs commandes à une société de transport. Une commande est définie par un numéro de commande, son prix, sa ville de départ et d’arrivée. Chaque numéro de commande est attribué par la société de transport. Deux sociétés de transport différentes peuvent donc attribuer un même numéro de commande. Une commande est transportée en une seule fois par un seul engin de transport. Une société de transport est identifiée par son nom ainsi que son type d’activité qui peut-être routier, maritime ou mixte. Enfin, chaque société de transport est identifiée de manière unique par son numéro de Siret. Par exemple, la société de transport Mazet est une société de transport routier ayant comme numéro de siret 321 654 987. Bien évidemment une société de transport routier ne dispose que de camions et une société de transport maritime ne dispose que de bateaux. Un camion n’est associé qu’à une seule société de transport et peut transporter plusieurs commandes mais, il n’est jamais vide. Celui-ci est identifié par son numéro de plaque d’immatriculation (On fera l’hypothèse simplificatrice que les plaques ont 3 chiffres, 3 lettres et 2 chiffres pour le département. Par exemple, 123 MIR38), sa catégorie de dangerosité de 0 à 5 selon qu’il s’agit d’un camion permettant de charger des matières dangereuses ou non et enfin sa date de dernier contrôle technique (pour les véhicules neufs, il faut attendre quelques mois avant le premier contrôle). Chaque camion n’est conduit que par un ou deux personnels conducteurs. Chaque société de transport dispose d’un ensemble de personnel conducteur. Un personnel conducteur est identifié par son nom, son prénom, son adresse, les différents types de permis qu’il possède (par exemple, permis poids lourd, permis véhicule léger, permis bateau, …), ainsi que les différents types d’amende qu’il a pu avoir (par exemple, excès de vitesse, surcharge. . . ). Chaque personnel conducteur n’est associé qu’à une seule société de transport et qu’un seul type de transport (camion ou bateau). Les bateaux ont chacun un identifiant qui est le nom du bateau. Cet identifiant est une chaîne de caractères alphanumériques de longueur au plus 20 (par exemple, Queen Mary 2). Chaque bateau comporte également une catégorie de dangerosité de 0 à 5, une date de dernier contrôle technique ainsi qu’une capacité maximale de tonnages n’excédant pas 500 tonnes. Un bateau ne nécessite qu’un seul personnel conducteur et n’est associé qu’à une seule société de transport. Une marchandise correspond toujours à une et une seule commande. Chaque marchandise possède un numéro l’identifiant de manière unique celui-ci étant composé de trois parties séparées par un "-" : deux lettres identifiant le pays d’origine, quatre chiffres pour l’année de mise en circulation et 10 chiffres d’identification. Par exemple, la marchandise numéro FR-2005-0123456789 est en provenance de France, mise en circulation en 2005 et dont le numéro d’identification est le 0123456789. Une marchandise est aussi identifiée par le type de son contenu (par exemple liquide, solide, gazeux ou vivant) ainsi que son poids n’excédant pas 1000 kilogrammes. Une commande est composée d’au moins une marchandise. Pour chaque marchandise connue, on note également le transport qui lui est associé. Remarque : Pour les associations ou relations entre classes, seules les multiplicités sont demandées Question 1 Réalisez le diagramme de classe.

Page 11: D412INF10S

© Fédération Européenne Des Ecoles – European Federation of Schools – Juin 2010 UC D41.2 MASTER Européen d’Informatique – Sujet

11/15

Modélisation d’un logiciel En vue de la mise en en place d’un logiciel dédié à l’industrie textile, nous étudions tout d’abord quelques fonctionnalités requises, ce logiciel s’adresse à différentes catégories d’utilisateurs et doit servir principalement a recueillir l’information sur les produits développés dans l’entreprise Tous les personnels de l’entreprise peuvent consulter le système. Toute consultation doit être précédée d’une authentification légère dans laquelle la personne précise son nom et son service à des fins de statistiques ultérieures Les ingénieurs peuvent effectuer différentes opérations de gestion relatives aux produits dont ils sont responsables : ajout, retrait, modification. Ces opérations doivent être précédées d’une authentification plus approfondie lors de laquelle l’ingénieur précise son nom, son service et donne un mot de passe qui est vérifié en contactant le système de gestion des personnels. Toutes les opérations (consultation et gestion) donnent lieu à un enregistrement dans le journal des accès (trace de la session) 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.

Page 12: D412INF10S

© Fédération Européenne Des Ecoles – European Federation of Schools – Juin 2010 UC D41.2 MASTER Européen d’Informatique – Sujet

12/15

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.

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;)

Question 3 Donnez les avantages et inconvénients du NDS par rapport au package DBMS_SQL. Question 4 Définissez « OFA », son objectif et ses avantages. 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).

Page 13: D412INF10S

© Fédération Européenne Des Ecoles – European Federation of Schools – Juin 2010 UC D41.2 MASTER Européen d’Informatique – Sujet

13/15

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.

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.

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 :

Tache { String getNom(); int getCout();

}

Page 14: D412INF10S

© Fédération Européenne Des Ecoles – European Federation of Schools – Juin 2010 UC D41.2 MASTER Européen d’Informatique – Sujet

14/15

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é.

Indiquez quel est le coût de la tâche tA construite comme indiqué dans le listing suivant :

public class TestTache1 { 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()); }}

Écrivez en Java la classe TacheComplexe.

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 sous-tâches à une tâche complexe. Le code partiel de cette classe est donné au listing 3. Dessinez la fenêtre (et les composants graphiques qu’elle contient) telle qu’elle est affichée quand cette classe est exécutée.

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.

Listing 3 – La classe TacheComplexeSwing import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class TacheComplexeSwing {

private TacheComplexe tache;

Page 15: D412INF10S

© Fédération Européenne Des Ecoles – European Federation of Schools – Juin 2010 UC D41.2 MASTER Européen d’Informatique – Sujet

15/15

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());

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);

fenetre.pack();

fenetre.setVisible(true);}}

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.