Académique Documents
Professionnel Documents
Culture Documents
TD Java
TD Java
2 DEVELOPPEMENT
CORRIGE JUIN 2010
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
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 mre partir de la classe drive se fait :
a.
b.
c.
d.
super:: construct()
super::__construct()
parent:: construct()
parent::__construct()
RSS_Retrieve
RSS_Channel
RSS_RetrieveLink
RSS_Tags
est un avantage car celui-ci sera visible par les moteurs de recherche
est un inconvnient 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 inconvnient car celui-ci ne sera pas visible par les moteurs de recherche
11. Quel est le rsultat de <? $str1 = "Fdration europenne des Ecoles" ; print_r(explode("
", $str1, 2) ?> ?
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.
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
fork()
fop
write
pipe()
3/20
d. un index
un ordre accept
un ordre rollback
un ordre commit
un ordre validate
27. Quel contrle de transaction interdit deux utilisateurs de mettre jour les donnes en mme
temps ?
a.
b.
c.
d.
COMMIT
ROLLBACK
SAVEPOINT
LOCK
la PGA
la SGA
la BUFPOOL
la MGA
les processus et les zones mmoires utiles au fonctionnement dune base de donnes
lensemble des fichiers utiles au fonctionnement dune base de donnes Oracle
la phase d'installation du logiciel Oracle
une base de donnes qui ne veut plus dmarrer
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
4/20
33. Dans la phase de conception dune base de donnes relationnelle, au niveau conceptuel, on ne
doit pas :
a.
b.
c.
d.
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.
une
deux
trois
aucune
une classe peut implmenter plusieurs interfaces, mais doit tendre une seule classe
une classe peut implmenter plusieurs classes, mais doit tendre une seule interface
une classe peut implmenter plusieurs classes et peut tendre plusieurs interfaces
une classe doit implmenter une seule interface et tendre une seule classe
lencapsulation
le polymorphisme
lhritage
la marginalisation
un langage Objet
un langage orient Objet
un langage de modlisation oriente Objet
une mthode pour la programmation oriente Objet
5/20
un langage Objet
un langage orient Objet
un langage de contrainte.
une mthode pour la programmation oriente Objet
un langage Objet
un langage orient Objet
un langage de contrainte.
une mthode pour la programmation oriente Objet
43. En utilisant UML, quelle sont les possibilits pour des paramtres dopration ?
a.
b.
c.
d.
in
out
in, out
in, out, in/out
un ensemble dattributs
une composition faible
une composition forte
un ensemble de classes
6/20
0..1
1
N..1
M..N
7/20
Dossier 1 - UML 2
Question 1
Ralisez le diagramme de classe.
1 point par classe
3 points pour les multiplicits
8/20
Dossier 1 - UML 2
Question 2
Proposez un diagramme de cas dutilisation correspondant aux besoins dcrits ci-dessus.
Question 3
Proposez un diagramme de squence correspondant lajout dune fiche produit.
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 ;
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
Question 4
Dfinissez 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 rpartition de fichiers sur les diffrents disques dur du serveur. On
peut aussi dfinir OFA comme un ensemble de bonnes habitudes prendre pour la cration d'une base. Bien
qu'OFA ne soit pas indispensable la cration d'une base, Oracle recommande son utilisation si vous prvoyez
une augmentation du nombre d'utilisateurs ou encore si vous souhaitez mettre en place d'autres bases de donnes
dans votre environnement.
Son objectif est de prvenir tout un ensemble de problmes qui pourraient survenir si vous utilisiez plusieurs
versions d'Oracle, plusieurs bases de donnes, ou des bases de donnes fort taux d'utilisation.
La norme OFA a t ralise afin d'offrir des avantages non ngligeables, notamment dans les cas suivants :
- Facilit de maintenance des bases de donnes travers une organisation de fichiers standardise.
- Fiabilit grce des donnes rparties sur plusieurs disques.
- Performance accrue par des rductions de conflits d'entre/sortie sur les disques.
Oracle Universal Installer spare les fichiers excutables des fichiers de base de donnes. Cette
opration prend tout son sens lorsque vous souhaitez mettre jour votre version d'Oracle
Ses avantages sont :
- indpendance des sous-rpertoires,
- les oprations sur un fichier d'une certaine catgorie ne sont pas rpercutes sur un fichier d'une autre
catgorie,
- convention de nommage pour les fichiers de donnes, on peut ainsi identifier les fichiers plus facilement,
- sparation des diffrents types de tablespace pour obtenir les avantages d'I/O, mais aussi rduire la
fragmentation.
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.
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; }
}
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.
15/20
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);
}
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;
Container c = fenetre.getContentPane();
c.setLayout(new BorderLayout());
17/20
18/20
19/20
Grille de notation
Exercices
NOM__________________________________
Prnom___________________________________
N____________
Dossier 1 - UML 2
Question 1
Question 2
Question 3
30 points
55 points
55 points
Orthographe et prsenation
TOTAL
/10
/10
/10
/6
/12
/7
/12
/6
/12
/15
/40
/10
/150
Apprciation gnrale :
20/20