Test et QCM JAVA Auteur Agnès Guerraz Date : Octobre 2006 Module : TC2 Instructions pour le QCM : Ce Test / QCM sert à vérifier vos connaissances du langage java. Cochez le ou les réponses parmi les choix proposés, vous pouvez ajouter des explications supplémentaires aux choix que vous proposez. Répondez par des phrases aux questions posées. 1. Classe et constructeur 1. 2. 3. 4. Donner la définition d'une classe ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ Quelle est la visibilité d'une classe publique, quelle est la visibilité par défaut? ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ Qu'est-ce qu'une classe abstraite ? Quelle est la syntaxe Java pour la définir ? ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ Qu'est-ce qu'une méthode de classe? Quelle syntaxe java permet de définir une telle méthode ? ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ 5. Qu'est-ce qu'une sous-classe d'une classe ? quelle syntaxe java permet de définir une sous-classe? ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ 6. Que se passe-t-il lorsqu'une classe possède le modificateur final ? ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ 7. A quoi sert un constructeur ? ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ 8. Que fait le compilateur lorsque le programmeur n'a pas défini de constructeur ? ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ 9. Que fait l'instruction super(); ? ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ 10. Cocher la ou les réponses correctes a Une classe peut implémenter plusieurs interfaces mais doit étendre une seule classe. b Une classe peut implémenter plusieurs classes mais doit étendre une seule interface. c Une classe peut implémenter plusieurs classes et peut étendre plusieurs interfaces. d Une classe doit implémenter une seule interface et étendre une seule classe. 2. Chaîne de développement java 1. Java est un langage a b c d Compilé Interprété Compilé et interprèté Ni compilé ni interprété 2. La commande permettant d'exécuter une application java est : a b c javac java exec 3. La commande permettant de compiler un programme java est : a b c javac java exec 4. Un fichier contenant un programme source java doit posséder l'extension : a b c d jav exe class java 5. Quand un programme java est compilé, le fichier généré possède l'extension : a b c d jav exe class java 6. Quand un programme java est compilé, le fichier généré est placé dans : a le répertoire courant le répertoire du fichier source b le répertoire du dessus c le répertoire du dessous d le répertoire "java" 7. Quels sont les noms possibles pour un fichier contenant la classe "Voiture" ? a Voiture b voiture c TestVoiture.java d Voiture.java e voiture.java f voiture.Java 8. Pour exécuter une application java, la classe correspondante doit obligatoirement contenir une méthode main. a Faux b Vrai 9. Pour exécuter une application java dont le programme source est dans le fichier "Test.java", je dois taper : a javac Test b javac Test.java c java Test.java d javac Test e java Test f java Test.class 10. Si ce programme est défini dans un package de nom MonAppli, quelle commande je dois lancer et depuis quel répertoire ? ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ 3. Programmation 1. Combien d’instances de la classe A crée le code suivant ? A x,u,v; x=new A(); A y=x; A z=new A(); a Aucune b Cinq c Trois d Deux 2. Pour la classe B définie comme suit: class B { public B(){ System.out.print(”Ciao”); }; public B(int i) { this(); System.out.println(”Bonjour ”+i);}; } quel sera le résultat de l'appel suivant ? B monB=new B(2007); a b c d une erreur de compilation une erreur d’exécution l'affichage sur la console de "CiaoBonjour 2007" l'affichage sur la console de "Bonjour 2007" 3. Héritage, attributs et méthodes (1) class ClasseA { double x ; } class ClasseB extends ClasseA { int x ; } class ClasseC extends ClasseB { char x ; } Dans une méthode de la ClasseC, quelle variable (en donner le type) est désignée par : x : this.x : super.x : ((ClasseB) this).x : ((ClasseA) this).x : super.super.x : 4. Héritage, attributs et méthodes (2) class ClasseA{… public void affiche(){ System.out.println("je suis un objet de ClasseA") ;} } class ClasseB extends ClasseA{… public void affiche(){ System.out.println("je suis un objet de ClasseB")} ;… } Quel est le résultat de l'exécution du programme suivant ? public class ClasseTest{ public void main(String [] args) { ClasseB b = new ClasseB() ; b.affiche() ; } } 5. Héritage, attributs et méthodes (3) class ClasseA{ public void affiche(){ System.out.println("je suis un objet de ClasseA") ;} } class ClasseB extends ClasseA{ // pas de redéfinition de la méthode affiche } class ClasseC extends ClasseB{ public void affiche(){ super.affiche() ; System.out.println("je suis un objet de ClasseC");} } Quel est le résultat de l'exécution du programme suivant ? public class ClasseTest{ public void main(String [] args) { ClasseC c = new ClasseC() ; c.affiche() ; } } 6. Héritage, attributs et méthodes (4) class ClasseA{ public int i = 12 ; public int f(){return i;} public static char g(){return 'A';} } class ClasseB extends ClasseA{ public int i = 6 ; public int f(){return -i;} public static char g(){return 'B';} } La suite d'instructions ci-dessous est définie dans la méthode main() de la classe ClasseTest. Compléter le tableau suivant de façon à indiquer l'action effectuée par l'exécution de chacune des instructions de ce programme : instruction valeur affichée commentaire ClasseB b = new ClasseB() ; System.out.println(b.i); System.out.println(b.f()); System.out.println(b.g()); System.out.println(ClasseB.g()); ClasseA a = (ClasseA) b ; System.out.println(a.i); System.out.println(a.f()); System.out.println(a.g()); System.out.println(ClasseA.g()); 7 Exceptions 7.1/ Quels types d'exception peuvent être attrapés par le cath() suivant ? catch (Exception e) { } 7.2/ Quel est l'inconvénient d'employer ce type de cath() d'exception ? 8 E/S Que retourne une lecture séquentiel pour nous prévenir que nous sommes arrivé à la fin du fichier? a EndOfFile() b endOfFile() c EndOffile() 9 E/S Quel type donnée nous renvoie une lecture dans un fichier? a Un booléen b Un substring() c Un String 10 E/S Ecrire le résultat de l'exécution du code suivant: StringTokenizer tokens = new StringTokenizer("These are the times."); System.out.println( tokens.countTokens()); // Should be 4. while (tokens.hasMoreTokens()) System.out.println( tokens.nextToken()); 11 E/S L'objet appelé in, nous permet d'obtenir des caractères à partir du dossier mydata.txt, il est passé par le FileReader et plus tard passé par le BufferedReader comme suit: BufferedReader in = new BufferedReader(new FileReader("mydata.txt")); Ecrire le code permettant de lire une ligne à partir du fichier.