Adloun

programmation Java (école d'ingénieur) · Chapitre 9 · Exercice de TD

Le coût d'un trajet

Héritage et polymorphisme · niveau 2

Énoncé

Une classe Moyen (de transport) déclare String nom() et double cout(double km). Écrire trois sous-classes : Velo (coût nul), Auto (consommation en litres aux 100 km et prix du litre) et Train (prix au kilomètre). Afficher, pour un trajet de km, le coût avec une auto consommant L/100 km à euro le litre, et avec un train à euro le kilomètre. Combien de lignes de la boucle d'affichage faut-il modifier pour ajouter une trottinette ?

Corrigé


class Moyen {
    String nom() { return "?"; }
    double cout(double km) { return 0; }
}

class Velo extends Moyen {
    @Override String nom() { return "vélo"; }
}

class Auto extends Moyen {
    private final double litresAuxCent, prixLitre;
    Auto(double l, double p) { litresAuxCent = l; prixLitre = p; }
    @Override String nom() { return "auto"; }
    @Override double cout(double km) { return km * litresAuxCent / 100 * prixLitre; }
}

class Train extends Moyen {
    private final double prixKm;
    Train(double p) { prixKm = p; }
    @Override String nom() { return "train"; }
    @Override double cout(double km) { return km * prixKm; }
}

Moyen[] flotte = { new Velo(), new Auto(6.5, 1.85), new Train(0.12) };
double km = 120;
for (Moyen m : flotte)
    System.out.printf("%-6s : %6.2f euros%n", m.nom(), m.cout(km));

vélo   :   0.00 euros
auto   :  14.43 euros
train  :  14.40 euros

Le vélo n'a pas besoin de redéfinir cout : la version de Moyen renvoie déjà . Pour l'auto : euros. Ajouter une trottinette demande d'écrire la classe Trottinette et de l'ajouter au tableau : aucune ligne de la boucle ne change. C'est tout l'intérêt du polymorphisme.

100 % gratuit

La suite du chapitre est sur Adloun

Exercice suivant et tuteur

Sans compte : le cours, le premier QCM et 2 minutes de podcast et de vidéo. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →