Exercice Usine
Nous allons créer une application java modélisant le diagramme de classe suivant :
L’usine peut contenir plusieurs personnels, menuisier ou Forgerons. Cependant, la même personne
(indépendamment de sont type) doit exister une seule fois dans l’usine.
1- Créer les classe Personnel, Menuisier et Forgeron
2- Créer la classe Usine content une liste de personnel : utiliser alors le type
ArrayList<Personnel>. Ajouter à cette classe les méthodes suivantes :
a. Un constructeur avec 2 arguments (id et nom)
b. Une méthode qui ajouter un personnel à l’usine : afficher un message d’erreur si la
personne existe déjà, et sinon afficher un message indiquant que l’ajout a été effectué
avec succès.
c. Une méthode retirer(int indice) : qui retire le personnel d’indice x de l’usine
d. Un surcharge de la méthode retirer (Personne p) : qui retire le personnel p s’il existe
de l’usine et afficher un message d’erreur convenable.
e. Une méthode affiche() qui affiche les informations de tous les personnels de l’usine.
3- Créer une classe Test contenant une fonction main et tester les différentes classes créées.
1|Page
Correction
Fichier Personnel.java
import java.util.Objects;
public class Personnel {
protected String nom, prenom;
protected int age;
public Personnel(String nom, String prenom, int age)
{
this.prenom = prenom;
this.nom = nom;
this.age = age;
}
public boolean equals(Object p)
{
if(p instanceof Personnel || p instanceof Menuisier || p instanceof Forgeron )
return ((Personnel)p).nom.equals(nom) && ((Personnel)p).prenom.equals(prenom) && ((Personnel)p).age == age;
else
return false;
}
public int hashCode()
{
return Objects.hash(nom,prenom, age);
}
public String toString()
{
return "Je suis personnel , nom: " + nom + "prenom:" + prenom + " age: " + age;
}
2|Page
Fichier Menuisier.java
public class Menuisier extends Personnel{
public Menuisier(String nom, String prenom, int age) {
super(nom, prenom, age);
public String toString()
{
return "je suis Menuisier, nom : " + nom + "prenom : " +prenom + " age : "+ age}
Fichier Forgeron.java
public class Forgeron extends Personnel {
public Forgeron(String nom, String prenom, int age)
{
super(nom, prenom, age);
public String toString()
{ {
return "je suis Forgeron, nom : " + nom + "prenom : " +prenom + " age : "+ age;
}
3|Page
Fichier Usine.java
public class Usine {
private int id;
private String nom;
//liste de personnels
private List<Personnel> lesPersonnels;
public Usine(int id, String nom)
{
this.id = id;
this.nom = nom;
lesPersonnels = new ArrayList<Personnel>();
}
public void afficher()
{
System.out.println("Infos Usine : id = " + id + " nom = " + nom);
for(int i= 0; i<lesPersonnels.size() ; i++)
System.out.println(lesPersonnels.get(i));
public void ajouter(Personnel p)
{
if(lesPersonnels.contains(p))
System.out.println("Oups ce personnel existe déjà");
else
{
lesPersonnels.add(p);
System.out.println("Personnel " + p.nom + "ajouté avec succès");
}
public void retirer(Personnel p)
{
if(lesPersonnels.contains(p))
{
lesPersonnels.remove(p);
System.out.println("Suppression avec succès");
}
else
{
System.out.println("Personnel inexistant ");
}
public void retirer(int indice)
{
if(indice <= lesPersonnels.size() && indice>=0)
{
lesPersonnels.remove(indice);
System.out.println("Suppression avec succès");
}
4|Page
else
System.out.println("Indice inexistant ");
}
Fichier Tester.java
5|Page