0% ont trouvé ce document utile (0 vote)
56 vues3 pages

TD N°2 Compl Émentaire

Transféré par

Firas Chabouh
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
56 vues3 pages

TD N°2 Compl Émentaire

Transféré par

Firas Chabouh
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
Vous êtes sur la page 1/ 3

Université de Tlemcen Année universitaire 2018-2019

ème
Faculté des Sciences 2 année licence informatique
Département d'Informatique Programmation Orientée Objet

TD N°2 complémentaire
Exercice 5

Soit une classe Sardine qui spécifie une classe Poisson. Trouvez les éventuels types d’erreurs
produites par les codes suivants :

Code n° 1
Poisson y = new Poisson() ;
Sardine x = (Sardine) y ;
Poisson z = x ;

Code n° 2
Sardine y = new Sardine() ;
Poisson x = y ;
Sardine z = (Sardine) x ;

Code n° 3
Poisson y = new Sardine() ;
Object x = y ;
Sardine z = x ;

Code n° 4
Poisson y = new Poisson() ;
Sardine z = new Sardine() ;
y = z ;

1
Université de Tlemcen Année universitaire 2018-2019
ème
Faculté des Sciences 2 année licence informatique
Département d'Informatique Programmation Orientée Objet

Exercice 6

Qu'affiche le programme suivant ?


Justifiez vos réponses, sachant que le choix de la méthode est fait dynamiquement pendant
l'exécution, tandis que le type de l'argument est déterminé à la compilation.

class A {
public String f(B obj) { return ("A et B");}
public String f(A obj) { return ("A et A");}
}

class B extends A {
public String f(B obj) { return ("B et B");}
public String f(A obj) { return ("B et A");}
}

class Test {
public static void main (String [] args){
A a1 = new A();
A a2 = new B();
B b = new B();
System.out.println(a1.f(a1));
System.out.println(a1.f(a2));
System.out.println(a2.f(a1));
System.out.println(a2.f(a2));
System.out.println(a2.f(b));
System.out.println(b.f(a2));
}
}

2
Université de Tlemcen Année universitaire 2018-2019
ème
Faculté des Sciences 2 année licence informatique
Département d'Informatique Programmation Orientée Objet

Solution
Exercice 5

Code n° 1
Poisson y = new Poisson() ;
Sardine x = (Sardine) y ;
Poisson z = x ;
//Erreur lors de l'exécution, car y ne peut être downcasté explicitement en
Sardine

Code n° 2
Sardine y = new Sardine() ;
Poisson x = y ;
Sardine z = (Sardine) x ; Downcast explicite mais qui fonctionne

Code n° 3
Poisson y = new Sardine() ;
Object x = y ;
Sardine z = x ; Downcast implicite et donc une erreur de compilation. Un
Object ne peut être convertit en Sardine.

Code n° 4
Poisson y = new Poisson() ;
Sardine z = new Sardine() ;
y = z ; UpCasting implicite et donc fonctionne à tous les coups.

Exercice 6 : Affichage

A et A
A et A
B et A
B et A
B et B
B et A

Vous aimerez peut-être aussi