Examen de Septembre 2004 page 1
page 1
IPST-CNAM
Conception d'applications distribuées en Java
Cycle C / TL16954
Mardi 14 Septembre 2004
Sans document
Durée : 2 heures
Enseignants : LAFORGUE Jacques
MILLAN Thierry
Session de SEPTEMBRE
I. QCM [10 points] (20 minutes)
Mode d'emploi :
Ce sujet est un QCM dont les questions sont de 3 natures :
les questions à 2 propositions: dans ce cas une seule des 2 propositions est bonne.
si aucune réponse alors + 0
si 1 réponse bonne alors +1
si 1 réponse fausse alors 1
les questions à 3 propositions dont 1 seule proposition est bonne
si aucune réponse alors + 0
si 1 réponse bonne alors + 1
si 1 réponse fausse alors ½
si 2 réponses fausses alors 1
les questions à 3 propositions dont 2 propositions sont bonnes.
si aucune réponse alors + 0
si 1 réponse bonne alors + ½
si 2 réponses bonnes alors +1
si 1 réponse fausse alors 1
Dans tous les cas, il existe au moins 1 réponse bonne et au moins 1 réponse fausse.
On ne compte les valeurs négatives que à partir de 10% du nombre de question du QCM.
On peut remarquer que cocher toutes les propositions d'une question revient à ne rien cocher
(égal à 0).
Il s'agit de faire une croix dans les cases de droite en face des propositions.
Si vous devez raturer une croix, faites-le correctement afin qu'il n'y ait aucune ambiguïté.
N'oubliez pas d'inscrire en en-tête du QCM, votre nom et prénom, votre numéro de groupe de TP.
Si vous avez changé de groupe de TP en cours d'année, indiquez les 2 numéros de groupe en précisant à partir de
quel projet vous avez changé de groupe.
Ce QCM est constitué de 20 questions.
Vous avez donc le droit de vous tromper sans pénalités jusqu'à la hauteur de 2 points.
Examen de Juin 2004 page 2 QCM
page 2
NOM:
PRENOM:
GROUPE DE TP :
Un package JAVA
Q 1
1
est une archive de fichier .class dite "fichier .jar"
2
est une librairie de classes JAVA sous la forme d'un fichier binaire
3
est un répertoire de fichiers JAVA (.class)
L'en-tête de déclaration d'une méthode main d'une classe JAVA peut-être:
Q 2
1
void main(int nb_args, String args[])
2
static public void main(int nb_args, String args[])
3
static public void main(String args[])
Un exception JAVA :
Q 3
1
hérite de la classe Object
2
hérite de la classe Exception
3
hérite de la classe Thread
Individu tab[] = new Individu[100];
Individu ind = new Individu();
ind.nom = "LAFONT"
tab[0] = ind;
tab[0].nom = "DUPONT"
System.out.println(ind.nom);
Ce code affiche:
Q 4
1
DUPONT
2
LAFONT
Soit la déclaration de la classe suivante :
public class MonThread extends Thread
{
public void run()
{
// traitement du thread
}
}
Pour créer le thread et l'exécuter, il faut faire les instructions suivantes:
Q 5
1
MonThread p = (MonThread)(new Thread());
p.start()
2
Runnable p = new Runnable ();
MonThread q = new Thread(p);
q.start();
3
MonThread p = new MonThread ();
p.start();
En JAVA, avec RMI, un objet distribué
Q 6
1
est un objet JAVA qui est échangé entre le serveur et le client
2
est un objet JAVA créé puis enregistré dans l'adaptateur par l'utilisation de l'instruction rebind
Examen de Juin 2004 page 3 QCM
page 3
En JAVA, avec RMI, un objet distribué
Q 7
1
doit implémenter une interface contenant les méthodes distantes de l'objet distribué
2
doit implémenter l'interface Serializable
Dans une architecture distribuée
Q 8
1
les squelettes sont utilisés par le client
2
les amorces sont utilisés par l'objet distribué
3
les squelettes sont utilisés par l'objet distribué
En JAVA, avec RMI, le compilateur IDL (rmic)
Q 9
1
permet de créer les objets distribués
2
permet de créer les amorces et les squelettes
Choisir le(s) code(s) correct(s) de la méthode main de GrilleOD.java qui crée l'objet distribué GRILLE
Q 10
1
String hostRegistry = args[0];
String portRegistry = Integer.parseInt(args[1]);
urlRegistry="rmi://"+hostRegistry+":"+portRegistry+"/";
Naming.rebind(urlRegistry+"GRILLE");
2
String hostRegistry = args[0];
String portRegistry = Integer.parseInt(args[1]);
Naming.rebind(new GrilleOD(20,20, hostRegistry, portRegistry));
3
String hostRegistry = args[0];
String portRegistry = Integer.parseInt(args[1]);
urlRegistry="rmi://"+hostRegistry+":"+portRegistry+"/";
Naming.rebind(urlRegistry+"GRILLE", new GrilleOD(20,20,urlRegistry));
Choisir le(s) code(s) corrects de la méthode main d'un client de l'objet distribué GRILLE
Q 11
1
String hostRegistry = args[0];
String portRegistry = Integer.parseInt(args[1]);
// Connexion a l'objet distribué
urlRegistry="rmi://"+hostRegistry+":"+portRegistry+"/";
GrilleODInt grilleod = (GrilleODInt)Naming.lookup(urlRegistry+"GRILLE");
2
String hostRegistry = args[0];
String portRegistry = Integer.parseInt(args[1]);
// Connexion a l'objet distribué
urlRegistry="rmi://"+hostRegistry+":"+portRegistry+"/";
GrilleODInt grilleod = (GrilleODInt)Naming.lookup(urlRegistry);
3
// Connexion a l'objet distribué
GrilleODInt grilleod = (GrilleODInt)Naming.lookup("GRILLE");
Toutes les méthodes distantes d'un objet distribué
Q 12
1
doivent appartenir à la même interface
2
peuvent appartenir à plusieurs interfaces
3
doivent toutes être implémentées dans le même objet distribué
Un démon Http est un serveur de socket
Q 13
1
OUI
2
NON
En JAVA, le passage des paramètres dans les méthodes se fait:
Q 14
1
toujours par référence
2
toujours par valeur
Examen de Juin 2004 page 4 QCM
page 4
En JAVA, les paramètres d'une interface quelconque doivent toujours correspondre à des objets
sérialisés
Q 15
1
OUI
2
NON
Dans une architecture distribuée, le client et l'objet distribué
Q 16
1
ont des espaces mémoires disjoints
2
se partagent le même espace mémoire
3
peuvent s'exécuter sur la même machine virtuelle JAVA
En JAVA, un thread est un objet JAVA dont la classe d'appartenance
Q 17
1
hérite de la classe Thread
2
est la classe prédéfinie ThreadObject
3
implémente l'interface Runnable
Avec RMI, les services d'un objet distribué sont:
Q 18
1
décrits dans une interface Java accessible par le client
2
des méthodes privées implémentées par l'objet distribué
3
des méthodes publiques implémentées par le client
En JAVA, un tableau
Q 19
1
peut contenir des éléments de type primitif
2
peut contenir des références d'objet JAVA
3
ne peut pas contenir des références d'objet JAVA
Si on utilise 2 adaptateurs d'objets distribués sur la même machine, ils doivent s'exécuter sur des ports
différents
Q 20
1
OUI
2
NON
Examen de Juin 2004 page 5 QCM
page 5
II. Exercice 1 [5 points] (25 mn)
Ecrire les classes, l'interface et le programme principal permettant de créer N objets distribués.
N est un paramètre du programme principal. Le numéro de port de l'adaptateur est passé en paramètre.
Chaque objet distribué est enregistré dans l'adaptateur sous le nom "OBJET_" + n où n est un numéro unique de
1 à N.
L'objet distribué implémente la méthode distante int getNumero() qui retourne le numéro de l'objet distribué.
III. Exercice 2 [5 points] (25 mn)
Ecrire un programme qui crée et exécute un thread qui affiche à l'écran (println) les noms des objets distribués
qui sont enregistrés dans l'adaptateur de numéro de port passé en paramètre du programme.
Le thread affiche une nouvelle liste que si cette liste a changé dans le temps. Le thread s'arrête quand la liste est
vide. La méthode prédéfinie String[] l = Naming.list(url); retourne la liste des objets distribués enregistré dans
l'adaptateur à l'adresse URL (rmi://host:port) passé en paramètre.
IV. Exercice 3 [5 points] (25 mn)
Ecrire la classe Vecteur qui hérite de la classe prédéfinies Vector et qui contient la méthode void trier() et
l'attribut int ordre. Cet attribut peut avoir la valeur 1 ou +1. Il permet de savoir l'ordre de tri de la méthode
trier(). Si 1 alors trier par ordre décroissant, +1 par ordre croissant. La valeur de cet attribut est passé en
paramètre du constructeur.
Cette méthode permet de trier par ordre croissant ou décroissant les éléments du vecteur. Pour cela, vous devez
créer l'interface Comparable qui déclare la méthode int comparer(Comparable o); cette méthode retourne 1
si this < o, 0 si this = o, +1 si this > o.
V. Exercice 4 [5 points] (25 mn)
Soit la classe suivante :
public class Formulaire
{
public string[] motsclefs;
public string[] valeurs;
}
Ecrire la méthode Formulaire decoder(string formulaire); qui réalise le décodage d'un formulaire quelconque
provenant d'une requête http.
Exemple:
formulaire = "NOM=LAFONT&PRENOM=Pierre&AGE=&VILLE=Toulouse"
résultats du traitements:
motsclefs = ["NOM","PRENOM","AGE","VILLE"]
valeurs = ["LAFONT","Pierre","","Toulouse"]
1 / 6 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !