Exercices corrigés Java – Programmation Orientée Objet | Partie 4
Avec des exercices corrigés en Java, vous pratiquerez divers concepts du langage de programmation Java. Vous commencerez par des exercices Java de base à des exercices plus avancés. La solution est fournie pour chaque exercice. Vous devez essayer de résoudre chaque problème par vous-même avant de vérifier la solution. Si vous avez des questions concernant chaque problème, nous vous encourageons à les poster sur notre forum.
Exercice 1:
Écrire un programme Java pour créer une classe appelée « Voyage » avec des méthodes permettant de rechercher des vols et des hôtels, ainsi que de réserver et d’annuler des réservations.
Diagrame de classe:

// Importer la classe ArrayList
import java.util.ArrayList;
// Importer la classe Random
import java.util.Random;
// Définir la classe Voyage
class Voyage {
// Déclarer une ArrayList pour stocker les vols
private ArrayList vols;
// Déclarer une ArrayList pour stocker les hôtels
private ArrayList hotels;
// Constructeur pour initialiser les ArrayLists
public Voyage() {
// Initialiser la liste des vols
this.vols = new ArrayList<Vol>();
// Initialiser la liste des hôtels
this.hotels = new ArrayList<Hotel>();
}
// Méthode pour rechercher des vols
public void rechercherVols(String orig, String dest, String date, int nbrVoyageur) {
// Afficher les détails de la recherche de vols
System.out.println("Recherche de vols de "+ orig+ " à "+ dest +" le "+ date +" pour "+ nbrVoyageur +" voyageurs.");
}
// Méthode pour rechercher des hôtels
public void rechercherHotels(String lieu, String dateArriv, String dateDepart, int nbrPers) {
// Afficher les détails de la recherche d'hôtels
System.out.println("Recherche d'hôtels dans "+ lieu +" de "+ dateArriv +" à "+ dateDepart +" pour "+ nbrPers +" personnes.");
}
// Méthode pour réserver un vol
public void reserverVol(int numVol, String nomPassager, String orig, String dest, String date, int nbrVoyageur, double prix) {
// Créer un objet vol avec les détails fournis
Vol vol = new Vol(numVol, nomPassager, orig, dest, date, nbrVoyageur, prix);
// Générer un numéro de confirmation
int numConf = generateConfirmationNumber();
// Définir le numéro de confirmation du vol
vol.setNumConf(numConf);
// Ajouter le vol à la liste des vols
this.vols.add(vol);
// Afficher le numéro de confirmation du vol réservé
System.out.println("Vol réservé ! Numéro de confirmation: "+ numConf);
}
// Méthode pour réserver un hôtel
public void reserverHotel(int hotelId, String nomPersonne, String lieu, String dateArriv, String dateDepart, int nbrPersonne, double prix) {
// Créer un objet hotel avec les détails fournis
Hotel hotel = new Hotel(hotelId, nomPersonne, lieu, dateArriv, dateDepart, nbrPersonne, prix);
// Générer un numéro de confirmation
int numConf = generateConfirmationNumber();
// Définir le numéro de confirmation du vol
hotel.setNumConf(numConf);
// Ajouter l'hôtel à la liste des hôtels
this.hotels.add(hotel);
// Afficher le numéro de confirmation de l'hôtel réservé
System.out.println("Hôtel réservé ! Numéro de confirmation: " + numConf);
}
// Méthode pour annuler une réservation
public void annulerReservation(int numConf) {
// Parcourir la liste des vols pour trouver la réservation
for (Vol vol : this.getVols()) {
// Si le numéro de confirmation correspond, supprimer la
// réservation de vol
if (vol.getNumConf() == numConf) {
this.vols.remove(vol);
// Afficher le message d'annulation du vol
System.out.println("Annulation de la réservation de vol avec le numéro de confirmation "+ numConf);
return;
}
}
// Parcourir la liste des hôtels pour trouver la réservation
for (Hotel hotel : this.getHotels()) {
// Si le numéro de confirmation correspond, supprimer la
// réservation d'hôtel
if (hotel.getNumConf() == numConf) {
this.hotels.remove(hotel);
// Afficher le message d'annulation d'hôtel
System.out.println("Annulation de la réservation d'hôtel avec le numéro de confirmation "+ numConf);
return;
}
}
// Afficher un message si aucune réservation n'a été trouvée avec
// le numéro de confirmation fourni
System.out.println("Aucune réservation n'a été trouvée avec le numéro de confirmation " + numConf + ".");
}
// Méthode pour générer un numéro de confirmation aléatoire à 6
// chiffres
private int generateConfirmationNumber() {
// Créer un objet aléatoire
Random rand = new Random();
// Générer et renvoyer un nombre aléatoire à 6 chiffres
return rand.nextInt(900000) + 100000;
}
// Méthode pour récupérer la liste des vols
public ArrayList<Vol> getVols() {
// Retourner la liste des vols
return vols;
}
// Méthode pour récupérer la liste des hôtels
public ArrayList<Hotel> getHotels() {
// Retourner la liste des hôtels
return hotels;
}
}
// Définir la classe Vol
class Vol {
// Déclarer une variable entière pour stocker le numéro de vol
private int numVol;
// Déclarer une variable de type chaîne de caractères pour
// stocker le nom du passager
private String nomPassager;
// Déclarer une variable de type chaîne de caractères pour
// stocker l'origine du vol
private String origin;
// Déclarer une variable de type chaîne de caractères pour
// stocker la destination du vol
private String destination;
// Déclarer une variable de type chaîne de caractères pour
// stocker la date du vol
private String date;
// Déclarer une variable entière pour stocker le nombre de
// passagers
private int nbrPassagers;
// Déclarer une variable double pour stocker le prix du vol
private double prix;
// Déclarer une variable entière pour stocker le numéro de
// confirmation
private int numConf;
// Constructeur pour initialiser l'objet Vol avec les détails
// fournis
public Vol(int numVol, String nomPassager, String origin, String destination, String date, int nbrPassagers, double prix) {
// Initialiser le numéro de vol
this.numVol = numVol;
// Initialiser le nom du passager
this.nomPassager = nomPassager;
// Initialiser l'origine du vol
this.origin = origin;
// Initialiser la destination du vol
this.destination = destination;
// Initialiser la date du vol
this.date = date;
// Initialiser le nombre de passagers
this.nbrPassagers = nbrPassagers;
// Initialiser le prix du vol
this.prix = prix;
}
// Méthode pour récupérer le numéro de vol
public int getNumVol() {
return numVol;
}
// Méthode pour récupérer le nom du passager
public String getNomPassager() {
return nomPassager;
}
// Méthode pour récupérer l'origine du vol
public String getOrigin() {
return origin;
}
// Méthode pour récupérer la destination du vol
public String getDestination() {
return destination;
}
// Méthode pour récupérer la date du vol
public String getDate() {
return date;
}
// Méthode pour récupérer le nombre de passagers
public int getNbrPassagers() {
return nbrPassagers;
}
// Méthode pour récupérer le prix du vol
public double getPrix() {
return prix;
}
// Méthode pour récupérer le numéro de confirmation
public int getNumConf() {
return numConf;
}
// Méthode pour définir le numéro de confirmation
public void setNumConf(int numConf) {
this.numConf = numConf;
}
}
// Définir la classe Hotel
class Hotel {
// Déclarer une variable de type entier pour stocker l'identifiant de
// l'hôtel
private int hotelId;
// Déclarer une variable de type string pour stocker le nom de
// l'invité
private String nomPersonne;
// Déclarer une variable de type chaîne de caractères pour stocker
// la localisation de l'hôtel
private String lieu;
// Déclarer une variable de type chaîne pour stocker la date
// d'enregistrement
private String dateArriv;
// Déclarez une variable de type chaîne de caractères pour stocker
// la date de sortie
private String dateDepart;
// Déclarer une variable entière pour stocker le nombre d'invités
private int nbrPersonne;
// Déclarer une variable double pour stocker le prix du séjour
private double prix;
// Déclarer une variable de type entier pour stocker le numéro de
// confirmation
private int numConf;
// Constructeur pour initialiser l'objet Hôtel avec les détails
// fournis
public Hotel(int hotelId, String nomPersonne, String lieu, String dateArriv, String dateDepart, int nbrPersonne, double prix) {
// Initialiser l'identifiant de l'hôtel
this.hotelId = hotelId;
// Initialiser le nom de l'invité
this.nomPersonne = nomPersonne;
// Initialiser la localisation de l'hôtel
this.lieu = lieu;
// Initialiser la date d'enregistrement
this.dateArriv = dateArriv;
// Initialiser la date de sortie
this.dateDepart = dateDepart;
// Initialiser le nombre d'invités
this.nbrPersonne = nbrPersonne;
// Initialiser le prix du séjour
this.prix = prix;
}
// Méthode pour récupérer l'identifiant de l'hôtel
public int getHotelId() {
return hotelId;
}
// Méthode pour récupérer le nom de l'invité
public String getNomPersonne() {
return nomPersonne;
}
// Méthode pour récupérer la localisation de l'hôtel
public String getLieu() {
return lieu;
}
// Méthode pour récupérer la date d'enregistrement
public String getDateArriv() {
return dateArriv;
}
// Méthode pour récupérer la date de sortie
public String getDateDepart() {
return dateDepart;
}
// Méthode pour récupérer le prix du séjour
public double getPrix() {
return prix;
}
// Méthode pour récupérer le nombre d'invités
public int getNbrPersonne() {
return nbrPersonne;
}
// Méthode pour récupérer le numéro de confirmation
public int getNumConf() {
return numConf;
}
// Méthode pour définir le numéro de confirmation
public void setNumConf(int numConf) {
this.numConf = numConf;
}
}
// Définir la classe Main
public class Main {
// Définir la méthode main qui est le point d'entrée du programme
public static void main(String[] args) {
// Créer un nouvel objet Voyage
Voyage app = new Voyage();
// Recherche de vols de Paris à Casablanca le 2024-02-01 pour 1
// passager
app.rechercherVols("Paris", "Casablanca", "2024-02-01", 1);
// Recherche des hôtels à Casablanca du 2024-09-01 au 2024-10-05
// pour 2 personnes
app.rechercherHotels("Casablanca", "2024-09-01", "2024-10-05", 2);
// Réservez un vol avec le numéro de vol 96342588 pour Alex Babtise de Paris à Casablanca le 2024-08-01 pour 1 passager avec un prix de 600.00€
app.reserverVol(96342588, "Alex Babtise", "Paris", "Casablanca", "2024-08-01", 1, 600.00);
// Réservez un vol avec le numéro de vol 10843563 pour Emily Lyona de Paris à Casablanca le 2024-08-01 pour 1 passager avec un prix de 755.00€
app.reserverVol(10843563, "Emily Lyona", "Paris", "Casablanca", "2024-08-01", 1, 755.00);
// Réservez un hôtel avec ID 98765432 pour Martin Nadine à Casablanca du 2024-09-01 au 2024-09-05 pour 1 personne avec un prix de 150.00€
app.reserverHotel(98765432, "Martin Nadine", "Casablanca", "2024-09-01", "2024-09-05", 1, 150.00);
// Annuler la réservation avec le numéro de confirmation 90945840
app.annulerReservation(90945840);
}
}
Sortie:
Recherche de vols de Paris à Casablanca le 2024-02-01 pour 1 voyageurs. Recherche d'hôtels dans Casablanca de 2024-09-01 à 2024-10-05 pour 2 personnes. Vol réservé ! Numéro de confirmation: 100881 Vol réservé ! Numéro de confirmation: 455285 Hôtel réservé ! Numéro de confirmation: 799037 Aucune réservation n'a été trouvée avec le numéro de confirmation 90945840.
Exercice 2:
Écrivez un programme Java pour créer une classe appelée « Restaurant » avec des attributs pour les plats du menu, les prix et les notes, et des méthodes pour ajouter et supprimer des plats, et pour calculer la note moyenne.
Diagrame de classe:

