EXAMEN DE JAVA 2010-2011



Documents pareils
Programmer en JAVA. par Tama

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

Programmation par les Objets en Java

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Projet de programmation (IK3) : TP n 1 Correction

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Chapitre 10. Les interfaces Comparable et Comparator 1

Une introduction à Java

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Tp 1 correction. Structures de données (IF2)

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

as Architecture des Systèmes d Information

Package Java.util Classe générique

Corrigé des exercices sur les références

TP1 : Initiation à Java et Eclipse

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Flux de données Lecture/Ecriture Fichiers

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Gestion distribuée (par sockets) de banque en Java

Cours 1: Java et les objets

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant.

INITIATION AU LANGAGE JAVA

ACTIVITÉ DE PROGRAMMATION

PROGRAMMATION PAR OBJETS

Langage Java. Classe de première SI

Java Licence Professionnelle CISII,

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Java Licence Professionnelle CISII,

Initiation à JAVA et à la programmation objet.

Plan du cours. Historique du langage Nouveautés de Java 7

Auto-évaluation Programmation en Java

Objets et Programmation. origine des langages orientés-objet

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

TD/TP PAC - Programmation n 3

TD3: tableaux avancées, première classe et chaînes

Héritage presque multiple en Java (1/2)

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

Un ordonnanceur stupide

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Programmation Par Objets

Programmation avec des objets : Cours 7. Menu du jour

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

Présentation. Au programme. Fonctionnement. A l issue de ce module vous devriez...

JAVA TD0. Prise en main du langage Environnement de base JAVA 1

Java 1.5 : principales nouveautés

Synchro et Threads Java TM

Java c est quoi? Java pourquoi?

Premiers Pas en Programmation Objet : les Classes et les Objets

Threads. Threads. USTL routier 1

Généralités sur le Langage Java et éléments syntaxiques.

Cours 14 Les fichiers

Corrigés des premiers exercices sur les classes

RMI le langage Java XII-1 JMF

Dis papa, c est quoi un bus logiciel réparti?

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Introduction au langage Java

TP, première séquence d exercices.

TD/TP PAC - Programmation n 3

Java - la plateforme

Remote Method Invocation (RMI)

Programmation Orientée Objet - Licence TIS CM8/9. Rappel sur la séance précédente. Lancelot Pecquet Lancelot.Pecquet@math.univ-poitiers.

Cahier des Charges du Projet Domotique. Choquet Mathieu Masson Jérôme Groupe 6. Domotique. p.1

Bases Java - Eclipse / Netbeans

2. Comprendre les définitions de classes

Exercices sur les interfaces

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

Traitement de données

Utilisation d objets : String et ArrayList

Langage à objets : JAVA (1)

Java Licence professionnelle CISII,

Développement Logiciel

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Support de cours et TD Programmation Orientée Objet

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr

Remote Method Invocation Les classes implémentant Serializable

Apprendre Java en 154 minutes

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

Utiliser Java sans BlueJ

Programmation en Java IUT GEII (MC-II1) 1

Programmation Orientée Objet application au langage Java Version Novembre 2007

Java DataBaseConnectivity

Environnements de développement (intégrés)

Classe Interne, Anonyme & Enumération

Bases du langage. Historique Applications et applets Éléments de base du langage Classes et objets Les exceptions

4. Groupement d objets

INF 321 : mémento de la syntaxe de Java

TD2 Programmation concurrentielle

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Anne Tasso. Java. Le livre de. premier langage. 6 e édition. Groupe Eyrolles, 2000, 2002, 2005, 2006, 2008, 2010, ISBN :

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Transcription:

