package com.humanbooster.exercices; import java.util.ArrayList; import java.util.List; public class Personne { private String nom; private String prenom; private int age; private static int nombrePersonnes; /** * Constructeur par défaut de la classe Personne * Initialise le nom, le prénom et l'âge à des valeurs par défaut */ public Personne() { nombrePersonnes++; } /** * Constructeur de la classe Personne * * @param nom Nom de la personne * @param prenom Prénom de la personne * @param age Âge de la personne * @throws IllegalArgumentException Si le nom ou le prénom est vide, ou si l'âge est égal à zéro */ public Personne(String nom, String prenom, int age) throws IllegalArgumentException { if (nom == null || nom.trim().isEmpty()) throw new IllegalArgumentException("Le nom ne peut pas être vide"); else this.nom = nom.trim(); if (prenom == null || prenom.trim().isEmpty()) throw new IllegalArgumentException("Le prénom ne peut pas être vide"); else this.prenom = prenom.trim(); if (age == 0) throw new IllegalArgumentException("L'âge ne peut pas être égal à zéro"); else if (age < 0) this.age = age * (-1); else this.age = age; nombrePersonnes++; } public static void main(String[] args) { List personnes = new ArrayList<>(); Personne personne1 = new Personne(); personnes.add(personne1); Personne personne2 = Personne.creer("Dupont", "Jean", 30); personnes.add(personne2); personne1.setNom("Dupond"); personne1.setPrenom("Alice"); personne1.setAge(25); System.out.println("Nombre de personnes créées : " + Personne.getNombrePersonnes()); for (Personne p : personnes) { System.out.println(p.toString()); } Personne.comparer(personne1, personne2); Personne personne3 = new Personne(); System.out.println(personne3.toString()); } /** * Récupère le nom de la personne * * @return Nom de la personne */ public String getNom() { return nom; } /** * Modifie le nom de la personne * * @param nom Nom de la personne */ public void setNom(String nom) { if (nom == null || nom.trim().isEmpty()) throw new IllegalArgumentException("Le nom ne peut pas être vide"); else this.nom = nom.trim(); } /** * Récupère le prénom de la personne * * @return Prénom de la personne */ public String getPrenom() { return prenom; } /** * Modifie le prénom de la personne * * @param prenom Prénom de la personne */ public void setPrenom(String prenom) { if (prenom == null || prenom.trim().isEmpty()) throw new IllegalArgumentException("Le prénom ne peut pas être vide"); else this.prenom = prenom.trim(); } /** * Récupère l'âge de la personne * * @return Âge de la personne */ public int getAge() { return age; } /** * Modifie l'âge de la personne * * @param age Âge de la personne */ public void setAge(int age) { if (age == 0) throw new IllegalArgumentException("L'âge ne peut pas être égal à zéro"); else if (age < 0) this.age = age * (-1); else this.age = age; } /** * Récupère le nombre de personnes créées * * @return Nombre de personnes créées */ public static int getNombrePersonnes() { return nombrePersonnes; } /** * Crée une nouvelle personne * * @param nom Nom de la personne * @param prenom Prénom de la personne * @param age Âge de la personne * @return Nouvelle instance de la classe Personne */ public static Personne creer(String nom, String prenom, int age) { return new Personne(nom, prenom, age); } /** * Compare deux personnes en fonction de leur âge * * @param personne1 Première personne à comparer * @param personne2 Deuxième personne à comparer */ public static void comparer(Personne personne1, Personne personne2) { String nomP1 = personne1.getPrenom() + " " + personne1.getNom(); String nomP2 = personne2.getPrenom() + " " + personne2.getNom(); if (personne1.getAge() > personne2.getAge()) { System.out.println(nomP1 + " est plus vieux que " + nomP2); } else if (personne1.getAge() < personne2.getAge()) { System.out.println(nomP2 + " est plus vieux que " + nomP1); } else { System.out.println(nomP1 + " et " + nomP2 + " ont le même âge"); } } /** * Récupère une chaîne de caractères représentant la personne * * @return Chaîne de caractères représentant la personne */ @Override public String toString() { return this.nom + " " + this.prenom + ", " + this.age + " ans"; } }