Beruflich Dokumente
Kultur Dokumente
2. XPath :
a. b. c. d. 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
3.
4. Un flux RSS :
a. b. c. d. 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
5.
En langage PHP, l'appel du constructeur de la classe mre partir de la classe drive se fait :
a. b. c. d. super:: construct() super::__construct() parent:: construct() parent::__construct()
Fdration Europenne Des Ecoles European Federation of Schools Juin 2010 QCM UC D41.2 MASTER Europen dInformatique Corrig
11. Quel est le rsultat de <? $str1 = "Fdration europenne des Ecoles" ; print_r(explode(" ", $str1, 2) ?> ?
a. b. c. d. Array ( [1] =>Fdration] [2] => europenne des Ecoles) Array ( [0] => Fdration [1] => europenne des Ecoles) Array ([1] =>Fdration] [2] => europenne [3] => des [4] => Ecoles) Array ([0] =>Fdration] [1] => europenne [2] => des [3] => Ecoles)
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 passe par pointeur et ne sert qu'aux sockets TCP
Fdration Europenne Des Ecoles European Federation of Schools Juin 2010 QCM UC D41.2 MASTER Europen dInformatique Corrig
2/20
17. Pour raliser une communication non temporaire bidirectionnelle inter processus, il est conseill dutiliser :
a. b. c. d. un tube nomm un seul tube anonyme deux tubes anonymes indpendants deux tubes nomms indpendants
3/20
d. un index
27. Quel contrle de transaction interdit deux utilisateurs de mettre jour les donnes en mme temps ?
a. b. c. d. COMMIT ROLLBACK SAVEPOINT LOCK
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
Fdration Europenne Des Ecoles European Federation of Schools Juin 2010 QCM UC D41.2 MASTER Europen dInformatique Corrig
4/20
33. Dans la phase de conception dune base de donnes relationnelle, au niveau conceptuel, on ne doit pas :
a. b. c. d. dgager les entits et leur identifiant dgager les relations et leur identifiant dterminer les cardinalit des relations attacher les proprits aux relations et aux objets
35. Pour nafficher que les villes dont le rsultat du count(*) est suprieur 10.000 dans linstruction 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 aprs de GROUP BY la clause WHERE count(*)>10.000 aprs le GROUP BY la clause count(*)>10.000 aprs le WHERE
37. Combien dinstances de la classe A cre 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
Fdration Europenne Des Ecoles European Federation of Schools Juin 2010 QCM UC D41.2 MASTER Europen dInformatique Corrig
43. En utilisant UML, quelle sont les possibilits pour des paramtres dopration ?
a. b. c. d. in out in, out in, out, in/out
Fdration Europenne Des Ecoles European Federation of Schools Juin 2010 QCM UC D41.2 MASTER Europen dInformatique Corrig
6/20
Fdration Europenne Des Ecoles European Federation of Schools Juin 2010 QCM UC D41.2 MASTER Europen dInformatique Corrig
7/20
Fdration Europenne Des Ecoles European Federation of Schools Juin 2010 QCM UC D41.2 MASTER Europen dInformatique Corrig
8/20
Question 2 Proposez un diagramme de cas dutilisation correspondant aux besoins dcrits ci-dessus.
Fdration Europenne Des Ecoles European Federation of Schools Juin 2010 QCM UC D41.2 MASTER Europen dInformatique Corrig
9/20
Question 1 Ralisez une fonction en langage pl/sql nomme Qtable(PC$Table, PC$ClauseWhere ) - dynamique et totalement gnrique qui permet dinterroger nimporte quelle table (paramtre PC$Table), - avec une clause where passe elle aussi en paramtre (PC$ClauseWhere), - qui renvoie un integer LN$Total donnant le nombre doccurrences correspondantes a cette clause. Donnez un exemple dutilisation.
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 ;
Fdration Europenne Des Ecoles European Federation of Schools Juin 2010 QCM UC D41.2 MASTER Europen dInformatique Corrig
10/20
Question 2 Soit la Procdure NDS ci-dessous, rcrivez-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);
Fdration Europenne Des Ecoles European Federation of Schools Juin 2010 QCM UC D41.2 MASTER Europen dInformatique Corrig
11/20
END;
Question 3 Donnez les avantages et inconvnients du NDS par rapport au package DBMS_SQL.
NDS : - Plus grande rapidit dexcution. En moyenne, le SQL dynamique natif sexcute de 1.5 3 fois plus rapidement. - Support des types dfinis, le SQL dynamique natif supporte tous les types dfinis par lutilisateur, Objets, collections, etc - Support des types RECORD pour les ordres Select. - Le SQL dynamique natif permet dutiliser un objet de type RECORD dans une clause INTO. Package DBMS_SQL : - Support par le client, les fonctions du package DBMS_SQL sont supportes par les applications clientes linverse du SQL dynamique natif. - Supporte la procdure DESCRIBE_COLUMNS qui permet de connaitre les informations relatives aux colonnes dun curseur ouvert au travers de DBMS_SQL. - Support de la clause RETURNING pour les oprations UPDATE et DELETE. D BMS_SQL supporte la clause RETURNING pour des oprations UPDATE ou DELETE effectues sur plusieurs lignes. Le SQL dynamique natif ne supporte une clause RETURNING que sur les oprations ne retournant quune seule ligne
Fdration Europenne Des Ecoles European Federation of Schools Juin 2010 QCM UC D41.2 MASTER Europen dInformatique Corrig
12/20
Question 5 Vous disposez dun serveur de base de donnes avec 4 disques durs, reprsentez, sur un schma, larchitecture logicielle recommande pour respecter les points dfinis ci-dessus (question 4).
Question 6 Le schma ci-dessous reprsente un architecture web 3 tiers utilisant ORACLE comme base de donnes, indiquez sur ce schma les vulnrabilits dun tel systme.
Fdration Europenne Des Ecoles European Federation of Schools Juin 2010 QCM UC D41.2 MASTER Europen dInformatique Corrig
13/20
Question 1
Larchitecture des tches est donne en figure 1 o le dtail des classes TacheElementaire et TacheComplexe nest pas donn. Une tche est caractrise par un nom et un cot. Une tche est soit une tche lmentaire, soit une tche complexe qui est alors compose de sous-tches. Il est ainsi possible dajouter une sous-tche une tche complexe, ajouter(Tache) ou de supprimer une sous-tche, supprimer(Tache). Le cot dune tche complexe est la somme des cots des tches qui la composent.
Le listing 1 donne le code de linterface Tache. crivez en Java la classe Tache Elementaire qui est une ralisation de linterface Tache : Tache { String getNom(); int getCout(); }
7.5 points
Rponse :
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; } }
Fdration Europenne Des Ecoles European Federation of Schools Juin 2010 QCM UC D41.2 MASTER Europen dInformatique Corrig
14/20
Question 2
Nous nous intressons maintenant la classe TacheComplexe, en particulier sa relation avec linterface Tache. Une tche complexe est compose dun nombre quelconque de tches. On dcide dutiliser linterface java.util.Collection pour stocker les sous-tches. On lutilisera bien entendu, dans sa version gnrique. Comme on souhaite pouvoir parcourir toutes les sous-tches dune tche complexe, la Classe TacheComplexe ralise linterface java.lang.Iterable.
Indiquez quel est le cot de la tche 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 cot de la tche tA est de 30.
Fdration Europenne Des Ecoles European Federation of Schools Juin 2010 QCM UC D41.2 MASTER Europen dInformatique Corrig
15/20
public class TacheComplexe implements Tache, Iterable<Tache> { private Collection<Tache> sousTaches; private 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 int getCout() { int result = 0; for (Tache t : sousTaches) { result += t.getCout(); } return result;}
16/20
return this.sousTaches.iterator(); } }
Dessinez la fentre (et les composants graphiques quelle contient) telle quelle est affiche quand cette classe est excute.
6 points
Compltez cette classe pour que les boutons Ajouter et Quitter deviennent actifs.
Le bouton Quitter ferme la fentre. Le bouton Ajouter ajoute une nouvelle sous-tche la tche complexe passe en paramtre du constructeur de cette classe. Le nom et le cot de cette sous tche sont, bien entendu, saisis par lutilisateur dans les zones de saisie prvues, valeurNom et valeurCout. Dans le cas o lutilisateur saisit une information qui nest pas un entier pour saisir le cot, on signalera lerreur en mettant la couleur de fond de la zone de saisie correspondante en rouge (setBackground(Color.RED)). On rappelle que la mthode Integer.parseInt(String) renvoie lentier correspondant la chane de caractre pass en paramtre. Cette mthode lve lexception NumberFormatException si la chane 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 tche"); 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;
Fdration Europenne Des Ecoles European Federation of Schools Juin 2010 QCM UC D41.2 MASTER Europen dInformatique 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("Cot : ", 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")); } }
Fdration Europenne Des Ecoles European Federation of Schools Juin 2010 QCM UC D41.2 MASTER Europen dInformatique Corrig
18/20
Sauvegarde dune tche en XML Soit la DTD pour reprsenter une tche : 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>
Fdration Europenne Des Ecoles European Federation of Schools Juin 2010 QCM UC D41.2 MASTER Europen dInformatique Corrig
19/20
Apprciation gnrale :
Fdration Europenne Des Ecoles European Federation of Schools Juin 2010 QCM UC D41.2 MASTER Europen dInformatique Corrig
20/20