But:
|
Transformer un programme donné en un programme OO | |||
Thème:
|
Transformation d'un programme non OO en un programme OO, POO de base |
Le fichier Taxes1.java contient un programme qui aide une entreprise à stocker des données sur sa flotte de voitures et de calculer la taxe annuelle totale à payer pour la flotte. Le programme est modularisé sous forme de méthodes auxiliaires. Copiez le programme sous le nom de Taxes2.java et transformez-le en programme orienté objets. Dans ce but, vous pouvez vous inspirer de l'exemple vu en cours. Suivez les étapes suivantes:
Exemple d'exécution du programme:
Vous avez une Toyota de cylindrée 1598
Vous avez une BMW de cylindrée 2756
Taxe totale à payer: 1000.0 francs
Code donné:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
/* Ce programme est modularisé sous forme de méthodes auxiliaires. Il vous est demandé de le transformer en un programme orienté objets. */ class Taxes1 { public static void main(String[] args) { // Données pour la première voiture (marque et cylindrée): String marque1 = "Toyota"; int cylindree1 = 1598; // Données pour la deuxième voiture (marque et cylindrée): String marque2 = "BMW"; int cylindree2 = 2756; // Affichage de la flotte: afficherVoiture(marque1, cylindree1); afficherVoiture(marque2, cylindree2); // Calcul et affichage de la totalité des taxes: afficherTaxeFlotte(cylindree1, cylindree2); } static void afficherVoiture(String marque, int cylindree) { // Cette méthode affiche les données d'une voiture * System.out.println("Vous avez une " + marque + " de cylindrée " + cylindree); } static void afficherTaxeFlotte(double cylindree1, double cylindree2) { // Cette méthode calcule et affiche la taxe totale des deux // voitures double taxe = calculerTaxeFlotte(cylindree1, cylindree2); System.out.println("Taxe totale à payer: " + taxe + " francs"); } static double calculerTaxeFlotte(double cylindree1, double cylindree2) { // Cette méthode calcule la taxe totale pour deux voitures double taxe1 = calculerTaxeVoiture(cylindree1); double taxe2 = calculerTaxeVoiture(cylindree2); return (taxe1 + taxe2); } static double calculerTaxeVoiture(double cylindree) { // Cette méthode retourne la taxe à payer pour une voiture de la // cylindrée indiquée * double taxe; if (cylindree <= 1600) taxe = 300.0; else if (cylindree <= 2300) taxe = 500.0; else taxe = 700.0; return taxe; } } |
Fichiers:
|
Le code complet du corrigé vous est fourni ci-dessous. A remarquer en particulier:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
/* Version orientée objets de Taxes1 */ class Taxes2 { public static void main(String[] args) { // Construire 1 objet de type Flotte: Flotte f = new Flotte("Toyota", 1598, "BMW", 2756); // Afficher la flotte: f.afficher(); // Calculer et afficher la taxe de la flotte: f.afficherTaxe(); } } class Flotte { // Variables d'instance de la classe Flotte: private Voiture v1; private Voiture v2; // Méthode constructeur: public Flotte(String marque1, int cylindree1, String marque2, int cylindree2) { // Construire 2 objets de type Voiture: v1 = new Voiture(marque1, cylindree1); v2 = new Voiture(marque2, cylindree2); } public void afficher() { // Cette méthode affiche les données de toutes les voitures de la // flotte en appelant la méthode afficher de chaque objet voiture v1.afficher(); v2.afficher(); } public void afficherTaxe() { // Cette méthode calcule et affiche la taxe totale double taxe = calculerTaxe(); System.out.println("Taxe totale à payer: " + taxe + " francs"); } private double calculerTaxe() { // Cette méthode calcule la taxe totale pour les deux // voitures. Elle est privée car il n'y a aucune raison de // l'appeler depuis l'extérieur de la classe. return (v1.calculerTaxe() + v2.calculerTaxe()); } } class Voiture { // Variables d'instance de la classe Voiture: private String marque; private int cylindree; // Méthode constructeur: public Voiture(String marque, int cylindree) { this.marque = marque; this.cylindree = cylindree; } public void afficher() { // Cette méthode affiche les données d'une voiture System.out.println("Vous avez une " + marque + " de cylindrée " + cylindree); } public double calculerTaxe() { // Cette méthode retourne la taxe à payer pour l'objet // double taxe; if (cylindree <= 1600) taxe = 300.0; else if (cylindree <= 2300) taxe = 500.0; else taxe = 700.0; return taxe; } } |