1 ère PARTIE : COURS (sans document) Durée: 1h15



Documents pareils
Chapitre 10. Les interfaces Comparable et Comparator 1

Corrigé des exercices sur les références

Flux de données Lecture/Ecriture Fichiers

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

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

Premiers Pas en Programmation Objet : les Classes et les Objets

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

TD/TP PAC - Programmation n 3

Développement Logiciel

Corrigés des premiers exercices sur les classes

TD/TP PAC - Programmation n 3

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

Auto-évaluation Programmation en Java

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

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

Programmation Par Objets

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

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

Java Licence Professionnelle CISII,

Entrées / Sorties. Entrées / Sorties. Entrées/Sorties. System.out. Fonctionnement par flots (stream) Karima Boudaoud IUT- R&T. Terrain connu.

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

Programmer en JAVA. par Tama

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

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

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

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

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

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

Programmation par les Objets en Java

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

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 )

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

Remote Method Invocation Les classes implémentant Serializable

Package Java.util Classe générique

Cours 14 Les fichiers

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

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.

Langage Java. Classe de première SI

Facultés Universitaires Notre-Dame de la Paix. Conception et Programmation Orientées- Object

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)

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

Une introduction à Java

RMI le langage Java XII-1 JMF

Programmation avec des objets : Cours 7. Menu du jour

Chapitre 2. Classes et objets

Programmation Objet Java Correction

TP1 : Initiation à Java et Eclipse

Création d objet imbriqué sous PowerShell.

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

Cours 1: Java et les objets

Programmation Objet - Cours II

Application web de gestion de comptes en banques

Java 1.5 : principales nouveautés

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

Utilisation d objets : String et ArrayList

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

Projet de programmation (IK3) : TP n 1 Correction

Langage à objets : JAVA (1)

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

2 Grad Info Soir Langage C++ Juin Projet BANQUE

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

Bases Java - Eclipse / Netbeans

Chapitre VI- La validation de la composition.

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

Applet pour visualiser les variables «automate» notifiées

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

INITIATION AU LANGAGE JAVA

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

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

Chapitre V. Les classes : Object, Vector, etc.

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

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

UML. Diagrammes de classes (suite) Delphine Longuet.

Initiation à JAVA et à la programmation objet.

Initiation à la programmation orientée-objet avec le langage Java

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Machines virtuelles fonctionnelles (suite) Compilation ML Java

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février :30 à 20:30

Arbres binaires de recherche

Synchro et Threads Java TM

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

Design patterns. Design patterns - définition. Design patterns - avantages

PROGRAMMATION PAR OBJETS

Java DataBaseConnectivity

[APPLICATON REPARTIE DE VENTE AUX ENCHERES]

Threads. Threads. USTL routier 1

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

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

Programmation par composants (1/3) Programmation par composants (2/3)

Généricité. en Java. (polymorphisme paramétrique) Philippe GENOUD UJF Janvier

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

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

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

Calcul Parallèle. Cours 5 - JAVA RMI

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

INF 321 : mémento de la syntaxe de Java

Traduction des Langages : Le Compilateur Micro Java

Transcription:

Examen 1 ère session 2012-2013 page 1 NFA 032 - Programmation JAVA IPST-CNAM Programmation JAVA NFA 032 Mercredi 25 Juin 2014 Avec document Durée : 2 h30 Enseignant : LAFORGUE Jacques 1 ère Session NFA 032 L'examen se déroule en deux parties. Une première partie de 1h15mn, sans document, consacrée à des questions de cours, et une deuxième partie de 1h 15mn, avec document, consacrée en la réalisation de programmes Java. Au bout de 1h15mn, les copies de la première partie seront ramassées avant de commencer la deuxième partie. Pour la première partie, vous devez rendre le QCM rempli et les réponses aux questions libres écrites sur des copies vierges. Pour la deuxième partie, vous écrivez vos programmes sur des copies vierges. Vous devez écrire les codes commentés en Java. 1 ère PARTIE : COURS (sans document) Durée: 1h15 1. QCM (35 points) 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. +1 pour la réponse bonne 1 pour la réponse fausse les questions à 3 propositions dont 1 seule proposition est bonne + 1 pour la réponse bonne ½ pour chaque réponse fausse les questions à 3 propositions dont 1 seule proposition est fausse + ½ pour chaque réponse bonne 1 pour la réponse fausse Il s'agit de faire une croix dans les cases de droite en face des propositions. On peut remarquer que cocher toutes les propositions d'une question revient à ne rien cocher du tout (égal à 0). 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. Vous avez droit à 4 points négatifs sans pénalité. page 1

Examen 1 ère session 2012-2013 page 2 NFA 032 - Programmation JAVA NOM: PRENOM: Dans une classe abstraite. Q 1. 1 les méthodes doivent être toutes abstraites (une méthode abstraite est une méthode sans code) 2 le constructeur n existe pas et ne peut pas être écrit car il n est pas possible de créer une instance d une classe abstraite 3 les attributs peuvent être de n importe quel genre (public, private, final, static, protected) Tous les attributs d une classe abstraite doivent être protected. Q 2. Une classe abstraite est une classe qui est déclarée "abstract" même si elle ne contient pas de méthodes abstraites Soit les classes A et B qui héritent de C. Les classes A et B ne sont pas abstraites. La classe C est abstraite. Soit la classe Stock contenant l'attribut : ArrayList<C> elements; On peut écrire : 1 elements.add( new A() ) 2 elements.add( new B() ) 3 elements.add( new C() ) Soit deux classes A et B qui héritent de la classe C qui n est pas abstraite. Les classes A et B peuvent surcharger les méthodes publiques de la classe C: Soit la classe C1 qui hérite de C2. C1 n est pas une classe abstraite. C2 est une classe abstraite. Soit le constructeur de C1 : public C1(int x) { super(x) ; Q 3. Q 4. Q 5. Q 6. C1 objetc1 = new C1(100) ; Ce code est correct page 2

Examen 1 ère session 2012-2013 page 3 NFA 032 - Programmation JAVA Soit le code suivant : public class A extends B implements C { private int attr_a; public A() { attr_a = 10; attr_b = "TOTO"; attr_c = 100; Q 7. 1 attr_b est un attribut privé de B 2 attr_b est un attribut public de B 3 attr_c est un attribut protected de C Soit le code suivant : Q 8. X objet = C.m() ; 1 C ne peut pas être une interface. C est nécessairement une classe 2 C peut être une interface En JAVA, une interface peut contenir des attributs statics Q 9. En JAVA, une interface permet de : Q 10. 1 définir des collections polymorphes 2 créer des méthodes abstraites dans une classe non abstraite 3 créer des traitements génériques Soit le code JAVA suivant : public void traitement() { try{ faire(); catch(exception ex){ throw new RuntimeException("erreur"); Q 11. avec la méthode "faire" qui déclenche l'exception "MyException" qui hérite de Exception. Alors : 1 ce code ne se compile pas correctement : il manque dans l'en tête de la méthode la mention : "throws RuntimeException" 2 la méthode "traitement" retourne une RuntimeException 3 ce code ne se compile pas correctement : ce n'est pas "catch(exception ex)" qu'il faut écrire mais "catch(myexception ex)". page 3

Examen 1 ère session 2012-2013 page 4 NFA 032 - Programmation JAVA Soit le code JAVA suivant : public void traitement(string nom) throws Exception { Individu ind=null; try { ind = rechercher(nom); System.out.println(ind.toString()); catch(nontrouveexception ex) { throw new MyException("non trouve"); avec : la méthode 'rechercher' qui retourne l'exception 'NonTrouveException' si le nom de l'individu n'est pas trouvé. Alors : Q 12. 1 si l'individu que l'on veut ajouter n'est pas trouvé alors la méthode retourne l'exception NonTrouveException 2 si l'individu que l'on veut ajouter n'est pas trouvé alors la méthode retourne l'exception Exception 3 si l'individu que l'on veut ajouter n'est pas trouvé alors la méthode retourne l'exception MyException La déclaration de la méthode suivante : public void traitement(string s) throws MyException précise que la méthode retourne l'exception MyException. Soit le code suivant : try{ System.out.println("AAA"); call(); System.out.println("BBB"); catch(exception ex) { System.out.println("CCC"); catch(myexception ex) { System.out.println("DDD"); Q 13. Q 14. avec la méthode call qui déclenche l'exception MyException. Ce code affiche : 1 AAA CCC 2 AAA CCC DDD 3 AAA DDD En Java, la classe Hashtable<K,V> permet de gérer une collection d'éléments dont l'accès se fait par une donnée, appelée Key, et non par un rang comme cela est le cas dans la classe ArrayList Q 15. page 4

Examen 1 ère session 2012-2013 page 5 NFA 032 - Programmation JAVA En Java, la classe Collections permet de trier les éléments de n'importe quelle collection (classe qui implémente l'interface List) grâce à la méthode Collection.sort(List<T> list) Cette méthode fonctionne si la classe d'appartenance, ici T, des éléments de la collection implémente l'interface : 1 Comparator 2 Comparable 3 Comparer En Java, la méthode suivante permet de trier les éléments d une collection : Collection.sort(List<T> list, Comparator<? super T> c) Q 16. Q 17. 1 Comparator est ici une classe prédéfinie du langage Java qui permet de comparer les éléments de la collection 2 Comparator est ici une interface qui contient la méthode void compare(t o1, T o2) qui est utilisée pour comparer les éléments de la collection 3 Comparator est ici une classe abstraite du langage Java qu il faut dériver en une classe qui surcharge la méthode void compare(t o1, T o2) qui est utilisée pour comparer les éléments de la collection Soit le code JAVA suivant : ArrayList<String> liste = new ArrayList<String>(); Collections.addAll(liste,"1","3","3","1","4","5","4"); liste = new ArrayList<String>( new HashSet<String>(liste) ); Q 18. 1 La dernière ligne de ce code enlève de "liste" tous les éléments redondants 2 La dernière ligne de ce code convertit un ensemble en une liste 3 La dernière ligne de ce code n'a pas de sens page 5

Examen 1 ère session 2012-2013 page 6 NFA 032 - Programmation JAVA Le code JAVA suivant définit la structure d'une liste doublement chainée : class Liste { private int nb; // Nombre d'élément de la liste private Cellule prem; // Premier élément de la liste private Cellule dern ; class Cellule { Cellule prec ; // Element précédent Object value; // Valeur de l'élément Cellule suiv; // Element suivant Q 19. Le code correct pour ajouter un élément en fin de liste est : 1 public void add(object value) { Cellule cel = new Cellule(); cel.value = value; nb++; if (prem==null){ prem = cel; dern = cel; else{ cel.prec=dern; cel.suiv=null; dern.suiv=cel; dern=cel; 2 public void add(object value) { Cellule cel = new Cellule(); cel.value = value; nb++; cel.prec=dern; cel.suiv=null; dern.suiv=cel; dern=cel; 3 public void add(object value) { Cellule cel = new Cellule(); cel.value = value; nb++; if (prem==null){ prem = cel; dern = cel; else{ dern=cel; cel.prec=dern; dern.suiv=cel; cel.suiv=null; En Java, une collection polymorphe de contact est une collection qui est créée de la manière suivante : Q 20. 1 ArrayList<?> collection = new ArrayList<?>() 2 ArrayList<ContactAbstract> collection = new ArrayList< ContactAbstract >() où ContactAbstract est une classe abstraite dont héritent toutes les classes d éléments que l on veut ajouter page 6

Examen 1 ère session 2012-2013 page 7 NFA 032 - Programmation JAVA En Java, la méthode non statique suivante de la classe ArrayList : public void sort(), permet de trier les éléments de la liste En Java, on déclare un tableau de la manière suivante : I tab[] = new B[100] où I est une interface et B implémente l'interface I. 1 Cela n'est pas possible 2 Cela est possible et on peut écrire : t[i]=new I(); 3 Cela est possible et on peut écrire : t[i]=new B(); En Java, pour rechercher un élément dans un tableau de Contact, ArrayList<Contact>, on peut utiliser la méthode prédéfinie public boolean contains. Dans ce cas il faut que : 1 la méthode public int compareto(object o) soit implémentée dans la classe Contact 2 la méthode public boolean comparer(object o) soit implémentée dans la classe Contact 3 la méthode public boolean equals(object o) soit implémentée dans la classe Contact Q 21. Q 22. Q 23. La class File ne gère que les fichiers. Pour gérer des répertoires on utilise la classe FileDirectory Q 24. Le code suivant permet de lire une chaine au clavier : BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); String str = in.readline(); Q 25. En JAVA, pour sérialiser un objet, il est nécessaire que la classe d'appartenance de l'objet, implémente l'interface prédéfinie 'Serializable' Q 26. Lequel des 3 codes suivants permet de lire une chaine au clavier : Q 27. 1 InputStream in = System.in); String str = in.readline(); 2 BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); String str = in.readline(); FileInputStream in = new FileInputStream(System.in); String str = in.readline(); Les classes ObjectOutputSream et ObjectInputStream permettent d'écrire et lire dans les fichiers des tableaux contenant n'importe quel objet Le code JAVA suivant, liste les fichiers et les répertoires qui se trouvent sous le répertoire "/home/jl" File varfile = new File("/home/jl"); while(varfile.hasmoredirectory()) System.out.println(varfile.nextDirectory()); Q 28. Q 29. page 7

Examen 1 ère session 2012-2013 page 8 NFA 032 - Programmation JAVA Le code suivant crée un fichier de nom "exemple.txt" dans le répertoire courant d'exécution. Le fichier est créé, vide de toute information FileInputStream fis = new FileInputStream(new File("exemple.txt")); DataInputSream dis = new DataInputStream(fis); dis.close() Q 30. Soit le code suivant : public class Individu implements Serializable {String nom; String prenom; Puis, Individu ind = new Individu(); File fic = new File(".","fic.bin"); FileOutputStream fin = new FileOutputStream(fic); ObjectOutputStream fich = new ObjectOutputStream(fin); fich.writeobject((object)ind); fich.close() ; Ce code est correct On a le code suivant : File fichier = new File("ListeDouble.bin"); FileOutputStream fos = new FileOutputStream(fichier); DataOutputStream dos = new DataOutputStream(fos); dos.writeint(tab.length); for(int i=0;i< tab.length;i++) dos.writedouble( tab[i]); dos.close(); Q 31. Q 32. 1 Ce code crée un fichier de nom 'ListeDouble.bin' contenant la liste de doubles 2 Ce code crée un fichier dont les informations sont dans un format binaire 3 Ce code crée un fichier dont les informations sont dans un format texte Le code JAVA suivant calcule la somme des N premiers nombres entiers positifs récursivement : static int somme(int n) { if (n==0) return 0; else return n + somme(n-1); C e code est correct : En JAVA, les classes DataOutputStream et DataInputStream héritent respectivement de FileOutputStream et FileInputStream afin d'hériter des méthodes d'écriture et de lecture dans un fichier. Q 33. Q 34. La classe ArrayList est une structure de données récursive Q 35. page 8

Examen 1 ère session 2012-2013 page 9 NFA 032 - Programmation JAVA 2. Questions libres (15 points) Chaque question est notée sur 5 points. Vous répondez à ces questions sur une copie vierge en mettant bien le numéro de la question, sans oublier votre nom et prénom. Q 1 Dans la programmation objet, expliquez ce qu'est une collection polymorphe. Citez et expliquez les deux cas, en Java, de création d'une collection Polymorphe. Q 2 Quel est le principe de la sérialisation? A quoi sert la sérialisation? Q 3 En Java, une table de hachage est implémentée par la classe Hashtable. Définir et expliquez le principe de fonctionnement d'une telle table. (Tourner la page) page 9

Examen 1 ère session 2012-2013 page 10 NFA 032 - Programmation JAVA 2 ème PARTIE : PROGRAMMATION (avec document) Durée: 1h15 Problème [50 points] On se propose de créer la classe ReleveBancaire qui contient le relevé bancaire d'un particulier d'un mois donné. Un relevé est constitué des éléments suivants : - le numéro du compte - le mois du relevé - le solde (positif ou négatif) de début du relevé - le solde (positif ou négatif) de fin du relevé - la liste des transactions bancaires réalisées. Il existe deux types de transaction différents, les chèques et les cartes bleues (on ne gère pas ici les autres types : virement, prélèvement,...). La classe abstraite Transaction contient les attributs et méthodes communs aux Cheque et CarteBleue qui héritent de Transaction. Toutes les transactions sont caractérisées par un type de transaction, une date, un libellé et le montant (positif ou négatif). Les chèques sont caractérisés par le numéro de chèque, le nom du bénéficiaire et un état qui indique si un chèque que vous avez déposé sur votre compte n'a pu être honoré. Les cartes bleues sont caractérisées par un indicateur qui indique si la transaction a été faite sur le territoire français ou à à l'extérieur du territoire français. Le "type de transaction" dans la classe Transaction est : - 1 s'il s'agit d'un chèque honoré - 2 s'il s'agit d'un chèque non honoré - 3 s'il s'agit d'une carte bleue national - 4 s'il s'agit d'une carte bleue à l'étranger. 1/ Ecrire les attributs et les constructeurs des classes ReleveBancaire, Transaction, Cheque et CarteBleu. 2/ Ecrire la méthode générique de la classe ReleveBancaire: public void creerfichiertexte() Cette méthode écrit dans un fichier texte le relevé bancaire dans sa totalité afin qu'il soit lu en éditant tout simplement le fichier. Le nom du fichier est la concaténation du numero de compte et du mois du relevé avec l'extension.txt. Il faut que cette méthode soit suffisamment générique pour que nous n'ayons pas à la modifier dans le cas où on voudrait créer un nouveau type de transaction (une nouvelle classe qui hériterait de Transaction). Vous écrivez bien sur, si besoin, les méthodes des classes Transaction, Cheque et CarteBleue dont vous avez besoin pour écrire la méthode creerfichiertexte. NB: vous n'avez pas besoin d'écrire les getteurs et setteurs des attributs. Vous vous les donnez. Vous devez obtenir un relevé le plus proche de cet exemple : page 10

Examen 1 ère session 2012-2013 page 11 NFA 032 - Programmation JAVA Compte : Mois : 8910Y Janvier Debut de solde : 2345.56 Les transactions: 25/05/2014 Courses 345,60 0123457 Carrefour 25/05/2014 Coiffeur 45,60 0123456 Mr Durand pas honore 25/05/2014 Depot 200,00 0004534 Mr Dupont pas honore 25/05/2014 App photo 53,00 25/05/2014 Essence 65,78 etranger 25/05/2014 App photo 53,00 etranger Fin de solde : 123.4 3/ Ecrire la méthode qui permet de trier le relevé bancaire par "type de transaction" puis dans chacun des types par date croissante. (Fin du sujet) page 11