NOM : PRÉNOM : TP : G TP EXAMEN DE JAVA 2010-2011 Consignes : avec documents, mais sans téléphone, ordinateur ou autre moyen de communication. Durée : 2h Recommandations : Le code doit être écrit en JAVA (pas de pseudo-code ou de littérature personnelle). Les correcteurs savent que vous n êtes pas des compilateurs, donc ils ne seront pas regardant sur les ; mais n exagérez pas! Si le sujet vous paraît trop long, c est normal!!! Ne vous inquiétez pas : essayez d en faire le maximum et surtout de BIEN faire ce que vous faites. QUESTIONS : QCM (10 points) Entourez la bonne réponse, ou rayez les mauvaises. Bonne réponse =1pt ; mauvaise réponse = -0.5pt ; pas de réponse=0pt. 1. Pour les classes A et B définies comme suit : class A { private int x; public A() { x = 5; public int getx() { return x; class B extends A { private int x; public B() { x = 7; qu affichera le code suivant? A a1 = new A(); B b1 = new B(); A a2 = new B(); System.out.println(a1.getX() + et + b1.getx() + et encore + a2.getx() ); a. 5 et 5 et encore 5 b. 5 et 7 et encore 5 c. 5 et 7 et encore 7 d. autre chose 2. Pour les classes A et B, définies comme suit, cela ne compile pas. Pourquoi? class A { private int x; protected int y; public int z; public A() { x = 5; y = 7; z = 9; 1/10

class B extends A { public B() { x = 7; y = 9 ; z = 11; a. L'accès à x dans B est illégal. b. L'accès à y dans B est illégal. c. L'accès à z dans B est illégal. d. B ne fait pas appel au constructeur de A 3. Soit la classe A suivante : class A { static private int x = 1; public A() { x++; public int getx() { return x; qu affichera le code suivant? A a1 = new A(); A a2 = new A(); A a3 = new A(); System.out.println(a1.getX() + - + a2.getx() + - + a3.getx()) ; a. 1-2 - 3 b. 2-3 - 4 c. 3-3 - 3 d. 4-4 - 4 4. Quelle classe n a pas de classe mère? a. String b. Orpheline c. une classe abstraite d. Object 5. Quelle propriété des classes abstraites est vraie? a. Elle ne peut être instanciée. b. Elle ne peut être dérivée. c. Elle n'a pas de classe mère. d. Elle ne peut pas avoir de données membres. 6. Soit la classe A et les deux interfaces I et J suivantes : interface I { public void methodedei(); interface J { public void methodedej(); 2/10

class A implements I, J{ private int i; public A() { i = 0; Ce code ne compile pas car a. On ne peut pas implémenter les deux interfaces I et J en même temps. b. Il faut utiliser le mot clé extends au lieu de implements. c. Il faut que A redéfinisse les méthodes contenues dans I et J. d. Une autre raison. 7. Soit les classe A et B suivantes : class A { public String name; public A(String n) { name = n; class B { public A mona; public B(A a) { mona = a; Qu'affice le code suivant : A a1 = new A(«nom1») ; B b1 = new B(a1) ; a1.name = «nom2» ; B b2 = new B(a1); System.out.println(b1.mona.name + - + b2.mona.name) ; a. nom1 - nom1 b. nom1 - nom2 c. nom2 - nom2 d. autre 8. Combien d instances de la classe A crée le code suivant? A x,u,v; x = new A(); A y = new A(); y = x; A z = new A(); a. Aucune b. Trois c. Quatre d. Cinq 3/10

9. Les fichiers.class obtenus avec javac contiennent a. Le code source en java. b. Les instructions spécifiques à une architecture, qui seront directement exécutées par le processeur. c. Le bytecode, c'est à dire des instructions d'une machine virtuelle qui seront traduites par un interpréteur. d. Le metacode, c'est à dire des instructions génériques interprétables directement par n'importe quelle architecture de microprocesseur. 10. Le code de la classe MainTest ci-dessous class A { public String getname() { return I'm A ; class B extends A { public String getname() { return I'm B ; class MainTest { public static void main(string args[]) { A a; if(args[0].equals( a )) a = new A(); else a = new B(); System.out.println(a.getName()); est une illustration a. de l héritage b. de l encapsulation c. de la cryptographie d. du polymorphisme EXERCICE : JEmails (15 points) Nous allons réaliser un programme de traitement des emails appelé JEmails. Lisez attentivement le code suivant, et répondez aux questions. 1. Expliquez ce que font les méthodes commentées par a, b, c, d et e. Utilisez les champs de commentaires javadoc (/ /) laissés vides pour l'occasion. 2. Remplissez les méthodes commentées par f, g, h et i en vous aidant des indications fournies. Votre code doit se comporter tel que le suggère le commentaire javadoc de ces méthodes. 4/10

3. Remplissez le corps de la classe DateComparator (commenté par j) en vous inspirant de la classe SenderComparator. Fichier JEmails.java import java.util.; / classe principale du programme JEMails. Contient la liste des comptes emails. / public class JEmails { / liste des comptes emails / List<String> accountfiles; List<Account> accounts; / option pour le tri des emails 0 : par date 1 : par expéditeur / static int sorted = 0; / a / / / public JEmails(String[] filenames) { accountfiles = new ArrayList<String>(); accounts = new ArrayList<Account>(); for(string file : filenames) { Account a = new Account(file); accountfiles.add(file); accounts.add(a); / mets à jour la liste des emails de chacun des comptes / public void checkfornewmails() { System.out.println("checking for new mails..."); / f / / affiche la liste des emails de chacun des comptes en prennant 5/10

en compte l'option de tri / public void updatedisplay() { System.out.println("your emails :"); / g / / b / / / public void infodisplay() { for(int i = 0 ; i < accounts.size(); i++) { Account a = accounts.get(i); System.out.println(accountFiles.get(i)); System.out.println("-----"); System.out.println(a); System.out.println("====="); / variable static déterminant l'état de fonctionnement du programme (true : en marche, false : à l'arrêt) / private static boolean running = false; / méthode principale du programme création d'une nouvelle instance de JEmails, puis boucle tant que le programme est en marche. / public static void main(string args[]) { JEmails jemails = new JEmails(args); running = true; Scanner scan = new Scanner(System.in); while(running) { String next = scan.next(); //ligne entrée au clavier if(next.startswith("n")) //commence par "n" jemails.checkfornewmails(); else if(next.startswith("u")) //commence par "u" jemails.updatedisplay(); else if(next.startswith("s")) //commence par "s" sorted = 1 - sorted; else if(next.startswith("i")) //commence par "i" jemails.infodisplay(); else if(next.startswith("q")) { //commence par "q" System.out.println("quit"); running = false; Fichier Email.java 6/10

import java.util.; / classe encapsulant les données contenues dans un email / public class Email { String from; String to; String subject; Date date; String text; / renvoie l'expéditeur de l'email / public String getsender() { return from; / c / / / public Date getdate() { return date; / renvoie une représentation sous forme de String de la manière suivante : From : <champ from> To : <champ to> date : <champ date> subject : <champ subject> ----- <champ text> / public String tostring() { / h / Fichier Account.java import java.util.; import java.io.; / classe encupsulant les données d'un compte email / public class Account { String emailaddress; String login; String password; String pop3server; 7/10

List<Email> emails; / d / / / public Account(String configfilename) { try { BufferedReader in = new BufferedReader(new FileReader(configFileName)); String line; while((line = in.readline())!= null) { String left = line.substring(0, line.indexof(':')); String right = line.substring(line.indexof(':')); if(left.equalsignorecase("email") ) emailaddress = right; else if(left.equalsignorecase("login")) login = right; else if(left.equalsignorecase("password")) password = right; else if(left.equalsignorecase("pop3")) pop3server = right; in.close(); catch(ioexception e) { e.printstacktrace(); / met à jour la liste des emails avec les nouveaux emails du serveur / public void checkfornewmails() { //code trop long pour la roxe / renvoie la liste des emails triée par date / public List<Email> getemailssortedbydate() { / i / / renvoie la liste des emails triée par expéditeurs / public List<Email> getemailssortedbysender() { 8/10

/ trie la liste des emails avec un comparateur sur les expéditeurs / Collections.sort(emails, new SenderComparator()); return emails; / e / / / public String tostring() { String s = "email : "+emailaddress+"\n"; s += "login : "+login+"\n"; s += "password"+password+"\n"; s += "server : "+pop3server; return s; Fichier SenderComparator.java import java.util.; / comparateur permettant de trier des email par ordre alphabétique d'expéditeur / public class SenderComparator implements Comparator<Email> { public int compare(email e1, Email e2) { return e1.getsender().compareto(e2.getsender()); Fichier DateComparator.java import java.util.; / comparateur permettant de trier des email par ordre alphabétique d'expéditeur / public class DateComparator implements Comparator<Email> { / j / 9/10

À titre d'exemple de configuration de compte, voici le fichier tpjava.conf. On peut utiliser ce fichier en lançant par exemple JEmails avec la commande «java Jemails tpjava.conf» email:tpjava@ensea.fr login:tpjava password:j4v415900d pop3:silver.ensea.fr Espace supplémentaire : 10/10