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

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 « Personne » avec un nom et un attribut age. Créez deux instances de la classe « Personne », définissez leurs attributs à l’aide du constructeur et affichez leur nom et leur âge.

Exemple de sortie:

Alex Babtise a 25 ans.
Emily Tonari a 18 ans.

Diagrame de classe:

Solution:

 // Définir la classe Personne
class Person {
    // Déclarer une variable privée pour stocker le nom du personne
    private String name;
    // Déclarer une variable privée pour stocker l'age du personne
    private int age;

    // Constructeur de la classe Personne qui initialise 
    // les variables name et age
    public Person(String name, int age) {
        // Attribuer à la variable name la valeur du paramètre name 
        // fourni
        this.name = name;
        // Attribuer à la variable age la valeur du paramètre age 
        // fourni
        this.age = age;
    }

    // Méthode pour récupérer le nom de la personne
    public String getName() {
        // Retourner la valeur de la variable name
        return name;
    }

    // Méthode pour récupérer l'age de la personne
    public int getAge() {
        // Retourner la valeur de la variable age
        return age;
    }

    // Méthode pour définir le nom de la personne
    public void setName(String name) {
        // Attribue à la variable name la valeur du paramètre name 
        // fourni
        this.name = name;
    }

    // Méthode pour définir l'age de la personne
    public void setAge(int age) {
        // Attribuer à la variable age la valeur du paramètre age 
        // fourni
        this.age = age;
    }
}

// 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 instance de la classe Personne avec le nom 'Alex 
        // Babtise' et l'âge 25
        Person p1 = new Person("Alex Babtise", 25);
        // Créer une autre instance de la classe Personne avec le nom 
        // "Emily Tonari" et l'âge 18
        Person p2 = new Person("Emily Tonari", 18);

        // Afficher le nom et l'âge de p1 sur la console
        System.out.println(p1.getName()+" a "+p1.getAge()+" ans.");
        // Afficher le nom et l'âge de p2 sur la console
        System.out.println(p2.getName()+" a "+p2.getAge()+" ans.\n");

        // Modifier le nom et l'âge de p2 en utilisant les méthodes 
        // setter
        p2.setName("Thomas Gozilla");
        p2.setAge(30);
		
        // Afficher le nom et l'âge actualisés de p2 sur la console
        System.out.println(p2.getName()+" a "+p2.getAge()+" ans.\n");
    }
} 

Sortie:

Alex Babtise a 25 ans.
Emily Tonari a 18 ans.

Thomas Gozilla a 30 ans.

Explication:

Dans l’exemple ci-dessus, nous créons deux instances de la classe « Personne », nous définissons leurs attributs à l’aide du constructeur et nous affichons leur nom et leur âge à l’aide des méthodes getter. Nous modifions également les attributs à l’aide des méthodes setter et affichons les valeurs mises à jour.

 

Exercice 2:

Écrivez un programme Java pour créer une classe appelée « Chien » avec un nom et un attribut de race. Créez deux instances de la classe « Chien », définissez leurs attributs à l’aide du constructeur et modifiez les attributs à l’aide des méthodes setter, puis affichez les valeurs mises à jour.

Diagrame de classe:

Solution:

// Définir la classe Chien
class Chien {
    // Déclarer une variable privée pour stocker le nom du Chien
    private String nom;
    // Déclarer une variable privée pour stocker la race du Chien
    private String race;

    // Constructeur de la classe Chien qui initialise les variables 
    // nom et race
    public Chien(String nom, String race) {
        // Attribuer à la variable nom la valeur du paramètre nom 
        // fourni
        this.nom = nom;
        // Attribuer à la variable race la valeur du paramètre race 
        // fourni
        this.race = race;
    }

    // Méthode pour récupérer le nom du Chien
    public String getNom() {
        // Retourner la valeur de la variable nom
        return nom;
    }

    // Méthode pour définir le nom du Chien
    public void setNom(String nom) {
        // Attribuer à la variable nom la valeur du paramètre nom 
        // fourni
        this.nom = nom;
    }

    // Méthode pour récupérer la race Chien
    public String getRace() {
        // Retourner la valeur de la variable race
        return race;
    }

    // Méthode pour définir la race du Chien
    public void setRace(String race) {
        // Attribuer à la variable race la valeur du paramètre race 
        // fourni
        this.race = race;
    }
} 