// Importer la classe ArrayList
import java.util.ArrayList;
// Définir la classe Restaurant
class Restaurant {
// Déclarez des listes ArrayLists pour stocker les plats du menu,
// les prix, les notes et le nombre de plats.
private ArrayList menu;
private ArrayList prix;
private ArrayList notes;
private ArrayList nbrDePlats;
// Constructeur pour initialiser les ArrayLists
public Restaurant() {
// Initialiser la liste menu
this.menu = new ArrayList();
// Initialiser la liste de prix
this.prix = new ArrayList();
// Initialiser la liste de notes
this.notes = new ArrayList();
// Initialiser la liste de nbrDePlats
this.nbrDePlats = new ArrayList();
}
// Méthode pour ajouter un plat au menu
public void addPlat(String elem, double prix_p) {
// Ajouter le plat au menu
this.menu.add(elem);
// Ajouter le prix à la liste de prix
this.prix.add(prix_p);
// Initialiser la note du plat à 0
this.notes.add(0);
// Initialiser le compteur du plat à 0
this.nbrDePlats.add(0);
}
// Méthode pour supprimer un plat du menu
public void removePlat(String plat) {
// Obtenir l'index du plat dans l'ArrayList menu
int index = this.menu.indexOf(plat);
// Si le plat existe dans le menu
if (index >= 0) {
// Supprimer le plat du menu
this.menu.remove(index);
// Retirer le prix correspondant de la liste de prix
this.prix.remove(index);
// Retirer la note correspondante de la liste de notes
this.notes.remove(index);
// Supprimer le nombre de plats correspondant de la liste
// nbrDePlats
this.nbrDePlats.remove(index);
}
}
// Méthode pour ajouter une note à un plat
public void addNote(String plat, int note) {
// Obtenir l'index du plat dans le menu
int index = this.menu.indexOf(plat);
// Si le plat existe dans le menu
if (index >= 0) {
// Obtenir la note actuelle du plat
int note_act = this.notes.get(index);
// Obtenir le nombre actuel du plat
int totalePlats = this.nbrDePlats.get(index);
// Mettre à jour la note du plat
this.notes.set(index, note_act + note);
// Mettre à jour le le nombre de plat
this.nbrDePlats.set(index, totalePlats + 1);
}
}
// Méthode pour obtenir la note moyenne d'un plat
public double getMoyenneNote(String plat) {
// Obtenir l'index du plat dans le menu
int index = this.menu.indexOf(plat);
// Si le plat existe dans le menu
if (index >= 0) {
// Obtenir la note totale du plat
int totaleNote = this.notes.get(index);
// Obtenir le nombre actuel du plat
int totalePlats = this.nbrDePlats.get(index);
// Calculer et renvoyer la note moyenne du plat
return totalePlats > 0 ? (double) totaleNote / totalePlats : 0.0;
} else {
// Retourne 0.0 si le plat n'existe pas dans le menu
return 0.0;
}
}
// Méthode pour afficher le menu
public void afficherMenu() {
// Parcourir la liste de menus
for (int i = 0; i < menu.size(); i++) {
// Afficher le plat et son prix
System.out.println(menu.get(i) + ": €" + prix.get(i));
}
}
// Méthode de calcul de la note moyenne de tous les plats
public double calculerNoteMoyenne() {
// Initialiser la note totale à 0
double noteTotale = 0;
// Initialiser le nombre de notes à 0
int nbrNote = 0;
// Parcouri la liste de notes
for (int i = 0; i < notes.size(); i++) {
// Ajouter la note à noteTotale
noteTotale += notes.get(i);
// Incrémenter nbrNote
nbrNote++;
}
// Calculer et renvoyer la note moyenne
return nbrNote > 0 ? noteTotale / nbrNote : 0.0;
}
}
// Définir la classe Main
public class Main {
// Définir la méthode main qui est le point d'entrée du programme
public static void main(String[] args) {
// Créer un nouvel objet Restaurant
Restaurant restaurant = new Restaurant();
// Ajouter au menu un plat Bœuf à la ficelle au prix de 15€
restaurant.addPlat("Bœuf à la ficelle", 15.00);
// Ajouter au menu un plat de pizzas au prix de 8,99€
restaurant.addPlat("Pizza", 8.99);
// Ajouter un plat de salade au prix de 5€ au menu
restaurant.addPlat("Salade", 5.00);
System.out.println("Menu: Plats et prix");
// Afficher les plats du menu et leur prix
restaurant.afficherMenu();
// Ajouter une note de 4 au plat Bœuf à la ficelle
restaurant.addNote("Bœuf à la ficelle", 4);
// Ajouter une note de 5 au plat Bœuf à la ficelle
restaurant.addNote("Bœuf à la ficelle", 5);
// Ajouter une note de 3 au plat Pizza
restaurant.addNote("Pizza", 3);
// Ajouter une note de 4 au plat Pizza
restaurant.addNote("Pizza", 4);
// Ajouter une note de 2 au plat de salade
restaurant.addNote("Salade", 2);
// Obtenir la note moyenne pour le plat Pizza
double noteMoyenne = restaurant.getMoyenneNote("Pizza");
// Afficher la note moyenne pour le plat Pizza
System.out.println("Note moyenne pour Pizza: " + noteMoyenne);
// Obtenir la note moyenne pour le plat Salade
noteMoyenne = restaurant.getMoyenneNote("Salade");
// Afficher la note moyenne pour le plat Salade
System.out.println("Note moyenne pour Salade: " + noteMoyenne);
// Afficher la note moyenne totale pour tous les plats
System.out.println("Note moyenne: " + restaurant.calculerNoteMoyenne());
System.out.println("\nSupprimer 'Pizza' du menu.");
// Supprimer le plat pizza du menu
restaurant.removePlat("Pizza");
System.out.println("\nMenu actualisé:");
// Afficher les plats du menu mis à jour et leur prix
restaurant.afficherMenu();
}
}
Sortie:
Menu: Plats et prix Bœuf à la ficelle: 15.00€ Pizza: 8,99€ Salade: 5.0€ Note moyenne pour Pizza: 3.5 Note moyenne pour Salad: 2 Note moyenne: 3.56987155 Supprimer 'Pizza' du menu. Menu actualisé: Bœuf à la ficelle: 15.00€ Salade: 5.0€
Exercice 3:
Écrivez un programme Java pour créer une classe appelée « CompteBancaire » avec des attributs pour le numéro de compte, le nom du titulaire du compte et le solde. Incluez des méthodes pour déposer et retirer de l’argent, ainsi que pour vérifier le solde. Créez une classe fils appelée « CompteEpargne » qui ajoute un attribut de taux d’intérêt et une méthode pour appliquer l’intérêt.
Diagrame de classe:

