SlideShare une entreprise Scribd logo
QCM de Java corrig´
                                                 e
1. Java est un langage
    (a)    Compil´
                 e
    (b)    Interpr´t´
                  ee
    (c)    Compil´ et interpr´t´
                 e           ee
    (d)    Ni compil´ ni interpr´t´
                    e           ee
           Le compilateur compile le code source vers un bytecode, la machine virtuelle Java
           (JVM) interpr`te ce bytecode
                         e
2. Java est un langage d´velopp´ par
                        e      e
    (a)    Hewlett-Packard
    (b)    Sun Microsystems
    (c)    Microsoft
    (d)    Oracle
           Par James Gosling chez Sun.
3. Combien d’instances de la classe A cr´e le code suivant?
                                        e
  A x,u,v;
  x=new A();
  A y=x;
  A z=new A();

    (a)    Aucune
    (b)    Cinq
    (c)    Trois
    (d)    Deux
           Il y a deux instances de A cr´´es par les deux new, la premi`re est r´f´renc´e par x
                                        ee                             e        ee     e
           et y, la deuxi`me par z.
                         e
4. Pour la classe B d´finie comme suit:
                     e
  class B {
  public B(){System.out.print(”Ciao”);};
  public B(int i) {this(); System.out.println(”Bonjour ”+i);};
  }

  qu’affichera l’instruction suivante?
  B monB=new B(2003);

    (a)    erreur de compilation
    (b)    erreur d’ex´cution
                      e
    (c)    CiaoBonjour 2003
    (d)    Bonjour 2003
           L’instruction invoque le constructeur avec un argument entier (2003). Ce dernier
           appelle explicitement le constructeur sans arguments (this()) qui imprime ”Ciao”,
           et ensuite le message ”Bonjour 2003” est imprim´.e




                                                  1
5.
     (a)   Une classe peut impl´menter plusieurs interfaces mais doit ´tendre une seule classe
                               e                                      e
     (b)   Une classe peut impl´menter plusieurs classes mais doit ´tendre une seule interface
                               e                                   e
     (c)   Une classe peut impl´menter plusieurs classes et peut ´tendre plusieurs interfaces
                               e                                 e
     (d)   Une classe doit impl´menter une seule interface et ´tendre une seule classe
                               e                              e
           C’est comme ¸a
                       c
6. La liaison tardive est essentielle pour assurer
     (a)   l’encapsulation
     (b)   le polymorphisme
     (c)   l’h´ritage
              e
     (d)   la marginalisation
           La marginalisation n’a rien a voir avec la programmation. La liaison tardive dy-
                                         `
           namique permet d’utiliser pour chaque objet sa propre version d’une m´thode (en
                                                                                     e
           fonction de la classe de l’objet d´termin´e a l’ex´cution). Ceci permet d’obtenir un
                                             e      e `      e
           code polymorphe.
   ´
7. Etant donn´ que la classe Grande ´tend la classe Petite, trouvez une ligne correcte parmi les
             e                      e
   suivantes
     (a)   Petite y =new Petite(); Grande x= (Grande)y; Petite z=x;
           La deuxi`me affectation Grande x= (Grande)y; essaye de transformer un objet
                    e
           (r´f´renc´ par y) de la classe Petite vers un objet de sa sous-classe Grande. Un
             ee     e
           tel downcasting est impossible.
     (b)   Grande x= new Grande(); Petite y = x; Grande z=(Grande)y;
           Tout va bien. On cr´e un objet de classe Grande r´f´renc´ par x. Ensuite on fait
                                 e                              ee      e
           une variable y (de type Petite) r´f´rencer le mˆme objet – c’est un upcasting explicite
                                            ee            e
                                      `
           qui est toujours possible. A la fin on fait encore une r´f´rence z (cette fois Grande)
                                                                   ee
           sur ce mˆme objet. Ce dernier downcasting est possible parce que l’objet est en fait
                    e
           une instance de la classe Grande.
     (c)   Grande x= new Grande(); Petite y = x; Grande z=y;
           C’est presque comme dans le cas pr´c´dent, mais la derni`re affectation Grande
                                              e e                       e
           z=(Grande)y; est un downcasting implicite, ce qui est interdit.
     (d)   Petite y =new Petite(); Grande x= (Grande)y; Petite z=(Petite)x;
           Grande x=(Grande)y; est un downcasting impossible, comme dans le (a).




                                               2
8. Pour la classe C d´finie comme suit:
                     e
  class C {
  public static int i;
  public int j;
  public C() {i++; j=i; }
   }

  qu’affichera le code suivant?
  C x=new C(); C y=new C(); C z= x;
  System.out.println(z.i + ” et ” + z.j);

    (a)    2 et 2
    (b)    1 et 1
    (c)    2 et 1
    (d)    1 et 3
           On remarque d’abord, que i est une variable (statique) de classe commune a toutes
                                                                                           `
           les instances, tandis que chaque objet de la classe a son propre j. Donc, apr`s       e
           la premi`re affectation on a i=1, x.j=1; apr`s la deuxi`me: i=2, y.j=2 (x.j a rest´
                    e                                     e           e                           e
           inchang´ et ´gal a 1); la troisi`me n’appelle pas le constructeur mais fait z r´f´rencer
                   e e      `              e                                              ee
           le mˆme objet que x. D’o` z.i est la valeur globale de i, c-`-d 2, et z.j=x.j=1.
                e                     u                                 a
9. Pour les classes A et B d´finies comme suit:
                            e
  class A {                                 class B extends A {
  public int x;                             public B() {x++;}
  public A() {x=5; }                        public B(int i){this(); x=x+i; }
  }                                         public B(String s){super(); x- -; }
                                            }

  qu’affichera le code suivant?
  B b1=new B(); B b2 =new B(2003); B b3= new B(”Bonjour”);
  System.out.println(b1.x + ” et ” + b2.x + ” et encore ” + b3.x );


    (a)    6 et 2009 et encore 4
    (b)    1 et 2004 et encore 4
    (c)    1 et 2004 et encore 2003
    (d)    autre chose
           Le constructeur B() n’appelle explicitement ni this(), ni super(). Donc, par con-
           vention, le constructeur de la super-classe A est appel´ (implicitement) avant de
                                                                  e
           proc´der. Ceci donne b1.x=6. Le constructeur B(2003) appelle le constructeur
               e
           pr´c´dent avec le this(), ce qui donne b2.x=6. Ensuite on y ajoute 2003, ce qui
             e e
           donne finalement b2.x=2009 Le constructeur B(”Bonjour”) appelle le constructeur
           de la super-classe A avec le super(). Ceci donne b3.x=5. Ensuite on le decr´mente
                                                                                      e
           et on a finalement b3.x=4.




                                                    3
10. Pour les classes Machin et Bidul d´finies comme suit:
                                      e
   class Machin {                            class Bidul extends Machin {
   public int f() {return(5) };              public int f() {return(2) };
   public static int g() {return (6);}       public static int g() {return (4); }
   }                                         }

   qu’affichera le code suivant?
   Bidul b=new Bidul(); Machin m =b;
   System.out.println(m.f()*m.g());

     (a)    30
     (b)    20
     (c)    8
     (d)    12
            La methode g est statique, la version utilis´e est d´termin´e par le compilateur en
                                                          e        e      e
            fonction du type de la r´f´rence. Comme m est une r´f´rence Machin, m.g() - c’est
                                     ee                              ee
            toujours la m´thode g de la classe Machin (valeur 6). Pour f tout est diff´rent: sa
                           e                                                              e
            version utilis´e est d´termin´e dynamiquement (` l’execution)par la JVM en fonc-
                          e        e      e                     a
            tion du type de l’objet. Dans le cas de m.f(), m fait r´f´rence a une instance de Bidul,
                                                                   ee       `
            c’est donc la version de f red´finie dans la classe Bidul qui est invoqu´e (valeur 2).
                                           e                                          e
            D’o` la r´ponse.
                u     e




                                               4

Contenu connexe

Tendances

diagramme de classe
diagramme de classediagramme de classe
diagramme de classe
Amir Souissi
 
Design patterns french
Design patterns frenchDesign patterns french
Design patterns french
meriem sari
 
Tp1 - WS avec JAXWS
Tp1 - WS avec JAXWSTp1 - WS avec JAXWS
Tp1 - WS avec JAXWS
Lilia Sfaxi
 
Systèmes multi agents concepts et mise en oeuvre avec le middleware jade
Systèmes multi agents concepts et mise en oeuvre avec le middleware jadeSystèmes multi agents concepts et mise en oeuvre avec le middleware jade
Systèmes multi agents concepts et mise en oeuvre avec le middleware jade
ENSET, Université Hassan II Casablanca
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
ENSET, Université Hassan II Casablanca
 
Devoirs Algorithme + correction pour 4 si
Devoirs Algorithme + correction pour 4 siDevoirs Algorithme + correction pour 4 si
Devoirs Algorithme + correction pour 4 siNarûtö Bàl'Sèm
 
Support POO Java première partie
Support POO Java première partieSupport POO Java première partie
Support POO Java première partie
ENSET, Université Hassan II Casablanca
 
Rapport j2ee: Gestion d’un compte bancaire En utilisant les EJB 3.0
Rapport j2ee: Gestion d’un compte bancaire En utilisant les EJB 3.0Rapport j2ee: Gestion d’un compte bancaire En utilisant les EJB 3.0
Rapport j2ee: Gestion d’un compte bancaire En utilisant les EJB 3.0
Ayoub Rouzi
 
cour de compilation
cour de compilation cour de compilation
cour de compilation Ens Kouba
 
Chap5 diagramme d'etats-transitions
Chap5 diagramme d'etats-transitionsChap5 diagramme d'etats-transitions
Chap5 diagramme d'etats-transitions
Amir Souissi
 
UML Part2- diagramme des uses cases_mansouri
UML Part2- diagramme des uses cases_mansouriUML Part2- diagramme des uses cases_mansouri
UML Part2- diagramme des uses cases_mansouri
Mansouri Khalifa
 
Cours access
Cours accessCours access
Cours accesskourbali
 
Support Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFISupport Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFI
ENSET, Université Hassan II Casablanca
 
Support JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVCSupport JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVC
ENSET, Université Hassan II Casablanca
 
Développement Web - Module 1 - Introduction
Développement Web - Module 1 - IntroductionDéveloppement Web - Module 1 - Introduction
Développement Web - Module 1 - IntroductionMohammed Amine Mostefai
 
introduction à la modélisation objet
introduction à la modélisation objetintroduction à la modélisation objet
introduction à la modélisation objet
Amir Souissi
 
556ef78d93c3b
556ef78d93c3b556ef78d93c3b
556ef78d93c3b
zineb taki
 
Applications Android - cours 13 : Connectivité et services Web
Applications Android - cours 13 : Connectivité et services WebApplications Android - cours 13 : Connectivité et services Web
Applications Android - cours 13 : Connectivité et services Web
Ahmed-Chawki Chaouche
 

Tendances (20)

diagramme de classe
diagramme de classediagramme de classe
diagramme de classe
 
Design patterns french
Design patterns frenchDesign patterns french
Design patterns french
 
Tp1 - WS avec JAXWS
Tp1 - WS avec JAXWSTp1 - WS avec JAXWS
Tp1 - WS avec JAXWS
 
UML Diagrammes Statiques
UML Diagrammes StatiquesUML Diagrammes Statiques
UML Diagrammes Statiques
 
Systèmes multi agents concepts et mise en oeuvre avec le middleware jade
Systèmes multi agents concepts et mise en oeuvre avec le middleware jadeSystèmes multi agents concepts et mise en oeuvre avec le middleware jade
Systèmes multi agents concepts et mise en oeuvre avec le middleware jade
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
 
Devoirs Algorithme + correction pour 4 si
Devoirs Algorithme + correction pour 4 siDevoirs Algorithme + correction pour 4 si
Devoirs Algorithme + correction pour 4 si
 
Support POO Java première partie
Support POO Java première partieSupport POO Java première partie
Support POO Java première partie
 
Rapport j2ee: Gestion d’un compte bancaire En utilisant les EJB 3.0
Rapport j2ee: Gestion d’un compte bancaire En utilisant les EJB 3.0Rapport j2ee: Gestion d’un compte bancaire En utilisant les EJB 3.0
Rapport j2ee: Gestion d’un compte bancaire En utilisant les EJB 3.0
 
cour de compilation
cour de compilation cour de compilation
cour de compilation
 
Chap5 diagramme d'etats-transitions
Chap5 diagramme d'etats-transitionsChap5 diagramme d'etats-transitions
Chap5 diagramme d'etats-transitions
 
UML Part2- diagramme des uses cases_mansouri
UML Part2- diagramme des uses cases_mansouriUML Part2- diagramme des uses cases_mansouri
UML Part2- diagramme des uses cases_mansouri
 
Cours access
Cours accessCours access
Cours access
 
Support Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFISupport Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFI
 
Support JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVCSupport JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVC
 
Développement Web - Module 1 - Introduction
Développement Web - Module 1 - IntroductionDéveloppement Web - Module 1 - Introduction
Développement Web - Module 1 - Introduction
 
introduction à la modélisation objet
introduction à la modélisation objetintroduction à la modélisation objet
introduction à la modélisation objet
 
556ef78d93c3b
556ef78d93c3b556ef78d93c3b
556ef78d93c3b
 
Cours java
Cours javaCours java
Cours java
 
Applications Android - cours 13 : Connectivité et services Web
Applications Android - cours 13 : Connectivité et services WebApplications Android - cours 13 : Connectivité et services Web
Applications Android - cours 13 : Connectivité et services Web
 

En vedette

French Project
French ProjectFrench Project
French Project
cesca188
 
Informatica educativa
Informatica educativaInformatica educativa
Informatica educativa
oswaldobaez
 
Present prueba
Present pruebaPresent prueba
Present prueba
jesuscabo
 
Diapositivas de 102
Diapositivas de 102Diapositivas de 102
Diapositivas de 102
gpool-scout
 
Presentación power point
Presentación power pointPresentación power point
Presentación power point
chaves52
 
Evolución de estos materiales.actividadsemana1
Evolución de estos materiales.actividadsemana1Evolución de estos materiales.actividadsemana1
Evolución de estos materiales.actividadsemana1
Elsa Janeth Cortes Camelo
 
Procédure
ProcédureProcédure
Procédurefastoph
 
El elefante sumiso
El elefante sumisoEl elefante sumiso
El elefante sumiso
LIZETHALLAUCA
 
Diapositivas vih sida
Diapositivas vih sidaDiapositivas vih sida
Diapositivas vih sida
Rousseau Edinson Paredes Tenazoa
 
Lectura1
Lectura1Lectura1
Lectura1
henryseru
 
Pop
PopPop
La mujer ..
La mujer ..La mujer ..
Taller n° 2b
Taller n° 2bTaller n° 2b
Taller n° 2b
Gianinna CB
 
Presentacion lina araujo
Presentacion lina araujoPresentacion lina araujo
Presentacion lina araujo
49700451
 
Colegio nacional nicolas esguerra
Colegio nacional nicolas esguerraColegio nacional nicolas esguerra
Colegio nacional nicolas esguerra
Felipe Tovar
 
Curso de Email Marketing 201506
Curso de Email Marketing 201506Curso de Email Marketing 201506
Curso de Email Marketing 201506
Bernardo Martinez
 
Newsletter #18 - Le Hibou Agence .V. du 17 aout 2012
Newsletter #18 - Le Hibou Agence .V. du 17 aout 2012Newsletter #18 - Le Hibou Agence .V. du 17 aout 2012
Newsletter #18 - Le Hibou Agence .V. du 17 aout 2012Le Hibou
 
Ensayo n maiz inta 2011
Ensayo n maiz inta 2011Ensayo n maiz inta 2011
Ensayo n maiz inta 2011
NUTRIX S.A.
 
Trabajo pràctico nº2 tcs urdiro quiroz
Trabajo pràctico nº2 tcs urdiro quirozTrabajo pràctico nº2 tcs urdiro quiroz
Trabajo pràctico nº2 tcs urdiro quiroz
deboquiroz
 
Marcel presentacion
Marcel presentacionMarcel presentacion
Marcel presentacion
materanooo
 

En vedette (20)

French Project
French ProjectFrench Project
French Project
 
Informatica educativa
Informatica educativaInformatica educativa
Informatica educativa
 
Present prueba
Present pruebaPresent prueba
Present prueba
 
Diapositivas de 102
Diapositivas de 102Diapositivas de 102
Diapositivas de 102
 
Presentación power point
Presentación power pointPresentación power point
Presentación power point
 
Evolución de estos materiales.actividadsemana1
Evolución de estos materiales.actividadsemana1Evolución de estos materiales.actividadsemana1
Evolución de estos materiales.actividadsemana1
 
Procédure
ProcédureProcédure
Procédure
 
El elefante sumiso
El elefante sumisoEl elefante sumiso
El elefante sumiso
 
Diapositivas vih sida
Diapositivas vih sidaDiapositivas vih sida
Diapositivas vih sida
 
Lectura1
Lectura1Lectura1
Lectura1
 
Pop
PopPop
Pop
 
La mujer ..
La mujer ..La mujer ..
La mujer ..
 
Taller n° 2b
Taller n° 2bTaller n° 2b
Taller n° 2b
 
Presentacion lina araujo
Presentacion lina araujoPresentacion lina araujo
Presentacion lina araujo
 
Colegio nacional nicolas esguerra
Colegio nacional nicolas esguerraColegio nacional nicolas esguerra
Colegio nacional nicolas esguerra
 
Curso de Email Marketing 201506
Curso de Email Marketing 201506Curso de Email Marketing 201506
Curso de Email Marketing 201506
 
Newsletter #18 - Le Hibou Agence .V. du 17 aout 2012
Newsletter #18 - Le Hibou Agence .V. du 17 aout 2012Newsletter #18 - Le Hibou Agence .V. du 17 aout 2012
Newsletter #18 - Le Hibou Agence .V. du 17 aout 2012
 
Ensayo n maiz inta 2011
Ensayo n maiz inta 2011Ensayo n maiz inta 2011
Ensayo n maiz inta 2011
 
Trabajo pràctico nº2 tcs urdiro quiroz
Trabajo pràctico nº2 tcs urdiro quirozTrabajo pràctico nº2 tcs urdiro quiroz
Trabajo pràctico nº2 tcs urdiro quiroz
 
Marcel presentacion
Marcel presentacionMarcel presentacion
Marcel presentacion
 

Similaire à Qc mcorrige

Trivial java First
Trivial java FirstTrivial java First
Trivial java First
Katia Aresti
 
Trivial Java Second
Trivial Java SecondTrivial Java Second
Trivial Java Second
Katia Aresti
 
Td serie a-abstract-cast-heritage
Td serie a-abstract-cast-heritageTd serie a-abstract-cast-heritage
Td serie a-abstract-cast-heritageAmel Morchdi
 
Correction Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdfCorrection Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdf
slimyaich3
 
Cours c++
Cours c++Cours c++
Cours c++
Nahla BelHaj
 
Cours de C++, en français, 2002 - Cours 2.2
Cours de C++, en français, 2002 - Cours 2.2Cours de C++, en français, 2002 - Cours 2.2
Cours de C++, en français, 2002 - Cours 2.2
Laurent BUNIET
 
POO - Chapitre6.pptx
POO - Chapitre6.pptxPOO - Chapitre6.pptx
POO - Chapitre6.pptx
RAYENBOUAFIF1
 
Cours de C++, en français, 2002 - Cours 2.5
Cours de C++, en français, 2002 - Cours 2.5Cours de C++, en français, 2002 - Cours 2.5
Cours de C++, en français, 2002 - Cours 2.5
Laurent BUNIET
 
Clonage d'objets
Clonage d'objetsClonage d'objets
Clonage d'objets
MohammedElaminTebib
 
C# et .NET : Enigmes et puzzles
C# et .NET : Enigmes  et puzzlesC# et .NET : Enigmes  et puzzles
C# et .NET : Enigmes et puzzles
Microsoft
 
Trivial Java Second
Trivial Java SecondTrivial Java Second
Trivial Java SecondKatia Aresti
 
Memo java
Memo javaMemo java
Memo java
Ghazouani Mahdi
 
Héritage et redéfinition de méthode
Héritage et redéfinition de méthodeHéritage et redéfinition de méthode
Héritage et redéfinition de méthode
ECAM Brussels Engineering School
 
cours1.ppt
cours1.pptcours1.ppt
cours1.ppt
RihabBENLAMINE
 
cours2.ppt
cours2.pptcours2.ppt
cours2.ppt
asmachehbi
 

Similaire à Qc mcorrige (20)

Trivial java First
Trivial java FirstTrivial java First
Trivial java First
 
Trivial Java - Part 1
Trivial Java - Part 1Trivial Java - Part 1
Trivial Java - Part 1
 
Trivial Java - Part 2
Trivial Java - Part 2Trivial Java - Part 2
Trivial Java - Part 2
 
Trivial Java Second
Trivial Java SecondTrivial Java Second
Trivial Java Second
 
Td serie a-abstract-cast-heritage
Td serie a-abstract-cast-heritageTd serie a-abstract-cast-heritage
Td serie a-abstract-cast-heritage
 
Correction Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdfCorrection Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdf
 
2006 2007-heritage-en-c++
2006 2007-heritage-en-c++2006 2007-heritage-en-c++
2006 2007-heritage-en-c++
 
Cours c++
Cours c++Cours c++
Cours c++
 
Cours de C++, en français, 2002 - Cours 2.2
Cours de C++, en français, 2002 - Cours 2.2Cours de C++, en français, 2002 - Cours 2.2
Cours de C++, en français, 2002 - Cours 2.2
 
POO - Chapitre6.pptx
POO - Chapitre6.pptxPOO - Chapitre6.pptx
POO - Chapitre6.pptx
 
Cours de C++, en français, 2002 - Cours 2.5
Cours de C++, en français, 2002 - Cours 2.5Cours de C++, en français, 2002 - Cours 2.5
Cours de C++, en français, 2002 - Cours 2.5
 
Clonage d'objets
Clonage d'objetsClonage d'objets
Clonage d'objets
 
Ch10
Ch10Ch10
Ch10
 
C# et .NET : Enigmes et puzzles
C# et .NET : Enigmes  et puzzlesC# et .NET : Enigmes  et puzzles
C# et .NET : Enigmes et puzzles
 
Trivial Java Second
Trivial Java SecondTrivial Java Second
Trivial Java Second
 
Part1
Part1Part1
Part1
 
Memo java
Memo javaMemo java
Memo java
 
Héritage et redéfinition de méthode
Héritage et redéfinition de méthodeHéritage et redéfinition de méthode
Héritage et redéfinition de méthode
 
cours1.ppt
cours1.pptcours1.ppt
cours1.ppt
 
cours2.ppt
cours2.pptcours2.ppt
cours2.ppt
 

Qc mcorrige

  • 1. QCM de Java corrig´ e 1. Java est un langage (a) Compil´ e (b) Interpr´t´ ee (c) Compil´ et interpr´t´ e ee (d) Ni compil´ ni interpr´t´ e ee Le compilateur compile le code source vers un bytecode, la machine virtuelle Java (JVM) interpr`te ce bytecode e 2. Java est un langage d´velopp´ par e e (a) Hewlett-Packard (b) Sun Microsystems (c) Microsoft (d) Oracle Par James Gosling chez Sun. 3. Combien d’instances de la classe A cr´e le code suivant? e A x,u,v; x=new A(); A y=x; A z=new A(); (a) Aucune (b) Cinq (c) Trois (d) Deux Il y a deux instances de A cr´´es par les deux new, la premi`re est r´f´renc´e par x ee e ee e et y, la deuxi`me par z. e 4. Pour la classe B d´finie comme suit: e class B { public B(){System.out.print(”Ciao”);}; public B(int i) {this(); System.out.println(”Bonjour ”+i);}; } qu’affichera l’instruction suivante? B monB=new B(2003); (a) erreur de compilation (b) erreur d’ex´cution e (c) CiaoBonjour 2003 (d) Bonjour 2003 L’instruction invoque le constructeur avec un argument entier (2003). Ce dernier appelle explicitement le constructeur sans arguments (this()) qui imprime ”Ciao”, et ensuite le message ”Bonjour 2003” est imprim´.e 1
  • 2. 5. (a) Une classe peut impl´menter plusieurs interfaces mais doit ´tendre une seule classe e e (b) Une classe peut impl´menter plusieurs classes mais doit ´tendre une seule interface e e (c) Une classe peut impl´menter plusieurs classes et peut ´tendre plusieurs interfaces e e (d) Une classe doit impl´menter une seule interface et ´tendre une seule classe e e C’est comme ¸a c 6. La liaison tardive est essentielle pour assurer (a) l’encapsulation (b) le polymorphisme (c) l’h´ritage e (d) la marginalisation La marginalisation n’a rien a voir avec la programmation. La liaison tardive dy- ` namique permet d’utiliser pour chaque objet sa propre version d’une m´thode (en e fonction de la classe de l’objet d´termin´e a l’ex´cution). Ceci permet d’obtenir un e e ` e code polymorphe. ´ 7. Etant donn´ que la classe Grande ´tend la classe Petite, trouvez une ligne correcte parmi les e e suivantes (a) Petite y =new Petite(); Grande x= (Grande)y; Petite z=x; La deuxi`me affectation Grande x= (Grande)y; essaye de transformer un objet e (r´f´renc´ par y) de la classe Petite vers un objet de sa sous-classe Grande. Un ee e tel downcasting est impossible. (b) Grande x= new Grande(); Petite y = x; Grande z=(Grande)y; Tout va bien. On cr´e un objet de classe Grande r´f´renc´ par x. Ensuite on fait e ee e une variable y (de type Petite) r´f´rencer le mˆme objet – c’est un upcasting explicite ee e ` qui est toujours possible. A la fin on fait encore une r´f´rence z (cette fois Grande) ee sur ce mˆme objet. Ce dernier downcasting est possible parce que l’objet est en fait e une instance de la classe Grande. (c) Grande x= new Grande(); Petite y = x; Grande z=y; C’est presque comme dans le cas pr´c´dent, mais la derni`re affectation Grande e e e z=(Grande)y; est un downcasting implicite, ce qui est interdit. (d) Petite y =new Petite(); Grande x= (Grande)y; Petite z=(Petite)x; Grande x=(Grande)y; est un downcasting impossible, comme dans le (a). 2
  • 3. 8. Pour la classe C d´finie comme suit: e class C { public static int i; public int j; public C() {i++; j=i; } } qu’affichera le code suivant? C x=new C(); C y=new C(); C z= x; System.out.println(z.i + ” et ” + z.j); (a) 2 et 2 (b) 1 et 1 (c) 2 et 1 (d) 1 et 3 On remarque d’abord, que i est une variable (statique) de classe commune a toutes ` les instances, tandis que chaque objet de la classe a son propre j. Donc, apr`s e la premi`re affectation on a i=1, x.j=1; apr`s la deuxi`me: i=2, y.j=2 (x.j a rest´ e e e e inchang´ et ´gal a 1); la troisi`me n’appelle pas le constructeur mais fait z r´f´rencer e e ` e ee le mˆme objet que x. D’o` z.i est la valeur globale de i, c-`-d 2, et z.j=x.j=1. e u a 9. Pour les classes A et B d´finies comme suit: e class A { class B extends A { public int x; public B() {x++;} public A() {x=5; } public B(int i){this(); x=x+i; } } public B(String s){super(); x- -; } } qu’affichera le code suivant? B b1=new B(); B b2 =new B(2003); B b3= new B(”Bonjour”); System.out.println(b1.x + ” et ” + b2.x + ” et encore ” + b3.x ); (a) 6 et 2009 et encore 4 (b) 1 et 2004 et encore 4 (c) 1 et 2004 et encore 2003 (d) autre chose Le constructeur B() n’appelle explicitement ni this(), ni super(). Donc, par con- vention, le constructeur de la super-classe A est appel´ (implicitement) avant de e proc´der. Ceci donne b1.x=6. Le constructeur B(2003) appelle le constructeur e pr´c´dent avec le this(), ce qui donne b2.x=6. Ensuite on y ajoute 2003, ce qui e e donne finalement b2.x=2009 Le constructeur B(”Bonjour”) appelle le constructeur de la super-classe A avec le super(). Ceci donne b3.x=5. Ensuite on le decr´mente e et on a finalement b3.x=4. 3
  • 4. 10. Pour les classes Machin et Bidul d´finies comme suit: e class Machin { class Bidul extends Machin { public int f() {return(5) }; public int f() {return(2) }; public static int g() {return (6);} public static int g() {return (4); } } } qu’affichera le code suivant? Bidul b=new Bidul(); Machin m =b; System.out.println(m.f()*m.g()); (a) 30 (b) 20 (c) 8 (d) 12 La methode g est statique, la version utilis´e est d´termin´e par le compilateur en e e e fonction du type de la r´f´rence. Comme m est une r´f´rence Machin, m.g() - c’est ee ee toujours la m´thode g de la classe Machin (valeur 6). Pour f tout est diff´rent: sa e e version utilis´e est d´termin´e dynamiquement (` l’execution)par la JVM en fonc- e e e a tion du type de l’objet. Dans le cas de m.f(), m fait r´f´rence a une instance de Bidul, ee ` c’est donc la version de f red´finie dans la classe Bidul qui est invoqu´e (valeur 2). e e D’o` la r´ponse. u e 4