| | | |
| --- | --- | --- |
|  | Programmation Orientée Objet et Langage Java TP N° 3 | |
Exercice 1 :
Voici le diagramme de classe à implémenter :
Exercice 2 :
2.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 :
- sa marque ;
- sa date d'achat ;
- son prix d'achat ;
- son prix courant.
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.
Redéfinissez la méthode toString qui affiche l'état de l'instance, c'est-à-dire la valeur de ses attributs.
2.2 La classe Voiture et la classe Avion
Publicité
Définissez deux classes Voiture et Avion, héritant de la classe Vehicule et ayant les attributs supplémentaires suivants :
- pour la classe Voiture :
+ sa cylindrée ;
+ son nombre de portes ;
+ sa puissance ;
+ son kilométrage.
- pour la classe Avion :
+ son type (hélices ou réaction) ;
+ son nombre d'heures de vol.
Définissez, pour chacune de ces classes, un constructeur permettant l'initialisation explicite de l'ensemble des attributs, ainsi la méthode toString.
Nb : Constructeurs et méthodes d'affichage devront utiliser les méthodes appropriées de la classe parente !
Encore des méthodes
Publicité
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 :
- Pour une voiture, le prix courant est égal au prix d'achat, moins :
+ 2% pour chaque année depuis l'achat jusqu'à la date actuelle
+ 5% pour chaque tranche de 10000km parcourus
+ 10% s'il s'agit d'un véhicule de marque "Renault" ou "Fiat" et plus 20% s'il s'agit d'un véhicule de marque "Ferrari" ou "Porsche" .
- Pour un avion, le prix courant est égal au prix d'achat, moins :
- 10 % pour chaque tranche de 1000 heures de vol s'il s'agit d'un avion à réaction.
- 10 % pour chaque tranche de 100 heures de vol s'il s'agit d'un avion à hélices.
Le prix doit rester positif (donc s'il est négatif, on le met à 0).
Exercice 3 :
Soit la classe Test suivante. Dites si les instructions 1 à 8 sont valides ou non. En cas d'une instruction non valide, préciser s'il s'agit d'une erreur de compilation ou d'exécution.
class Test
{ public static void main (String [ ] args)
Publicité
{
C1 o1 = new C1(); V
C1 o2 = new C11(); V
C111 o3 = new C111(); V
C11 o4 = new C111(); V
C1 o5 = new C111(); V
o1 = o2; //instruction1 🡪 V
o1 = o3; //instruction2 🡪 V
o3 = o1; //instruction3 🡪 F
error compilation (o1 obj de C1 et o3 obj de C111 , C111 hérite de C1 pas le contraire il faut un objet de type C111 )
o4 = o5; //instruction4 🡪 F
error compilation (on s’attend a affecter un objet de type C11 out C111)
Publicité
o3 = (C111) o1; //instruction5 🡪 V
o4 = (C11) o5; //instruction6 🡪 V
o4 = (C111) o2; //instruction7 🡪 F
error execution (on ne peut pas affecter obj type C111 a un obj type C11)
o3 = (C11) o5; //instruction8 🡪 F
error compilation (on s’attend a un type C111 pas de type C11)
}
}
class C1 {}
class C11 extends C1{}
class C111 extends C11{}