[Précédent]
[Index] | [Corrigé] | [Version imprimable]
[Prochain]

8.3
  Que de véhicules - Enoncé
Niveau 1
 
 
But:
  Mettre en oeuvre une hiérarchie de classes de véhicules    
Thème:
  Héritage    
Fichiers:
  GestionVehicules.java    

3.1 La classe Vehicule

Dans un fichier GestionVehicules.java, définissez une classe Vehicule qui a pour attributs des informations valables pour tout type de véhicule :

Définissez un constructeur prenant en paramètre les trois attributs correspondant à la marque, la date d'achat et le prix d'achat. Le prix courant sera calculé plus tard.

Définissez une méthode publique void affiche() qui affiche l'état de l'instance, c'est-à-dire la valeur de ses attributs.

3.2 La classe Voiture et la classe Avion

Définissez deux classes Voiture et Avion, héritant de la classe Vehicule et ayant les attributs supplémentaires suivants :

Définissez, pour chacune de ces classes, un constructeur permettant l'initialisation explicite de l'ensemble des attributs, ainsi qu'une méthode affichant la valeur des attributs. Constructeurs et méthodes d'affichage devront utiliser les méthodes appropriées de la classe parente !

Encore des méthodes

Ajoutez une méthode void calculePrix(int anneActuelle) dans la classe Vehicule qui, à ce niveau, fixe le prix courant au prix d'achat moins 1% par année (entre la date d'achat et la date actuelle).

Redéfinissez cette méthode dans les deux sous-classes Voiture et Avion de sorte à calculer le prix courant en fonction de certains critères, et mettre à jour l'attribut correspondant au prix courant :

Le prix doit rester positif (donc s'il est négatif, on le met à 0).

La méthode main

Afin de tester les méthodes implémentées ci-dessus, complétez la méthode main comme suit :

 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
class GestionVehicules {
    // Pour repréesenter l'année courante:
    // Il est aussi bien sur possible d'utiliser la classe Date
    // pour r'ecupérer cette information automatiquement.
    private static int ANNEE_ACTUELLE = 2020;   
        
    public static void main(String[] args) {
        Voiture[] garage = new Voiture[3];
        Avion[] hangar = new Avion[2];

        garage[0] = new Voiture("Peugeot", 2005, 147325.79, 2.5, 5, 180.0, 12000);
        garage[1] = new Voiture("Porsche", 1999, 250000.00, 6.5, 2, 280.0, 81320);
        garage[2] = new Voiture("Fiat", 2001, 7327.30, 1.6, 3, 65.0, 3000);

        hangar[0] = new Avion("Cessna", 1982, 1230673.90, "HELICES", 250);
        hangar[1] = new Avion("Nain Connu", 1993, 4321098.00, "REACTION", 1300);

        for (int i = 0; i < garage.length; i++) {
            garage[i].calculePrix(ANNEE_ACTUELLE);
            garage[i].affiche();
        }

        for (int i = 0; i < hangar.length; i++) {
            hangar[i].calculePrix(ANNEE_ACTUELLE);
            hangar[i].affiche();
        }
    }
}

Exemple d'exécution :

---- Voiture ----
marque : Peugeot, date d'achat : 2005, prix actuel : 95761.76350000002
2.5 litres, 5 portes, 180.0 CV, 12000.0 km.
 ---- Voiture ----
marque : Porsche, date d'achat : 1999, prix actuel : 94999.99999999997
6.5 litres, 2 portes, 280.0 CV, 81320.0 km.
 ---- Voiture ----
marque : Fiat, date d'achat : 2001, prix actuel : 3810.1960000000004
1.6 litres, 3 portes, 65.0 CV, 3000.0 km.
 ---- Avion à HELICES----
marque : Cessna, date d'achat : 1982, prix actuel : 923005.4249999999
250 heures de vol.
 ---- Avion à REACTION----
marque : Nain Connu, date d'achat : 1993, prix actuel : 3759355.26
1300 heures de vol.

Amélioration du main

Améliorez la méthode main ci-dessus en tenant compte du fait que tous les véhicules ont un type commun: Vehicule.

 


[Précédent]
[Index] | [Corrigé] | [Version imprimable]
[Prochain]