PROGRAMMATION ORIENTEE OBJETS -2IM-
TP 4
Exercice 1
Définir une classe Vehicule contenant les attributs privés suivants :
marque : chaîne de caractères
dateAchat : chaîne de caractères
prixAchat : réel double
prixCourant : réel double
2) Ajouter 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.
3) Ajouter une méthode publique void affiche() qui affiche l'état de l'instance, c'est-à-dire les
valeurs de ses attributs.
4) Ajouter les getters et les setters pour les différents attributs de la classe
5) Définir deux classes Voiture et Avion, héritant de la classe Vehicule et ayant les attributs
privés supplémentaires suivants :
pour la classe Voiture :
o cylindree : réel double
o nbPortes : entier
o puissance : réel double
o kilometrage : réel double
pour la classe Avion :
o moteur : chaîne de caractères (hélices ou réaction) ;
o heuresVol : entier
6) 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.
7) Ajouter une méthode void calculePrix() dans la classe Vehicule qui, à ce niveau, fixe le prix
courant au prix d'achat.
8) Redéfinir la méthode calculePrix( ) 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 5% pour chaque tranche de 10000km parcourus
o 10% s'il s'agit d'un véhicule de marque "Renault" ou "Fiat"
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 1000 heures de vol s'il s'agit d'un avion à réaction.
o 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).
7) Ajouter une classe publique GestionVéhicule contenant la méthode main permettant de créer
un tableau de Vehicule contenant 3 voitures et 2 avions.
Calculer les prix actuels et afficher les résultats.
HANENE CHETTAOUI –ISAMM- 2024-2025 1
PROGRAMMATION ORIENTEE OBJETS -2IM-
Exercice 2
Un site internet est spécialisé dans la vente de livres pour enfant. Ces livres sont soit des bandes
dessinées, soit des albums à colorier.
Un livre est défini par son titre, son auteur, son prix et son nombre de pages. Les bandes
dessinées sont soit en couleur soit en noir et blanc alors que l’utilisateur a la possibilité de
colorier une page d’un album donné.
Pour ceci, écrire une classe Livre comportant :
- les attributs suivants :
titre de type chaîne de caractères protégé
auteur de type chaîne de caractères protégé
propriétaire de type chaîne de caractères protégé
prix de type double protégé
nb_pages de type entier
- un constructeur permettant d’initialiser les attributs de la classe par des valeurs passées en
paramètres. Le propriétaire est initialisé à une chaine vide.
- une méthode nommée Est_neuf permettant de vérifier si un livre a un propriétaire ou non.
Cette méthode retourne True si le livre n’a pas de propriétaire et False sinon
- une méthode nommée Acheter permettant d’acheter un livre. L’achat d’un livre consiste à
modifier le propriétaire (passé en argument).
- une méthode nommée affiche permettant d’afficher les informations relatives au livre
Ajouter la classe BD modélisant les bandes dessinées (il est possible d’utiliser un attribut
encouleur de type booléen).
Ajouter la classe Album comportant :
- Un attribut page_coloriee (tableau de booléen modélisant les pages à colorier)
- Un constructeur qui prend, en plus des paramètres nécessaires, le nombre de pages à
colorier dans l’album.
- Une méthode nommée Colorie qui permet de colorier une page d’un album si c’est
possible. Le numéro de page à colorier est passé en argument.
Ajouter une classe publique Test contenant la méthode main et permettant :
- Créer les deux livres suivants
Titre Auteur prix Nombre pages
Le petit prince St Exupéry 10.40 50
Contes Grimm 14.40 254
- Afficher les informations relatives aux deux livres.
- Acheter les deux livres par deux propriétaires saisis au clavier
- Afficher de nouveau les informations relatives aux deux livres
- Créer les deux bandes dessinées suivantes
Titre Auteur prix Nombre pages En couleur
Lucky Luke Morris 10.40 45 Oui
Tintin Herge 200.40 45 Non
HANENE CHETTAOUI –ISAMM- 2024-2025 2
PROGRAMMATION ORIENTEE OBJETS -2IM-
- Acheter les deux bandes par un propriétaire saisi au clavier.
- Afficher les informations des deux bandes dessinées
- Créer l’album suivant :
Titre Auteur prix Nombre pages
Dorra Dorra 3.5 300
- Acheter l’album par un propriétaire saisi au clavier.
- Colorier une page de l’album (le numéro de la page est saisi au clavier)
Exercice 3
Soit le programme Java suivant :
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;}
class Heritage {
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();
[Link](x.a);
[Link](y.c);
[Link](z.b);
[Link](v.c);
[Link](w.a);
}
}
1) Construire la hiérarchie de classes correspondante.
2) Pour chacune des 5 instructions d'affichage dans la méthode main, indiquer si
l'instruction est correcte ou fausse.
Exercice 4
Ecrire les classes nécessaires au fonctionnement du programme suivant, en ne fournissant que
les méthodes nécessaires à ce fonctionnement :
Public class Testmetiers
public static void main (String [] args)
Personne [] personnes = new Personne [4];
HANENE CHETTAOUI –ISAMM- 2024-2025 3
PROGRAMMATION ORIENTEE OBJETS -2IM-
Personnes [0] = new Personne ("Salah");
Personnes [1] = new Forgeron ("Ali");
Personnes [2] = new Menuisier ("Mohamed");
Personnes [3] = new Forgeron ("Amor");
for (int i=0; i<[Link];i++)
personnes[i].affiche();
Sortie du programme :
Je suis salah
Je suis Ali le forgeron
Je suis Mohamed le menuisier
Je suis Amor le forgeron
HANENE CHETTAOUI –ISAMM- 2024-2025 4