Vous êtes sur la page 1sur 2

ère

École Nationale Supérieure 2 Année CPI- Programmation


d'Informatique de Sidi Bel Abbes Orientée Objet

Fiche de TD/TP N°3- Héritage et polymorphisme :

Exercice 1 :
class A { Q1.Déterminer l’affichage de la méthode principale main
A() { System.out.println("constructeur de A"); }
} Q2.Même question en supposant que l’on supprime
l’instruction this() dans la classe B.
class B extends A {
B() {System.out.println("constructeur de B");} Q3. Même question si l’on supprime l’instruction
super(3) dans la classe C.
B(int x) {
this(); Q4. Même question si l’on supprime complètement la
System.out.println("autre constructeur de B"); définition du constructeur sans paramètre de la classe B.
} } (Remarque : cette fois encore l’instruction super(3) n’a
class C extends B {
pas été réintroduite.)
C() {
super(3); System.out.println("constructeur de C");
}

public static void main(String [] arg) { new C();}


}

Exercice 2 : Considérer les classes suivantes et indiquer la/les réponses correcte(s) si les instructions
proposées sont insérées après la ligne en commentaire. Si il n'y a pas d'erreur, préciser l'affichage.
class A { class B extends A {
public void e() { public void e() {
System.out.println("method e de A"); System.out.println("method e de B");
}} }
class teste{
public int f; public void e(String m) {
public static void main(String[] args) { System.out.println("method2 e de B "+m);
// insert instructions here }}
} }

Erreur de Erreur Ok Affichage


compilation d’exécution
B b= new B() ; b.e() ;
A ab=new B() ; ab.e();
B ba=new A(); ba.e();
B b= new B() ; b.e("zz") ;
A a =new A(); B b=(B)a;
A a=new B(); ((B) a).e("zz");

Exercice 3 : un véhicule est définit par son numéro, sa marque ; sa date d'achat ; son prix d'achat ; son prix
courant, et peut être de deux types : Voiture ou Avion. Les véhicules sont créés en prenant en paramètre les
trois attributs correspondant à la marque, la date d'achat et le prix d'achat. Le prix courant est calculé en se
basant sur la date d’achat et la date actuelle, tel que : prix courant = prix d'achat moins 1% par année (entre

Dr. MALKI Abdelhamid 2ème Année CPI- POO


a.malki@esi-sba.dz
la date d'achat et la date actuelle). Le prix doit rester positif (donc s'il est négatif, on le met à 0). Chaque
véhicule peut être affiché c'est-à-dire la valeur de ses attributs.
Une Voiture est caractérisée par son nombre de portes ; sa puissance ; son kilométrage. Un Avion est caractérisé
par son type de moteur ("HELICES" ou autre, nous utiliserons "REACTION" pour les exemples) ; son nombre
d'heures de vol.

 Pour une voiture, le prix courant est égal au prix d'achat, moins :
o 2% pour chaque année depuis l'achat jusqu'à la date actuelle
o 5% pour chaque tranche de 10000km parcourus (on arrondit à la tranche la plus proche)
 Pour un avion, le prix courant est égal au prix d'achat, moins :
o 1% pour chaque année depuis l'achat jusqu'à la date actuelle
o 10 % pour chaque tranche de 100 heures de vol s'il s'agit d'un avion à hélices.

Une personne peut être le propriétaire de plusieurs véhicules (10 au maximum). Chaque propriétaire est
caractérisé par son nom, son prénom et son adresse. Cette dernière est définie par le numéro et le nom de la rue,
le code postal et la ville. Pour chaque propriétaire, on peut savoir le nombre de ses voitures, le nombre de ses
avions, le prix courant de tous ses véhicules, et le véhicule le plus cher.

Q1 : Proposer une modélisation orientée objet à ce problème (Donner les classes, leurs attributs et leurs
méthodes) sous forme d’un schéma, en précisant les relations entre les classes.
Q2. Donnez le code java des classes: véhicule, voiture et avion ;
Q3. Tester les différentes classes en créant deux tableaux un pour les voitures et un autre pour les avions.
Q4. Donnez le code des classes restantes (celles qui correspondent au propriétaire).
Q5. Ajouter une méthode qui retourne les véhicules dont les propriétaires habitent à Sidi Bel Abbes.

Dr. MALKI Abdelhamid 2ème Année CPI- POO


a.malki@esi-sba.dz