Première partie : QCM

Transcription

Première partie : QCM
D41.2 – DEVELOPPEMENT
CORRIGE – JUIN 2010
Première partie : QCM
1. La fonction "simplexml_load_file" permet de :
a.
b.
c.
d.
parser un document XML dans une structure PHP
ouvrir et charger un document XML
charger en mémoire un fichier XML
ouvrir un fichier xml
2. XPath :
a.
b.
c.
d.
3.
est un langage non XML pour localiser une portion d'un document XML
est un langage XML pour localiser une portion d'un document XML
est une variable contenant le chemin d'un document XML
est une fonction pour localiser un document XML
En PHP-XML, le parseur fait appel à des handlers :
a.
b.
c.
d.
pour chaque début de balise
pour chaque fin de balise
pour chaque début ou fin de balise
pour chaque balise
4. Un flux RSS :
a.
b.
c.
d.
5.
est constitué d'un canal et d'un ou plusieurs items, correspondant à des articles
est constitué juste d'un seul canal
est constitué d'un seul item, correspondant à un seul article
est constitué de plusieurs canaux et d'un ou plusieurs items, correspondant à des articles
En langage PHP, l'appel du constructeur de la classe mère à partir de la classe dérivée se fait :
a.
b.
c.
d.
super:: construct()
super::__construct()
parent:: construct()
parent::__construct()
6. Les attributs d'une classe abstraite :
a.
b.
c.
d.
doivent être private ou protected
doivent être « null »
ne peuvent être modifiés que par les méthodes des classes dérivées
peuvent être "static" ou "public"
7. Laquelle de ces fonctions extraie le channel et appelle RSS_Channel ?
a.
b.
c.
d.
RSS_Retrieve
RSS_Channel
RSS_RetrieveLink
RSS_Tags
© Fédération Européenne Des Ecoles – European Federation of Schools – Juin 2010
QCM UC D41.2 MASTER Européen d’Informatique – Corrigé
8. Le troisième paramètre de RSS_Display(url, nombre, true) permet en option d'afficher ou
non :
a.
b.
c.
d.
le nom du serveur du site
le titre du site
la description du site
le titre et la description du site
9. Utiliser PHP pour afficher un flux RSS :
a.
b.
c.
d.
est un avantage car celui-ci sera visible par les moteurs de recherche
est un inconvénient car celui-ci sera visible par les moteurs de recherche
est un avantage car celui-ci ne sera pas visible par les moteurs de recherche
est un inconvénient car celui-ci ne sera pas visible par les moteurs de recherche
10. Le processeur XSLT est créé :
a.
b.
c.
d.
à partir d'une instanciation de la classe XSLTProcessor;
à partir de la commande XSLTProcessor create
à partir de la commande XSLT_ create
à 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.
b.
c.
d.
Array ( [1] =>Fédération] [2] => européenne des Ecoles)
Array ( [0] => Fédération [1] => européenne des Ecoles)
Array ([1] =>Fédération] [2] => européenne [3] => des [4] => Ecoles)
Array ([0] =>Fédération] [1] => européenne [2] => des [3] => Ecoles)
12. En langage PHP, laquelle des assertions suivantes est vraie ?
a.
b.
c.
d.
une classe abstraite est introduite par : abstracted class
une classe qui a toutes ses méthodes abstraites doit être déclarée comme interface
il est strictement interdit d'instancier une classe abstraite
une classe abstraite doit être implémentée
13. L’appel système fork() permet de :
a.
b.
c.
d.
créer un processus par duplication du même fichier
créer un processus à partir d'une structure générale de processus du noyau
créer un processus par recopie d'un autre
créer un processus nouveau
14. Comment sait-on que le parent d'un processus est mort ?
a.
b.
c.
d.
getppid() retourne 0
getppid() retourne -1
getppid() retourne 1
getpid() retourne -1
15. Dans bind(int sock, struct sockaddr * adresse, socklen_t longueur), quelle proposition est
vraie ?
a.
b.
c.
d.
longueur est la taille du pointeur
sockaddr est le descripteur de la socket
sock est un integer qui identifie la socket
struct sockaddr est passée par pointeur et ne sert qu'aux sockets TCP
© Fédération Européenne Des Ecoles – European Federation of Schools – Juin 2010
QCM UC D41.2 MASTER Européen d’Informatique – Corrigé
2/20
16. Que fait la fonction accept(…) ?
a.
b.
c.
d.
elle accepte un client qui vient d'en faire la demande
elle accepte un client qui vient de se connecter et crée une socket pour communiquer avec ce client
elle récupère seulement les informations du client (adresse IP,…)
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.
b.
c.
d.
un tube nommé
un seul tube anonyme
deux tubes anonymes indépendants
deux tubes nommés indépendants
18. La création des descripteurs peut être réalisée par :
a.
b.
c.
d.
fork()
fop
write
pipe()
19. A quoi sert l'appel bind() ?
a.
b.
c.
d.
il permet d'identifier/reconnaître extérieurement la socket créée précédemment dans le code
il fait un appel de résolution DNS sur le réseau
bind() n'intervient pas sur les sockets
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.
b.
c.
d.
se connecter à une base
créer une session
créer une base
interroger le dictionnaire des données
21. L'ordre ROLLBACK permet de :
a.
b.
c.
d.
valider une transaction
insérer des données
supprimer des données
annuler une transaction
22. L'option WITH GRANT OPTION permet de :
a.
b.
c.
d.
transmettre des privilèges reçus
modifier la taille de la base
augmenter la taille de la base
ajouter des privilèges à un utilisateur
23. Un ROLE permet de :
a.
b.
c.
d.
regrouper des utilisateurs
regrouper des privilèges
faire du cinéma
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
© Fédération Européenne Des Ecoles – European Federation of Schools – Juin 2010
QCM UC D41.2 MASTER Européen d’Informatique – Corrigé
3/20
d. un index
25. Une validation de transaction est effectuée par :
a.
b.
c.
d.
un ordre accept
un ordre rollback
un ordre commit
un ordre validate
26. Un index permet d'améliorer les temps de réponse :
a.
b.
c.
d.
des requêtes simples
des requêtes avec jointure
des requêtes de sélection
des requêtes
27. Quel contrôle de transaction interdit à deux utilisateurs de mettre à jour les données en même
temps ?
a.
b.
c.
d.
COMMIT
ROLLBACK
SAVEPOINT
LOCK
28. Comment s’appelle la mémoire partagée par les processus Oracle ?
a.
b.
c.
d.
la PGA
la SGA
la BUFPOOL
la MGA
29. Mettez dans l'ordre, suivant la règle “contient” ou “gère” :
a.
b.
c.
d.
Instance - Tablespace - Database - Table - Rows
Instance - Database - Tablespace - Table - Rows
Instance - Database - Table - Tablespace - Rows
Database - Instance - Tablespace - Table – Rows
30. Une instance Oracle, c’est :
a.
b.
c.
d.
les processus et les zones mémoires utiles au fonctionnement d’une base de données
l’ensemble des fichiers utiles au fonctionnement d’une base de données Oracle
la phase d'installation du logiciel Oracle
une base de données qui ne veut plus démarrer
31. A propos d’un tablespace, indiquez quelle proposition est vraie :
a.
b.
c.
d.
un tablespace ne peut pas contenir plus d'une table
un tablespace contient soit des tables, soit des index
un tablespace peut en même temps contenir des tables et des index
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.
b.
c.
d.
user_tables
v$datafile
all_tables
cat
© Fédération Européenne Des Ecoles – European Federation of Schools – Juin 2010
QCM UC D41.2 MASTER Européen d’Informatique – Corrigé
4/20
33. Dans la phase de conception d’une base de données relationnelle, au niveau conceptuel, on ne
doit pas :
a.
b.
c.
d.
dégager les entités et leur identifiant
dégager les relations et leur identifiant
déterminer les cardinalité des relations
attacher les propriétés aux relations et aux objets
34. La "normalisation" d’un modèle de données permet de :
a.
b.
c.
d.
vérifier que le modèle est normalisé ISO
vérifier que le modèle respecte les normes de l’entreprise
minimiser la redondance de l’information et assurer la cohérence de la base
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.
b.
c.
d.
la clause where count(id_ville)>10000
la clause HAVING count(*)>10.000 après de GROUP BY
la clause WHERE count(*)>10.000 après le GROUP BY
la clause count(*)>10.000 après le WHERE
36. Lors de l'utilisation des servlets JSP :
a.
b.
c.
d.
il peut y avoir plusieurs directives page dans une JSP
il ne peut y avoir qu’une seule directive page dans une JSP
il ne peut pas y avoir de directive page dans une JSP
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.
b.
c.
d.
une
deux
trois
aucune
38. En Java, quelle assertion est vraie?
a.
b.
c.
d.
une classe peut implémenter plusieurs interfaces, mais doit étendre une seule classe
une classe peut implémenter plusieurs classes, mais doit étendre une seule interface
une classe peut implémenter plusieurs classes et peut étendre plusieurs interfaces
une classe doit implémenter une seule interface et étendre une seule classe
39. La liaison tardive est essentielle pour assurer :
a.
b.
c.
d.
l’encapsulation
le polymorphisme
l’héritage
la marginalisation
40. UML est :
a.
b.
c.
d.
un langage Objet
un langage orienté Objet
un langage de modélisation orientée Objet
une méthode pour la programmation orientée Objet
© Fédération Européenne Des Ecoles – European Federation of Schools – Juin 2010
QCM UC D41.2 MASTER Européen d’Informatique – Corrigé
5/20
41. OCL est :
a.
b.
c.
d.
un langage Objet
un langage orienté Objet
un langage de contrainte.
une méthode pour la programmation orientée Objet
42. RUP est :
a.
b.
c.
d.
un langage Objet
un langage orienté Objet
un langage de contrainte.
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.
b.
c.
d.
in
out
in, out
in, out, in/out
44. Un attribut statique est :
a.
b.
c.
d.
un attribut qui n’est pas hérité par les classes filles
un attribut constant
un attribut normal
un attribut passé par référence
45. Une interface est :
a.
b.
c.
d.
une classe abstraite
une classe abstraite qui interagit avec l’utilisateur
une classe dont toutes les méthodes sont abstraites
une classe imaginaire
46. Une agrégation est :
a.
b.
c.
d.
un ensemble d’attributs
une composition faible
une composition forte
un ensemble de classes
47. Le symbole « ~ » représente (UML)
a.
b.
c.
d.
un élément non visible
un élément visible par tous
un élément visible seulement par les sous-classes
un élément visible seulement par les classes du même paquetage
48. MDA signifie :
a.
b.
c.
d.
que l’architecture est guidée par les modèles
que l’architecture est guidée par le code
que l’architecture est décomposée en blocs
que l’architecture est décomposée en paquetages
© Fédération Européenne Des Ecoles – European Federation of Schools – Juin 2010
QCM UC D41.2 MASTER Européen d’Informatique – Corrigé
6/20
49. En UML, quelle cardinalité n’existe pas ?
a.
b.
c.
d.
0..1
1
N..1
M..N
50. Une relation "extends" pour les « use case » signifie :
a.
b.
c.
d.
peut être complété par
doit être complété par
n’est pas complété par
est complété par
© Fédération Européenne Des Ecoles – European Federation of Schools – Juin 2010
QCM UC D41.2 MASTER Européen d’Informatique – Corrigé
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
© Fédération Européenne Des Ecoles – European Federation of Schools – Juin 2010
QCM UC D41.2 MASTER Européen d’Informatique – Corrigé
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.
© Fédération Européenne Des Ecoles – European Federation of Schools – Juin 2010
QCM UC D41.2 MASTER Européen d’Informatique – Corrigé
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’ ) ;
© Fédération Européenne Des Ecoles – European Federation of Schools – Juin 2010
QCM UC D41.2 MASTER Européen d’Informatique – Corrigé
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);
© Fédération Européenne Des Ecoles – European Federation of Schools – Juin 2010
QCM UC D41.2 MASTER Européen d’Informatique – Corrigé
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.
© Fédération Européenne Des Ecoles – European Federation of Schools – Juin 2010
QCM UC D41.2 MASTER Européen d’Informatique – Corrigé
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.
© Fédération Européenne Des Ecoles – European Federation of Schools – Juin 2010
QCM UC D41.2 MASTER Européen d’Informatique – Corrigé
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 :
Tache {
String getNom();
int getCout();
}
¾ 7.5 points
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; }
}
© Fédération Européenne Des Ecoles – European Federation of Schools – Juin 2010
QCM UC D41.2 MASTER Européen d’Informatique – Corrigé
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 :
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());
}}
¾ 6 points
Le coût de la tâche tA est de 30.
© Fédération Européenne Des Ecoles – European Federation of Schools – Juin 2010
QCM UC D41.2 MASTER Européen d’Informatique – Corrigé
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() {
© Fédération Européenne Des Ecoles – European Federation of Schools – Juin 2010
QCM UC D41.2 MASTER Européen d’Informatique – Corrigé
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());
© Fédération Européenne Des Ecoles – European Federation of Schools – Juin 2010
QCM UC D41.2 MASTER Européen d’Informatique – Corrigé
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")); }
}
© Fédération Européenne Des Ecoles – European Federation of Schools – Juin 2010
QCM UC D41.2 MASTER Européen d’Informatique – Corrigé
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>
© Fédération Européenne Des Ecoles – European Federation of Schools – Juin 2010
QCM UC D41.2 MASTER Européen d’Informatique – Corrigé
19/20
Grille de notation
Exercices
NOM__________________________________
Prénom___________________________________
N°____________
Dossier 1 - UML 2
Question 1
Question 2
Question 3
30 points
Dossier 2 - ORACLE et PL/SQL
Question 1
Question 2
Question 3
Question 4
Question 5
Question 6
55 points
Dossier 3 - JAVA et IHM
Question 1
Question 2
55 points
Orthographe et présenation
TOTAL
/10
/10
/10
/6
/12
/7
/12
/6
/12
/15
/40
/10
/150
Appréciation générale :
© Fédération Européenne Des Ecoles – European Federation of Schools – Juin 2010
QCM UC D41.2 MASTER Européen d’Informatique – Corrigé
20/20

Documents pareils