Transformer un programme java donné en un programme orienté objet-taxes

Le code complet du corrigé vous est fourni ci-dessous. A remarquer en particulier :

  1. Les méthodes propres à un type d’objet sont mises dans la classe décrivant ce type d’objet (encapsulation). Exemple: calculerTaxeFlotte est mise dans la classe Flotte (et porte désormais le nom calculerTaxe, voir point suivant).
  2. Les concepts OO nous permettent la réutilisation d’identifiateurs parlants pour les noms de méthodes. Par exemple, il n’est plus nécessaire d’avoir pour les affichages ou le calcul de taxes deux noms de méthodes distincts: afficherFlotte et afficherVoiture ou calculerTaxeFlotte et calculerTaxeVoiture . Ces méthodes peuvent désormais simplement s’appeller afficher (resp. calculerTaxe) sans aucun risque de confusion puisque chaque classe a ses propres attributs et méthodes.
/* 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;
    }
}

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *