Vous êtes sur la page 1sur 3

Ministère de l’Enseignement Supérieur et de la Recherche Scientifique

Université de Carthage
Institut supérieur des technologies de l'information et de la communication
Année universitaire : 2020/2021

Elément d’enseignement Travaux Dirigés Programmation Orientée Objet


Elaboré par Dr. Ing. Wided ABIDI
Niveaux Licence Appliquée en informatique, réseaux et Télécommunications
Classes LT-2

TD3

Exercice 1 :
Pour chacune des 5 instructions d'affichage dans la méthode main, indiquer
indique si l'instruction est
correcte ou fausse en justifiant.
class Erreur {
public static void main(String args[]) {
E1 x = new E1();
E2 y = new E2();
E3 z = new E3();
E4 v = new E4();
E5 w = new E5();
System.out.println(x.a); // Correct ou faux ?
System.out.println(y.c); // Correct ou faux ?
System.out.println(z.b); // Correct ou faux ?
System.out.println(v.c); // Correct ou faux ?
System.out.println(w.a); // Correct ou faux ?
}
}
class E1 {
int a = 1;
}
class E2 extends E1 {
int b = 2;
}
class E3 extends E2 {
int c = 3;
}
class E4 extends E1 {
int d = 4;
}
class E5 extends E4 {
int e = 5;
}

Exercice 2 :
1. Créer une classe Liquide contenant seulement une méthode afficher () qui affiche : ”je
suis un liquide”.
2. Créer 2 classes dérivées de la classe Liquide, les classes Cafe et Lait, dont les
méthodes afficher () affichent respectivement ”je suis un Café”, ”je suis du Lait”.
3. Enfin, créer une classe Tasse ayant un attribut l de la classe Liquide et une méthode
AjouterLiquide (Liquide li) et une méthode afficher ().
4. Tester l’utilisation : créer un tableau de Tasses qui contient différents liquides.

Exercice 3 :
1. Créer la classe Vehicule qui contient les données :
• private boolean moteur,
• private int vitesseMax.
Et les méthodes suivantes :
• String toString(), qui renvoie les caractéristiques du véhicule,
• void Vmax() qui affiche la vitesse maximale du véhicule.
Et un constructeur.
2. Créer ensuite une classe Voiture_Composee dont les membres sont
• private Vehicule v,
• private int nombreDePortes,
3. Créer la classe Voiture_Derivee (dérivant de la classe Vehicule) avec la donnée
membre
• private int nombreDePortes.
4. Pour les deux classes, définir leur constructeur et leur méthode String toString().
5. Créer trois instances v1, v2 et v3 des classes respectives Vehicule, Voiture_Composee
et Voiture_Derivee.
6. Comment accède-t-on aux différentes données membres et aux différentes méthodes
des classes Voiture Composee et Voiture Derivee ?
7. Afficher la vitesse maximale de la voiture dans les deux cas.

Exercice 4 :
1. Définir 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 et son prix courant.
2. Définir un constructeur prenant en paramètres la marque, la date d'achat et le prix
d'achat.
3. Définir une méthode publique affiche() qui affiche la valeur des attributs.
4. Définir deux classes Voiture et Avion, héritant de la classe Vehicule et ayant les
attributs supplémentaires suivants :
• pour la classe Voiture :
o sa cylindrée ;
o son nombre de portes ;
o sa puissance ;
o son kilométrage.
• pour la classe Avion :
o son type de moteur ("HELICES" ou autre, nous utiliserons "REACTION" pour
les exemples) ;
o son nombre d'heures de vol.
5. Définir, 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 !
6. Ajouter 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).
7. Redéfinir 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 :
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)
o 10% s'il s'agit d'un véhicule de marque "Renault" ou "Fiat" (ou d'autres
marques de votre choix)
o et plus 20% s'il s'agit d'un véhicule de marque "Ferrari" ou "Porsche" (idem).
• Pour un avion, le prix courant est égal au prix d'achat, moins :
o 10 % pour chaque tranche de 100 heures de vol s'il s'agit d'un avion à hélices.
o 10 % pour chaque tranche de 1000 heures de vol pour les autres types de
moteurs.
Le prix doit rester positif (donc s'il est négatif, on le met à 0).

Voici la classe GestionVehicules contenant la méthode main :


class GestionVehicules {
// Pour représenter l'année courante:
// Il est aussi possible d'utiliser la classe Date
// pour récupérer cette information automatiquement
private static int ANNEE_ACTUELLE = 2012;
public static void main(String[] args) {
Vehicule[] vehicules = new Vehicule [5];
vehicules[0] = new Voiture("Peugeot", 2005, 147325.79, 2.5, 5, 180.0, 12000);
vehicules[1] = new Voiture("Porsche", 1999, 250000.00, 6.5, 2, 280.0, 81320);
vehicules[2] = new Voiture("Fiat", 2001, 7327.30, 1.6, 3, 65.0, 3000);
vehicules[3] = new Avion("Cessna", 1982, 1230673.90, "HELICES", 250);
vehicules[4] = new Avion("Nain Connu", 1993, 4321098.00, "REACTION", 1300);
for (int i = 0; i < vehicules.length; i++) {
vehicules[i].calculePrix(ANNEE_ACTUELLE);
vehicules[i].affiche();
}
}
}

Vous aimerez peut-être aussi