Exercices corrigés Java – Programmation Orientée Objet | Partie 2

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:

Écrivez un programme Java pour créer une classe appelée « FeuDeCirculation » avec des attributs pour la couleur et la durée, et des méthodes pour changer la couleur et vérifier si le feu est rouge ou vert.

Diagrame de classe:

Solution:

// Définir la classe FeuDeCirculation
class FeuDeCirculation {
  
  // Déclarer une variable privée pour stocker la couleur du feu de 
  // circulation
  private String couleur;
  
  // Déclarer une variable privée pour stocker la durée du feu en 
  // secondes
  private int duree;

  // Constructeur pour la classe FeuDeCirculation
  public FeuDeCirculation(String couleur, int duree) {
    // Initialiser la couleur du feu de circulation
    this.couleur = couleur;
    
    // Initialiser la durée du feu de circulation
    this.duree = duree;
  }

  // Méthode pour changer la couleur du feu de circulation
  public void changerCouleur(String newColor) {
    // Mettre à jour la variable couleur avec la nouvelle couleur
    couleur = newColor;
  }

  // Méthode pour vérifier si le feu est rouge
  public boolean estRouge() {
    // Retourne true si la couleur est rouge, sinon retourne false
    return couleur.equals("Rouge");
  }

  // Méthode pour vérifier si le feu est vert
  public boolean estVert() {
    // Retourne true si la couleur est verte, sinon retourne false
    return couleur.equals("Vert");
  }

  // Méthode pour obtenir la durée du feu de circulation
  public int getDuree() {
    // Renvoyer la valeur de la durée
    return duree;
  }

  // Méthode pour définir la durée du feu de circulation
  public void setDuree(int duree) {
    // Mettre à jour la variable durée avec la nouvelle valeur
    this.duree = duree;
  }
}

// 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 FeuDeCirculation avec une couleur 
  // initiale 'Rouge' et une durée de 30 secondes.
    FeuDeCirculation fc = new FeuDeCirculation("Rouge", 30);

    // Afficher si le feu est rouge
    System.out.println("Le feu est rouge: "+ fc.estRouge());
    
    // Afficher si le feu est vert
    System.out.println("Le feu est vert: "+ fc.estVert());

    // Changer la couleur du feu de circulation en 'Vert'
    fc.changerCouleur("Vert");

    // Afficher si le feu de circulation est maintenant vert
    System.out.println("Le feu de circulation est maintenant vert: "+ fc.estVert());
    
    // Afficher la durée du feu de circulation
    System.out.println("La durée du feu est: "+ fc.getDuree());
    
    // Définir une nouvelle durée pour le feu de circulation à 15 
    // secondes
    fc.setDuree(15);
    
    // Afficher la durée actualisée du feu de circulation
    System.out.println("La durée du feu est maintenant: "+ fc.getDuree());
  }
}

Sortie:

Le feu est rouge: true
Le feu est vert: false
Le feu de circulation est maintenant vert: true
La durée du feu est: 30
La durée du feu est maintenant: 15
 

Exercice 2:

Écrire un programme Java pour créer une classe appelée « Employee » avec un nom, un salaire, une date d’embauche et une méthode pour calculer les années de service.

Diagrame de classe:

Solution:

// Importer la classe LocalDate du package java.time
import java.time.LocalDate;
// Importer la classe Period du package java.time
import java.time.Period;

// Définir la classe Employee
class Employee {
  
  // Déclarer une variable privée pour stocker le nom de l'employé
  private String nom;

  // Déclarer une variable privée pour stocker le salaire de 
  // l'employé
  private double salaire;
  
  // Déclarer une variable privée pour stocker la date d'embauche de 
  // l'employé
  private LocalDate datEmbauche;

  // Constructeur pour la classe Employee
  public Employee(String nom, double salaire, LocalDate datEmbauche) {
    // Initialiser le nom de l'employé
    this.nom = nom;
    
    // Initialiser le salaire de l'employé
    this.salaire = salaire;
    
    // Initialiser la date d'embauche de l'employé
    this.datEmbauche = datEmbauche;
  }

  // Méthode pour récupérer le nom de l'employé
  public String getNom() {
    // Renvoyer le nom de l'employé
    return nom;
  }

  // Méthode pour définir le nom de l'employé
  public void setNom(String nom) {
    // Mettre à jour la variable nom avec la nouvelle valeur
    this.nom = nom;
  }

  // Méthode pour récupérer le salaire de l'employé
  public double getSalaire() {
    // Renvoyer le salaire de l'employé
    return salaire;
  }

  // Méthode pour définir le salaire de l'employé
  public void setSalaire(double salaire) {
    // Mettre à jour la variable salaire avec la nouvelle valeur
    this.salaire = salaire;
  }

  // Méthode pour récupérer la date d'embauche de l'employé
  public LocalDate getDatEmbauche() {
    // Renvoyer la date d'embauche de l'employé
    return datEmbauche;
  }

  // Méthode pour définir la date d'embauche de l'employé
  public void setDatEmbauche(LocalDate datEmbauche) {
    // Mettre à jour la variable datEmbauche avec la nouvelle valeur
    this.datEmbauche = datEmbauche;
  }

  // Méthode de calcul des années de service de l'employé
  public int calculerAnneeService() {
    // Calculer la période entre la date d'embauche et la date du 
    // jour, et renvoyer le nombre d'années.
    return Period.between(datEmbauche, LocalDate.now()).getYears();
  }

  // Méthode pour afficher les détails de l'employé
  public void afficherEmployee() {
    // Afficher le nom de l'employé
    System.out.println("\nNom: "+ nom);
    
    // Afficher le salaire de l'employé
    System.out.println("Salaire: "+ salaire);
    
    // Afficher la date d'embauche de l'employé
    System.out.println("Date d'embauche: "+ datEmbauche);
  }
}


// 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 Employee nommé emp1
    Employee emp1 = new Employee("Alex Babtise", 80000, LocalDate.parse("2024-05-01"));
    
    // Créer un nouvel objet Employee nommé emp2
    Employee emp2 = new Employee("Bob Kimo", 40000, LocalDate.parse("2022-03-01"));
    
    // Afficher les détails de l'employé 1
    emp1.afficherEmployee();
    
    // Afficher les années de service de l'employé 1
    System.out.println("Années de service: "+ emp1.calculerAnneeService());
    
    // Afficher les détails de l'employé 2
    emp2.afficherEmployee();
    
    // Afficher les années de service de l'employé 2
    System.out.println("Années de service: "+ emp2.calculerAnneeService());
  }
}

Sortie:

Nom: Alex Babtise
Salaire: 80000.0
Date d'embauche: 2024-05-01
Années de service: 0

Nom: Bob Kimo
Salaire: 40000.0
Date d'embauche: 2022-03-01
Années de service: 2
 

Exercice 3:

Écrire un programme Java pour créer une classe appelée « Etudiant » avec un nom, une note et des cours, ainsi que des méthodes pour ajouter et supprimer des cours.

Diagrame de classe:

Solution:

// Importer la classe ArrayList du Java Collections Framework
import java.util.ArrayList;

// Définir la classe Etudiant
class Etudiant {
  
  // Déclarer une variable privée pour stocker le nom de l'étudiant
  private String nom;
  
  // Déclarer une variable privée pour stocker la note de l'étudiant
  private int note;
  
  // Déclarez un ArrayList privé pour stocker les cours de l'étudiant
  private ArrayList cours;

  // Constructeur pour la classe Etudiant
  public Etudiant(String nom, int note) {
    // Initialiser le nom de l'étudiant
    this.nom = nom;
    
    // Initialiser la note de l'étudiant
    this.note = note;
    
    // Initialiser la liste de cours ArrayList
    this.cours = new ArrayList();
  }

  // Méthode pour récupérer le nom de l'étudiant
  public String getNom() {
    // Retourner le nom de l'étudiant
    return nom;
  }

  // Méthode pour récupérer la note de l'étudiant
  public int getNote() {
    // Retourner la note de l'étudiant
    return note;
  }

  // Méthode pour récupérer la liste de cours de l'étudiant
  public ArrayList getCours() {
    // Retourner la liste de cours ArrayList
    return cours;
  }

  // Méthode pour ajouter un cours à la liste des cours de l'étudiant
  public void ajouterCours(String c) {
    // Ajouter le cours donné à la liste des cours
    cours.add(c);
  }

  // Méthode pour supprimer un cours de la liste des cours de 
  // l'étudiant
  public void supprimerCours(String c) {
    // Supprime le cours donné de la liste des cours
    cours.remove(c);
  }

  // Méthode pour afficher les détails de l'étudiant
  public void afficherEtudiant() {
    // Afficher le nom de l'étudiant
    System.out.println("Nom: " + nom);
    
    // Afficher la note de l'étudiant
    System.out.println("Note: " + note);
  }
}


// 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 Etudiant nommé e1
    Etudiant e1 = new Etudiant("Alex Babtise", 18);
    
    // Créer un nouvel objet Etudiant nommé e2
    Etudiant e2 = new Etudiant("Bob Kimo", 16);
    
    // Afficher un en-tête pour les détails de l'étudiant
    System.out.println("Détails de l'étudiant:");
    
    // Afficher les données de l'étudiant 1
    e1.afficherEtudiant();
    
    // Afficher les données de l'étudiant 2
    e2.afficherEtudiant();
    
    // Afficher un message indiquant que des cours sont ajoutés pour 
    // l'étudiant 1
    System.out.println("Ajouter des cours pour "+ e1.getNom());
    e1.ajouterCours("Mathématiques");
    e1.ajouterCours("Biologie");
    e1.ajouterCours("Histoire");
    
    // Afficher le nom de e1 et sa liste de cours
    System.out.println("Les cours de "+ e1.getNom() +" : "+ e1.getCours());

    // Afficher un message indiquant que des cours sont ajoutés pour 
    // l'étudiant 2
    System.out.println("\nAjouter des cours pour "+ e2.getNom());
    e2.ajouterCours("Anglais");
    e2.ajouterCours("Géologie");
    e2.ajouterCours("Physique");
    
    // Afficher le nom de e2 et sa liste de cours
    System.out.println("Les cours de "+ e2.getNom() +" : "+ e2.getCours());
    
    // Afficher un message indiquant que le cours 'Biologie' est 
    // supprimé pour e1
    System.out.println("\nSuppression du cours 'Biologie' pour "+ e1.getNom());
    
    // Supprimer le cours 'Biologie' des cours de e1
    e1.supprimerCours("Biologie");
    
    // Affichez le nom de e1 et sa liste de cours mise à jour.
    System.out.println("Les cours de "+ e1.getNom() +" : "+ e1.getCours());
  }
}

Sortie:

Détails de l'étudiant:
Nom: Alex Babtise
Note: 18
Nom: Bob Kimo
Note: 16
Ajouter des cours pour Alex Babtise
Les cours de Alex Babtise : [Mathématiques, Biologie, Histoire]

Ajouter des cours pour Bob Kimo
Les cours de Bob Kimo : [Anglais, Géologie, Physique]

Suppression du cours 'Biologie' pour Alex Babtise
Les cours de Alex Babtise : [Mathématiques, Histoire]
 

Exercice 4:

Écrire un programme Java pour créer une classe appelée « Bibliotheque » avec une collection de livres et des méthodes pour ajouter et supprimer des livres.

Diagrame de classe:

Solution:

// Importer la classe ArrayList du package java.util
import java.util.ArrayList;

// Définir la classe Livre
class Livre {
  // Attribut privé pour stocker le titre du livre
  private String titre;
  // Attribut privé pour stocker l'auteur du livre
  private String auteur;

  // Constructeur pour initialiser les champs titre et auteur
  public Livre(String titre, String auteur) {
    // Attribuer le paramètre titre au champ titre
    this.titre = titre;
    // Attribuer le paramètre auteur au champ auteur
    this.auteur = auteur;
  }

  // Méthode pour récupérer le titre
  public String getTitre() {
    // Retourner la valeur du champ titre
    return titre;
  }

  // Méthode Setter pour le titre
  public void setTitre(String titre) {
    // Attribuer le paramètre titre au champ titre
    this.titre = titre;
  }

  // Méthode pour récupérer l'auteur
  public String getAuteur() {
    // Retourner la valeur du champ auteur
    return auteur;
  }

  // Méthode Setter pour l'auteur
  public void setAuteur(String auteur) {
    // Attribuer le paramètre auteur au champ auteur
    this.auteur = auteur;
  }
} 


// Définir la classe Bibliotheque
class Bibliotheque {
  // Attribut privé pour stocker une liste d'objets Livres
  private ArrayList<Livre> livres;

  // Constructeur pour initialiser la variable livres
  public Bibliotheque() {
    // Créer une nouvelle ArrayList pour contenir les objets Livre
    livres = new ArrayList<Livre>();
  }

  // Méthode pour ajouter un livre à la liste des livres
  public void addLivre(Livre livre) {
    // Ajouter le livre spécifié à la liste des livres
    livres.add(livre);
  }

  // Méthode pour supprimer un livre de la liste des livres
  public void removeLivre(Livre livre) {
    // Supprimer le livre spécifié de la liste des livres
    livres.remove(livre);
  }

  // Méthode pour récupérer la liste des livres
  public ArrayList<Livre> getLivres() {
    // Retourner la liste des livres
    return livres;
  }
}


// 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 une nouvelle instance de la classe Bibliotheque
    Bibliotheque biblio = new Bibliotheque();

    // Créer de nouveaux objets Livre avec le titre et l'auteur
    Livre livre1 = new Livre("Les Misérables", "Victor Hugo");
    Livre livre2 = new Livre("Nana", "Émile Zola");
    Livre livre3 = new Livre("Les fleurs du mal", "Baudelaire");
    Livre livre4 = new Livre("Le Cid", "Corneille");

    // Ajouter les livres à la biblio
    biblio.addLivre(livre1);
    biblio.addLivre(livre2);
    biblio.addLivre(livre3);
    biblio.addLivre(livre4);

    System.out.println("Livres dans la bibliothéque:");
    // Parcourir la liste des livres de la biblio
    for (Livre livre : biblio.getLivres()) {
      // Afficher le titre et l'auteur de chaque livre
      System.out.println(livre.getTitre()+" par "+livre.getAuteur());
    }

    // Supprimer un livre de la biblio
    biblio.removeLivre(livre2);
    System.out.println("\nLivres dans la biblio après suppression "+ livre2.getTitre() +":");
    // Parcourir la liste mise à jour des livres dans la biblio
    for (Livre livre : biblio.getLivres()) {
      // Afficher le titre et l'auteur de chaque livre
      System.out.println(livre.getTitre()+" par "+livre.getAuteur());
    }
  }
} 

Sortie:

Livres dans la bibliothéque:
Les Misérables par Victor Hugo
Nana par Émile Zola
Les fleurs du mal par Baudelaire
Le Cid par Corneille

Livres dans la biblio après suppression Nana:
Les Misérables par Victor Hugo
Les fleurs du mal par Baudelaire
Le Cid par Corneille
 

Exercice 5:

Écrire un programme Java pour créer une classe appelée « Avion » avec un numéro de vol, une destination et des attributs d’heure de départ, ainsi que des méthodes pour vérifier l’état et le retard du vol.

Diagrame de classe:

Solution:

// Import the LocalTime class from the java.time package
import java.time.LocalTime;

// Définir la classe Avion
class Avion {
  // Attribut privé pour stocker le numéro de vol
  private String numVol;
  // Attribut privé pour stocker la destination
  private String destination;
  // Attribut privé pour stocker l'heure de départ prévue
  private LocalTime heureDepart;
  // Attribut privé pour stocker le temps de retard en minutes
  private int tempsRetard;

  // Constructeur pour initialiser le numéro de vol, la destination 
  // et l'heure de départ prévue
  public Avion(String numVol, String destination, LocalTime heureDepart) {
    // Attribuer le paramètre numVol au champ numVol
    this.numVol = numVol;
    // Attribuer le paramètre destination au champ destination
    this.destination = destination;
    // Attribuer le paramètre heureDepart au champ heureDepart
    this.heureDepart = heureDepart;
    // Initialiser le temps de retard à 0
    this.tempsRetard = 0;
  }

  // Méthode pour obtenir le numéro de vol
  public String getNumVol() {
    // Retourner la valeur du champ numVol
    return numVol;
  }

  // Méthode pour définir le numéro de vol
  public void setNumVol(String numVol) {
    // Attribuer le paramètre numVol au champ numVol
    this.numVol = numVol;
  }

  // Méthode pour obtenir la destination
  public String getDestination() {
    // Retourner la valeur du champ destination
    return destination;
  }

  // Méthode pour définir la destination
  public void setDestination(String destination) {
    // Attribuer le paramètre destination au champ destination
    this.destination = destination;
  }

  // Méthode pour obtenir l'heure de départ
  public LocalTime getHeureDepart() {
    // Retourner la valeur du champ heureDepart
    return heureDepart;
  }

  // Méthode pour définir l'heure de départ
  public void setHeureDepart(LocalTime heureDepart) {
    // Attribuer le paramètre heureDepart au champ heureDepart
    this.heureDepart = heureDepart;
  }

  // Méthode pour obtenir le temps de retard
  public int getTempsRetard() {
    // Retourner la valeur du champ tempsRetard
    return tempsRetard;
  }

  // Méthode pour fixer un délai et mettre à jour l'heure de départ 
  // prévue
  public void retarder(int minutes) {
    // Affecter le paramètre minutes au champ tempsRetard
    this.tempsRetard = minutes;
    // Mettre à jour l'heure de départ prévue en ajoutant le temps de 
    // retard
    this.heureDepart = this.heureDepart.plusMinutes(minutes);
  }

  // Méthode pour vérifier le statut du vol
  public void checkStatutVol() {
    // Vérifier s'il n'y a pas de retard
    if (tempsRetard == 0) {
      // Afficher un message indiquant que le vol est à l'heure
      System.out.println("Le vol " + numVol + " est à l'heure.");
    } else {
      // Afficher un message indiquant que le vol est retardé
      System.out.println("Le vol " + numVol + " est retardé de " + tempsRetard + " minutes.");
    }
  }
} 


// 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 Avion avec le numéro de vol 'ABC123', la 
    // destination 'Paris' et l'heure de départ 11:30.
    Avion a1 = new Avion("ABC123", "Paris", LocalTime.of(11, 30));
    // Créer un nouvel objet Avion avec le numéro de vol 'POM569', la 
    // destination 'CasaBlanca' et l'heure de départ 15:00.
    Avion a2 = new Avion("POM569", "CasaBlanca", LocalTime.of(15, 0));
    // Créer un nouvel objet Avion avec le numéro de vol 'UYT852', la 
    // destination 'Bruxelles' et l'heure de départ 12:00.
    Avion a3 = new Avion("UYT852", "Bruxelles", LocalTime.of(12, 0));
	
    // Afficher le statut initial du vol
    System.out.println("Statut du vol:");
    // Vérifier et afficher l'état de a1
    a1.checkStatutVol();
    // Vérifier et afficher l'état de a2
    a2.checkStatutVol();
    // Vérifier et afficher l'état de a3
    a3.checkStatutVol();
	
    // Retarder a1 de 30 minutes
    a1.retarder(30);
    // Retarder a2 de 90 minutes
    a2.retarder(90);
	
    // Afficher l'état actuel du vol après les retards
    System.out.println("\nStatut actuel du vol:");
    // Vérifier et afficher l'état de a1
    a1.checkStatutVol();
    // Vérifier et afficher l'état de a2
    a2.checkStatutVol();
    // Vérifier et afficher l'état de a3
    a3.checkStatutVol();
  }
}

Sortie:

Statut du vol:
Le vol ABC123 est à l'heure.
Le vol POM569 est à l'heure.
Le vol UYT852 est à l'heure.

Statut actuel du vol:
Le vol ABC123 est retardé de 30 minutes.
Le vol POM569 est retardé de 90 minutes.
Le vol UYT852 est à l'heure.
 

Éditeur de code Java: Testez votre code en ligne!

QCM-Java

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *