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