// Définir la classe CompteBancaire
class CompteBancaire {
// Attribut pour le numéro de compte
private String numCompte;
// Attribut pour le nom du titulaire du compte
private String titulaireCompte;
// Attribut pour le solde du compte
private double solde;
// Constructeur pour initialiser l'objet CompteBancaire
public CompteBancaire(String numCompte, String titulaireCompte, double initialBalance) {
this.numCompte = numCompte;
this.titulaireCompte = titulaireCompte;
this.solde = initialBalance;
}
// Méthode pour déposer de l'argent sur le compte
public void deposer(double montant) {
if (montant > 0) {
solde += montant;
System.out.println("Déposés: "+ montant +". Nouveau solde: "+ solde);
} else {
System.out.println("Le montant déposé doit être positif.");
}
}
// Méthode pour retirer de l'argent du compte
public void retirer(double montant) {
if (montant > 0 && montant <= solde) {
solde -= montant;
System.out.println("Retrait: "+ montant +". Nouveau solde: "+ solde);
} else {
System.out.println("Solde insuffisant ou montant invalide.");
}
}
// Méthode pour vérifier le solde du compte
public double checkSolde() {
return solde;
}
// Méthode pour récupérer le numéro de compte
public String getNumCompte() {
return numCompte;
}
// Méthode pour récupérer le nom du titulaire du compte
public String getTitulaireCompte() {
return titulaireCompte;
}
}
// Définir la classe fils CompteEpargne qui hérite CompteBancaire
class CompteEpargne extends CompteBancaire {
// Attribut pour le taux d'intérêt
private double tauxInter;
// Constructeur pour initialiser l'objet CompteEpargne
public CompteEpargne(String numCompte, String titulaireCompte, double soleInitial, double tauxInter) {
// Appeler le constructeur de la classe mére
super(numCompte, titulaireCompte, soleInitial);
this.tauxInter = tauxInter;
}
// Méthode pour appliquer l'intérêt au solde
public void appliquerInter() {
// Calculer l'intérêt
double inter = checkSolde() * tauxInter / 100;
deposer(inter); // Ajouter de l'intérêt au solde
System.out.println("Intérêts appliqués: " + inter + ". Nouveau solde: " + checkSolde());
}
// Méthode Getter pour le taux d'intérêt
public double getTauxInter() {
return tauxInter;
}
// Méthode Setter pour le taux d'intérêt
public void setTauxInter(double tauxInter) {
if (tauxInter > 0) {
this.tauxInter = tauxInter;
} else {
System.out.println("Le taux d'intérêt doit être positif.");
}
}
}
// Définir la classe Main
public class Main {
public static void main(String[] args) {
// Créer un objet CompteBancaire
CompteBancaire cpt = new CompteBancaire("902456001", "Alex Babtise", 1500.0);
// Vérifier le solde
System.out.println("Solde actuel: "+ cpt.checkSolde());
cpt.deposer(4000.0); // Déposer de l'argent
cpt.retirer(3000.0); // Retirer de l'argent
// Vérifier le solde
System.out.println("Solde actuel: "+ cpt.checkSolde());
// Créer un objet CompteEpargne
CompteEpargne epargne = new CompteEpargne("555236123", "Emily Leona", 3000.0, 5.0);
// Appliquer l'intérêt
epargne.appliquerInter();
// Vérifier le solde
System.out.println("Compte d'épargne solde: " + epargne.checkSolde());
}
}
Sortie:
Solde actuel: 1500.0 Déposés: 4000.0. Nouveau solde: 5500.0 Retrait: 3000.0. Nouveau solde: 2500.0 Solde actuel: 2500.0 Déposés: 150.0. Nouveau solde: 3150.0 Intérêts appliqués: 150.0. Nouveau solde: 3150.0 Compte d'épargne solde: 3150.0
Exercice 4:
Écrire un programme Java pour créer une classe appelée « Vehicule » avec des attributs pour la marque, le modèle et l’année. Créez des classes fils « Voiture » et « Camion » qui ajoutent des attributs spécifiques tels que la taille du coffre pour les voitures et la capacité de charge pour les camions. Implémentez une méthode pour afficher les détails du véhicule dans chaque classe fille.
Diagrame de classe:

// Définir la classe Vehicule
class Vehicule {
// Attribut pour la marque du véhicule
private String marque;
// Attribut pour le modèle du véhicule
private String model;
// Attribut pour l'année du véhicule
private int an;
// Constructeur pour initialiser l'objet Vehicule
public Vehicule(String marque, String model, int an) {
this.marque = marque;
this.model = model;
this.an = an;
}
// Méthode pour afficher les détails du véhicule
public void afficherDetails() {
System.out.println("Les détails du véhicule:");
System.out.println("Marque: " + marque);
System.out.println("Modèle: " + model);
System.out.println("Année: " + an);
}
// Méthode Getter pour marque du véhicule
public String getMarque() {
return marque;
}
// Méthode Getter le modèle du véhicule
public String getModel() {
return model;
}
// Méthode Getter pour l'année du véhicule
public int getAn() {
return an;
}
}
// Définir la classe fil Voiture qui hérite Vehicule
class Voiture extends Vehicule {
// Attribution pour la taille du coffre de la voiture
private double tailleCoffre;
// Constructeur pour initialiser l'objet voiture
public Voiture(String marque, String model, int an, double tailleCoffre) {
// Appeler le constructeur de la classe mére
super(marque, model, an);
this.tailleCoffre = tailleCoffre;
}
// Surcharger la méthode afficherDetails pour inclure la taille
// du coffre
@Override
public void afficherDetails() {
// Appeler la méthode de la classe mére
super.afficherDetails();
System.out.println("Taille du coffre: "+ tailleCoffre +" mètres cubes");
}
// Méthode pour récupérer la taille du coffre
public double getTailleCoffre() {
return tailleCoffre;
}
// Méthode pour définir la taille du coffre
public void setTailleCoffre(double tailleCoffre) {
if (tailleCoffre > 0) {
this.tailleCoffre = tailleCoffre;
} else {
System.out.println("La taille du coffre doit être positive.");
}
}
}
// Définir la classe fil Camion qui hérite Vehicule
class Camion extends Vehicule {
// Attribut pour la capacité de charge du camion
private double capacitCharge;
// Constructeur pour initialiser l'objet camion
public Camion(String marque, String model, int an, double capacitCharge) {
// Appeler le constructeur de la classe mére
super(marque, model, an);
this.capacitCharge = capacitCharge;
}
// Surcharger la méthode afficherDetails pour inclure la capacité
// de charge
@Override
public void afficherDetails() {
// Appeler la méthode de la classe mére
super.afficherDetails();
System.out.println("Capacité de charge: "+ capacitCharge +" tons");
}
// Méthode pour récupérer la capacité de charge
public double getCapacitCharge() {
return capacitCharge;
}
// Méthode pour définir la capacité de charge
public void setCapacitCharge(double capacitCharge) {
if (capacitCharge > 0) {
this.capacitCharge = capacitCharge;
} else {
System.out.println("La capacité de charge doit être positive.");
}
}
}
// Définir la classe Main
public class Main {
public static void main(String[] args) {
// Créer un objet Voiture
Voiture v = new Voiture("BMW", "Série 6", 2014, 16.15);
v.afficherDetails(); // Afficher les détails de la voiture
// Créer un objet Camion
Camion c = new Camion("Mercedes", "Arocs", 2024, 4.5);
c.afficherDetails(); // Afficher les détails du camion
}
}
Sortie:
Les détails du véhicule: Marque: BMW Modèle: Série 6 Année: 2014 Taille du coffre: 16.15 mètres cubes Les détails du véhicule: Marque: Mercedes Modèle: Arocs Année: 2024 Capacité de charge: 4.5 tons
Exercice 5:
Écrire un programme Java pour créer une classe appelée « Client » avec des attributs pour le nom, l’email et l’historique des achats. Implémentez des méthodes pour ajouter des achats à l’historique et calculer la dépense totale. Créez une classe fille « ClientFidele » qui ajoute un attribut de taux de remise et une méthode pour appliquer la remise.
Diagrame de classe:

import java.util.ArrayList;
import java.util.List;
// Définir la classe Client
class Client {
// Attributs pour le nom, l'email et l'historique des achats du
// client
private String nom;
private String email;
private List<Double> historiqueAchats;
// Constructeur pour initialiser le nom et l'email du client
public Client(String nom, String email) {
this.nom = nom;
this.email = email;
// Initialiser l'historique des achats comme une liste vide
this.historiqueAchats = new ArrayList<>();
}
// Méthode pour ajouter un achat à l'historique des achats
public void addAchat(double montant) {
historiqueAchats.add(montant);
}
// Méthode de calcul des dépenses totales
public double calculerTotalDepenses() {
double total = 0;
// Parcourir en boucle chaque achat et faire la somme des
// montants
for (double purchase : historiqueAchats) {
total += purchase;
}
return total;
}
// Getters pour l'attribut nom
public String getNom() {
return nom;
}
// Getters pour l'attribut email
public String getEmail() {
return email;
}
// Méthode pour récupérer l'historique des achats
public List<Double> getHistoriqueAchats() {
return historiqueAchats;
}
}
// Définir la classe fille ClientFidele qui hérite la classe Client
class ClientFidele extends Client {
// Attribut pour le taux de remise
private double tauxRemise;
// Constructeur pour initialiser ClientFidele avec le nom,
// l'email et le taux de réduction.
public ClientFidele(String nom, String email, double tauxRemise) {
// Appeler le constructeur de la classe mére
super(nom, email);
this.tauxRemise = tauxRemise;
}
// Méthode pour appliquer la réduction à un montant donné
public double appliquerRemise(double montant) {
return montant - (montant * tauxRemise / 100);
}
// Surcharger la méthode addAchat pour appliquer la réduction
// avant d'ajouter l'achat
@Override
public void addAchat(double montant) {
double r = appliquerRemise(montant);
// Appeler la méthode de la classe mére pour ajouter le
// montant réduit
super.addAchat(r);
}
// Méthode pour récupérer le taux de remise
public double getTauxRemise() {
return tauxRemise;
}
// Méthode pour définir le taux de remise
public void setTauxRemise(double tauxRemise) {
this.tauxRemise = tauxRemise;
}
}
// Définir la classe Main
public class Main {
public static void main(String[] args) {
// Créer un client régulier
Client c = new Client("Alex Rio", "[email protected]");
c.addAchat(200);
c.addAchat(300);
System.out.println("Dépenses totales pour "+ c.getNom() +": "+ c.calculerTotalDepenses());
// Créer un client fidèle avec un taux de réduction 5%
ClientFidele f = new ClientFidele("Emily Bazi", "[email protected]", 5);
f.addAchat(200);
f.addAchat(300);
System.out.println("Dépenses totales pourr "+ f.getNom() +" après réduction: "+ f.calculerTotalDepenses());
}
}
Sortie:
Dépenses totales pour Alex Rio: 500.0 Dépenses totales pourr Emily Bazi après réduction: 475.0
Éditeur de code Java: Testez votre code en ligne!
Exercices corrigés Java – Programmation Orientée Objet | Partie 2
Exercices corrigés Java – Programmation Orientée Objet | Partie 3
Exercices corrigés Java – Programmation Orientée Objet | Partie 4
Exercices corrigés Java – Programmation Orientée Objet | Partie 5
Exercices corrigés Java – Programmation Orientée Objet | Partie 6
Testez vos connaissances – QCM Java corrigé – Partie 1QCM sur Java avec des réponses pour la préparation des entretiens d’embauche, des tests en ligne, aux examens et aux certifications. Ces questions et réponses…Lire plus
- Exercice Java Corrigé pour Débutant | Partie 1
- Exercice Java Corrigé pour Débutant | Partie 2
- Exercice Java Corrigé pour Débutant | Partie 3
- Exercice Java Corrigé pour Débutant | Partie 4
- Exercice Java Corrigé pour Débutant | Partie 5
- Exercice Java Corrigé pour Débutant | Partie 6
- Exercice Java Corrigé pour Débutant | Partie 7
- Exercice Java Corrigé pour Débutant | Partie 8
- Exercice Java Corrigé pour Débutant | Partie 9
- Exercice Java Corrigé pour Débutant | Partie 10
- Exercice Java Corrigé – Méthodes Récursives
- Exercice Java Corrigé sur les Collections – Arraylist – Partie 1
- Exercice Java Corrigé sur les Collections – Arraylist – Partie 2
- Exercice Java Corrigé sur les Collections – Arraylist – Partie 3
- Exercice Java Corrigé sur les Collections – Arraylist – Partie 4
- Exercice Java Corrigé sur les Collections – LinkedList – Partie 1
- Exercice Java Corrigé sur les Collections – LinkedList – Partie 2
- Exercice Java Corrigé sur les Collections – LinkedList – Partie 3
- Exercice Java Corrigé sur les Collections – HashSet
- Exercice Java Corrigé sur les Collections – TreeSet – Partie 1
- Exercice Java Corrigé sur les Collections – TreeSet – Partie 2
- Exercice Java Corrigé sur les Collections – PriorityQueue
- Exercice Java Corrigé sur les Collections – HashMap
- Exercice Java Corrigé sur les Collections – TreeMap
- Exercices corrigés Java POO – Constructeurs
- Exercices corrigés Java – Programmation Orientée Objet | Partie 1
- Exercices corrigés Java – Programmation Orientée Objet | Partie 2
- Exercices corrigés Java – Programmation Orientée Objet | Partie 3
- Exercices corrigés Java – Programmation Orientée Objet | Partie 4
- Exercices corrigés Java – Programmation Orientée Objet | Partie 5
- Exercices corrigés Java – Programmation Orientée Objet | Partie 6
- Exercice Java Corrigé sur POO – Polymorphism
- Exercice Java Corrigé – POO – Interfaces
- Exercice Java Corrigé – POO – Classe Abstraite
- Exercice Java Corrigé – POO – Classes Imbriquées
- Exercices corrigés Java les classes et l’héritage – Partie 1
- Exercices corrigés Java les classes et l’héritage – Partie 2
- Exercice Java Corrigé – Gestion Des Exceptions