// 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 instance de la classe Chien avec le nom 'Rio' et 
        // la race 'Berger allemand'
        Chien ch1 = new Chien("Rio", "Berger allemand");
        // Créez une autre instance de la classe Chien avec le nom 
        // 'Rocky' et la race 'Husky'
        Chien ch2 = new Chien("Rocky", "Husky");

        // Afficher le nom et la race de ch1 sur la console
        System.out.println(ch1.getNom()+" est un "+ch1.getRace());
        // Afficher le nom et la race de ch2 sur la console
        System.out.println(ch2.getNom()+" est un "+ch2.getRace());

        // Afficher un message indiquant que la race de ch1 et le nom 
        // de ch2 vont être modifiés
        System.out.println("\nDéfinir la nouvelle race de ch1 et le nouveau nom de ch2:");
        // Changer la race du ch1 en "Beagle"
        ch1.setRace("Beagle");
        // Changer le nom de ch2 en "Simba"
        ch2.setNom("Simba");

        // Affichez sur la console le nom et la race mis à jour de 
        // ch1.
        System.out.println(ch1.getNom()+" est un "+ch1.getRace());
        // Affichez sur la console le nom et la race mis à jour de 
        // ch2.
        System.out.println(ch2.getNom()+" est un "+ch2.getRace());
    }
} 

Sortie:

Rio est un Berger allemand
Rocky est un Husky

Définir la nouvelle race de ch1 et le nouveau nom de ch2:
Rio est un Beagle
Simba est un Husky
 

Exercice 3:

Écrire un programme Java pour créer une classe appelée « Livre » avec des attributs pour le titre, l’auteur et l’ISBN, et des méthodes pour ajouter et supprimer des livres d’une collection.

Diagrame de classe:

Solution:

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

// Définir la classe Livre
class Livre {
    // Déclarer une variable privée pour stocker le titre du livre
    private String titre;
    // Déclarer une variable privée pour stocker l'auteur du livre
    private String auteur;
    // Déclarer une variable privée pour stocker l'ISBN du livre
    private String ISBN;
    // Déclarez un ArrayList statique pour stocker la collection 
    // d'objets de Livre.
    private static ArrayList<Livre> livres = new ArrayList<Livre>();

    // Constructeur de la classe Livre qui initialise les variables 
    // titre, auteur et ISBN
    public Livre(String titre, String auteur, String ISBN) {
        // Attribue à la variable 'titre' la valeur du paramètre 
        // 'titre' fourni
        this.titre = titre;
        // Attribue à la variable 'auteur' la valeur du paramètre 
        // 'auteur' fourni
        this.auteur = auteur;
        // Attribue à la variable 'ISBN' la valeur du paramètre 
        // 'ISBN' fourni
        this.ISBN = ISBN;
    }

    // Méthode pour récupérer le titre du livre
    public String getTitre() {
        // Renvoyer la valeur de la variable titre
        return titre;
    }

    // Méthode pour définir le titre du livre
    public void setTitre(String titre) {
        // Attribue à la variable 'titre' la valeur du paramètre 
        // 'titre' fourni
        this.titre = titre;
    }

    // Méthode pour récupérer l'auteur du livre
    public String getAuteur() {
        // Renvoyer la valeur de la variable auteur
        return auteur;
    }

    // Méthode pour définir l'auteur du livre
    public void setAuteur(String auteur) {
        // Attribue à la variable 'auteur' la valeur du paramètre 
        // 'auteur' fourni
        this.auteur = auteur;
    }

    // Méthode pour récupérer l'ISBN du livre
    public String getISBN() {
        // Renvoyer la valeur de la variable ISBN
        return ISBN;
    }

    // Méthode pour définir l'ISBN du livre
    public void setISBN(String ISBN) {
        // Attribue à la variable 'ISBN' la valeur du paramètre 
        // 'ISBN' fourni
        this.ISBN = ISBN;
    }

    // Méthode statique pour ajouter un livre à la collection de 
    // livres
    public static void addLivre(Livre livre) {
        // Ajouter l'objet livre fourni à la collection livres
        livres.add(livre);
    }

    // Méthode statique pour supprimer un livre de la collection de 
    // livres
    public static void removeLivre(Livre livre) {
        // Supprime l'objet livre fourni de la collection livres
        livres.remove(livre);
    }

    // Méthode statique pour récupérer toute la collection de livres
    public static ArrayList<Livre> getLivres() {
        // Retourner la liste de 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éez une instance de la classe Livre avec titre 
        // "L'Étranger", auteur "Albert Camus", et ISBN 
        // "6547165001881"
        Livre livre1 = new Livre("L'Étranger", "Albert Camus", "6547165001881");
        // Créez une autre instance de la classe Livre avec titre "Le 
        // père Goriot", auteur "Honoré de Balzac", et ISBN 
        // "661100321741"
        Livre livre2 = new Livre("Le père Goriot", "Honoré de Balzac", "661100321741");
        
        // Ajouter livre1 à la collection de livres
        Livre.addLivre(livre1);
        // Ajouter livre2 à la collection de livres
        Livre.addLivre(livre2);
        
        // Récupérer la collection de livres et la stocker dans une 
        // ArrayList nommée livres.
        ArrayList<Livre> livres = Livre.getLivres();
        
        // Afficher un en-tête pour la liste des livres
        System.out.println("Liste des livres:");
        
        // Parcourir chaque livre de la collection livres
        for (Livre l : livres) {
            // Affichez le titre, l'auteur et le numéro ISBN de 
            // chaque livre.
            System.out.println(l.getTitre() + " par " + l.getAuteur() + ", ISBN: " + l.getISBN());
        }
        
        // Supprimer le livre 1 de la collection de livres
        Livre.removeLivre(livre1);
        
        // Afficher un message indiquant que le livre 1 a été 
        // supprimé
        System.out.println("\nAprès suppression de " + livre1.getTitre() + ":");
        
        // Afficher un en-tête pour la liste des livres mise à jour
        System.out.println("Liste des livres mise à jour:");
        
        // Parcourir chaque livre de la collection livres
        for (Livre l : livres) {
            // Affichez le titre, l'auteur et le numéro ISBN de 
            // chaque livre.
            System.out.println(l.getTitre() + " par " + l.getAuteur() + ", ISBN: " + l.getISBN());
        }
    }
}

Sortie:

Liste des livres:
L'Étranger par Albert Camus, ISBN: 6547165001881
Le père Goriot par Honoré de Balzac, ISBN: 661100321741

Après suppression de L'Étranger:
Liste des livres mise à jour:
Le père Goriot par Honoré de Balzac, ISBN: 661100321741
 

Exercice 4:

Écrire un programme Java pour créer une classe appelée « Employee » avec un nom, un poste et un salaire, ainsi que des méthodes pour calculer et mettre à jour le salaire.

Diagrame de classe:

Solution:

// 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 poste de 
    // l'employé
    private String poste;
    // Déclarer une variable privée pour stocker le salaire de 
    // l'employé
    private double salaire;

    // Constructeur de la classe Employee qui initialise les 
    // variables nom, poste et salaire
    public Employee(String nom, String poste, double salaire) {
        // Attribue à la variable nom la valeur du paramètre nom 
        // fourni
        this.nom = nom;
        // Attribue à la variable poste la valeur du paramètre poste 
        // fourni
        this.poste = poste;
        // Attribue à la variable salaire la valeur du paramètre 
        // salaire fourni
        this.salaire = salaire;
    }

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

    // Méthode pour définir le nom de l'employé
    public void setNom(String nom) {
        // Attribue à la variable nom la valeur du paramètre nom 
        // fourni
        this.nom = nom;
    }

    // Méthode pour récupérer le poste de l'employé
    public String getPoste() {
        // Retourner la valeur de la variable poste
        return poste;
    }

    // Méthode pour définir le poste de l'employé
    public void setPoste(String poste) {
        // Attribue à la variable poste la valeur du paramètre poste 
        // fourni
        this.poste = poste;
    }

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

    // Méthode pour définir le salaire de l'employé
    public void setSalaire(double salaire) {
        // Attribue à la variable salaire la valeur du paramètre 
        // salaire fourni
        this.salaire = salaire;
    }

    // Méthode pour augmenter le salaire de l'employé d'un 
    // pourcentage donné
    public void augSalaire(double pourcentage) {
        // Calculer le nouveau salaire en augmentant le salaire 
        // actuel du pourcentage donné.
        salaire = salaire + salaire * pourcentage / 100;
    }

    // Méthode pour afficher les détails de l'employé
    public void afficherEmployee() {
        // Afficher le nom de l'employé
        System.out.println("Nom: " + nom);
        // Afficher le poste de l'employé
        System.out.println("Poste: " + poste);
        // Afficher le salaire de l'employé
        System.out.println("Salaire: " + salaire);
    }
}

// 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 instance de la classe Employee
        Employee e1 = new Employee("Alex Babtise", "Développeur", 80000);
        // Créer une autre instance de la classe Employee
        Employee e2 = new Employee("Emily Firoza", "Comptable", 70000);

        System.out.println("\nDétails de l'employé:");
        // Afficher les détails de e1
        e1.afficherEmployee();
        // Afficher les détails de e2
        e2.afficherEmployee();

        // Augmenter le salaire de e1 de 5%
        e1.augSalaire(5);
        // Augmenter le salaire de e2 de 10%
        e2.augSalaire(10);

        System.out.println("\nAprès l'augmentation des salaires:");
        System.out.println("\n5% pour 'Alex Babtise':");
        // Afficher les données mises à jour de e1
        e1.afficherEmployee();
        System.out.println("\n10% pour 'Emily Firoza':");
        // Afficher les données mises à jour de e2
        e2.afficherEmployee();
    }
}

Sortie:

Détails de l'employé:
Nom: Alex Babtise
Poste: Développeur
Salaire: 80000.0
Nom: Emily Firoza
Poste: Comptable
Salaire: 70000.0

Après l'augmentation des salaires:

5% pour 'Alex Babtise':
Nom: Alex Babtise
Poste: Développeur
Salaire: 84000.0

10% pour 'Emily Firoza':
Nom: Emily Firoza
Poste: Comptable
Salaire: 77000.0
 

Exercice 5:

Écrivez un programme Java pour créer une classe appelée « Banque » avec une collection de comptes et des méthodes pour ajouter et supprimer des comptes, et pour déposer et retirer de l’argent. Définissez également une classe appelée « Compte » pour gérer les détails du compte d’un client particulier.

Diagrame de classe:


Solution:

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

// Définir la classe Compte
class Compte {
    // Déclarer une variable privée pour stocker le nom du titulaire 
    // du compte
    private String nom;
    // Déclarer une variable privée pour stocker le numéro de compte
    private String numCompte;
    // Déclarer une variable privée pour stocker le solde du compte
    private double solde;

    // Constructeur de la classe Compte qui initialise les variables 
    // nom, numéro de compte et solde.
    public Compte(String nom, String numCompte, double solde) {
        // Attribue à la variable nom la valeur du paramètre nom 
        // fourni
        this.nom = nom;
        // Attribue à la variable numCompte la valeur du paramètre 
        // numCompte fourni
        this.numCompte = numCompte;
        // Attribue à la variable solde la valeur du paramètre solde 
        // fourni
        this.solde = solde;
    }

    // Méthode pour récupérer le nom du titulaire du compte
    public String getNom() {
        // Retourner la valeur de la variable nom
        return nom;
    }

    // Méthode pour définir le nom du titulaire du compte
    public void setNom(String nom) {
        // Attribue à la variable nom la valeur du paramètre nom 
        // fourni
        this.nom = nom;
    }

    // Méthode pour récupérer le numéro de compte
    public String getNumCompte() {
        // Retourner la valeur de la variable numCompte
        return numCompte;
    }

    // Méthode pour définir le numéro de compte
    public void setNumCompte(String numCompte) {
        // Attribue à la variable numCompte la valeur du paramètre 
        // numCompte fourni
        this.numCompte = numCompte;
    }

    // Méthode pour récupérer le solde du compte
    public double getSolde() {
        // Retourner la valeur de la variable solde
        return solde;
    }

    // Méthode pour définir le solde du compte
    public void setSolde(double solde) {
        // Attribue à la variable solde la valeur du paramètre solde 
        // fourni
        this.solde = solde;
    }

    // Méthode de dépôt d'un montant sur le compte
    public void deposer(double montant) {
        // Augmenter le solde du montant spécifiée
        solde += montant;
    }

    // Méthode de retrait d'un montant du compte
    public void retirer(double montant) {
        // Réduire le solde du montant spécifiée
        solde -= montant;
    }

    // Méthode pour récupérer les informations sur le compte
    public String getCompteInfo() {
        // Renvoyer une chaîne contenant le nom, le numéro de compte 
        // et le solde
        return "Nom: " + nom + ", Numéro de compte: " + numCompte + ", Solde: " + solde;
    }
}


// Définir la classe Banque
class Banque {

  // Déclarer une ArrayList pour stocker les comptes.
  private ArrayList<Compte> comptes;

  // Constructeur de la classe Banque
  public Banque() {
    // Initialiser la liste de comptes
    comptes = new ArrayList<Compte>();
  }

  // Méthode pour ajouter un compte à la liste des comptes
  public void addCompte(Compte compte) {
    // Ajouter le compte donné à la liste de comptes(ArrayList)
    comptes.add(compte);
  }

  // Méthode pour supprimer un compte de la liste des comptes
  public void removeCompte(Compte compte) {
    // Supprime le compte donné de la liste de comptes (ArrayList)
    comptes.remove(compte);
  }

  // Méthode pour déposer de l'argent sur un compte spécifique
  public void deposerArgent(Compte compte, double montant) {
    // Appeler la méthode de dépôt sur le compte donné avec le 
    // montant spécifié
    compte.deposer(montant);
  }

  // Méthode pour retirer de l'argent d'un compte spécifique
  public void retirerArgent(Compte compte, double montant) {
    // Appeler la méthode de retrait sur le compte donné avec le 
    // montant spécifié
    compte.retirer(montant);
  }

  // Méthode pour obtenir la liste de tous les comptes
  public ArrayList<Compte> getComptes() {
    // Retourner la liste des comptes(ArrayList)
    return comptes;
  }
} 


// 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 Banque
    Banque b = new Banque();

    // Créer trois nouveaux objets Compte avec les détails initiaux
    Compte cpt1 = new Compte("Alex Babtise", "C101", 8000);
    Compte cpt2 = new Compte("Ali Koris", "C102", 6500);
    Compte cpt3 = new Compte("Bob Finor", "C103", 50000);

    // Ajouter les trois comptes au Banque b
    b.addCompte(cpt1);
    b.addCompte(cpt2);
    b.addCompte(cpt3);

    // Récupérer la liste des comptes de la Banque b
    ArrayList<Compte> comptes = b.getComptes();

    // Parcourir chaque compte de la liste des comptes
    for (Compte cpt: comptes) {
      // Afficher les informations relatives à chaque compte
      System.out.println(cpt.getCompteInfo());
    }

    // Afficher un message indiquant le début d'une opération de 
    // dépôt
    System.out.println("\nAprès avoir déposé 500 dans cpt1:");
    // Déposé 500 dans cpt1
    b.deposerArgent(cpt1, 500);
    // Affichez les informations de compte mises à jour pour cpt1
    System.out.println(cpt1.getCompteInfo());

    // Afficher un message indiquant qu'il n'y a pas de transaction 
    // pour cpt2
    System.out.println("Pas de transaction dans cpt2:");
    // Afficher les informations relatives à cpt2
    System.out.println(cpt2.getCompteInfo());

    // Afficher un message indiquant le début d'une opération de 
    // retrait.
    System.out.println("Après avoir retiré 2000 de cpt3 :");
    // Retiré 2000 de cpt3
    b.retirerArgent(cpt3, 2000);
    // Affichez les informations de compte mises à jour pour le cpt3
    System.out.println(cpt3.getCompteInfo());
  }
}

Sortie:

Nom: Alex Babtise, Numéro de compte: C101, Solde: 8000.0
Nom: Ali Koris, Numéro de compte: C102, Solde: 6500.0
Nom: Bob Finor, Numéro de compte: C103, Solde: 50000.0

Après avoir déposé 500 dans cpt1:
Nom: Alex Babtise, Numéro de compte: C101, Solde: 8500.0
Pas de transaction dans cpt2:
Nom: Ali Koris, Numéro de compte: C102, Solde: 6500.0
Après avoir retiré 2000 de cpt3 :
Nom: Bob Finor, Numéro de compte: C103, Solde: 48000.0
 

É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 *