Héritage [he] Exercices de cours

publicité
Héritage [he]
Exercices de cours
Karine Zampieri, Stéphane Rivière
Unisciel
algoprog
Version 29 janvier 2017
Table des matières
1 Appréhender le cours
1.1 Constructeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Java - Exercices de cours (Solution)
1
2
2
Unisciel algoprog – he00exerc-texte, January 29, 2017
1
1.1
Appréhender le cours
Constructeurs
Utilise Constructeurs et héritage Durée estimée 15 min Objectif
Cet exercice se focalise sur le comportement des constructeurs.
Classe Premiere @[PremiereC1.java]
On considère la classe de base suivante :
class Premiere
{
public Premiere()
{
System.out.println("Constr Premiere");
}
}
1.1.1
Problème 1
Programme Java @[qzconstr1.java]
class Seconde extends Premiere
{
public Seconde(boolean b)
{
super();
System.out.println("Constr Seconde");
}
}
class Troisieme extends Premiere
{
public Troisieme(int k)
{
super();
System.out.println("Constr Troisieme");
}
}
class Quatrieme extends Premiere
{
public Quatrieme(double d)
{
super();
System.out.println("Constr Quatrieme");
}
}
2
Unisciel algoprog – he00exerc-texte, January 29, 2017
3
public class QZConstr1 {
public static void main(String[] args) {
Premiere a1 = new Premiere();
Seconde a2 = new Seconde(true);
Troisieme a3 = new Troisieme(15);
Quatrieme a4 = new Quatrieme(12.3);
}
}
Dessinez les relations d’héritage entre classes.
Prédisez ce qu’affiche le programme.
Compilez et exécutez-le pour vérifier vos prédictions.
Y a-t-il un constructeur qui s’exécute sans afficher de message à la création de certains
objets ?
Solution Java
La super-classe Object de Premiere.
1.1.2
Problème 2
Programme Java @[qzconstr2.java]
class Cinquieme extends Premiere
{
public Cinquieme()
{
super();
System.out.println("Constr Cinquieme");
}
}
class Sixieme extends Cinquieme
{
public Sixieme()
{
super();
System.out.println("Constr Sixieme");
}
}
public class QZConstr2 {
public static void main(String[] args) {
Cinquieme a1 = new Cinquieme();
Sixieme a2 = new Sixieme();
}
}
Unisciel algoprog – he00exerc-texte, January 29, 2017
4
Complétez les relations d’héritage entre classes.
Prédisez ce qu’affiche le programme.
Compilez et exécutez-le pour vérifier vos prédictions.
1.1.3
Problème 3
Programme Java @[qzconstr3.java]
class Septieme extends Premiere
{
public Septieme(int i)
{
super();
System.out.println("Constr Septieme");
}
}
class Huitieme extends Septieme
{
public Huitieme()
{
super(0);
System.out.println("Constr Huitieme");
}
}
public class QZConstr3 {
public static void main(String[] args) {
Septieme a1 = new Septieme(5);
Huitieme a2 = new Huitieme();
}
}
Le programme provoque une erreur à la compilation.
Essayez de trouver l’erreur. Si vous n’y arrivez pas, essayez de compiler ce programme :
le message d’erreur peut vous mettre sur la voie.
Orientation
La classe Huitieme est incorrecte.
1.1.4
Problème 4
Programme Java @[qzconstr4.java]
class Neuvieme extends Premiere
{
public Neuvieme(int i)
Unisciel algoprog – he00exerc-texte, January 29, 2017
{
super();
System.out.println("Constr1 Neuvieme");
}
public Neuvieme(boolean b)
{
super();
System.out.println("Constr2 Neuvieme");
}
}
class Dixieme extends Neuvieme
{
public Dixieme(double d)
{
super(true);
System.out.println("Constr1 Dixieme");
}
public Dixieme(int x, boolean y)
{
super(x);
System.out.println("Constr2 Dixieme");
}
}
public class QZConstr4 {
public static void main(String[] args) {
Dixieme a1 = new Dixieme(10.5);
Dixieme a2 = new Dixieme(45, true);
}
}
Prédisez ce qu’affiche le programme.
Compilez et exécutez-le pour vérifier vos prédictions.
5
Téléchargement