05 Avr2016
Gestion des salles avec les collections
Objectifs :
- Découvrir la programmation en couche
- Définir les propriétés et méthodes d’une classe
- Définir un constructeur d'initilialisation
- Créer une instance de classe
- Utiliser les variables de classe (static)
- Utiliser les interfaces génériques
- Utiliser les collections
Énoncé :
Couche métier
- Définir une classe Salle avec les attributs suivants : id, code et libelle.
- Définir les accesseurs aux différents attributs de la classe.
- Définir un constructeur permettant d’initialiser les attributs d'un objet salle par des valeurs saisies par l’utilisateur. Sachant que Id doit être auto-incrément.
- Définir la méthode toString ( ) permettant d’afficher les informations de la salle en cours.
Couche accès aux données
- Créer l'interface générique IDao avec les méthodes :
- boolean create ( T o) : Méthode permettant d'ajouter un objet o de type T.
- boolean delete (T o) : Méthode permettant de supprimer un objet o de type T.
- boolean update (T o) : Méthode permettant de modifier un objet o de type T.
- T findById (int id) : Méthode permettant de renvoyer un objet dont id est passé en paramètre.
- List <T> findAll ( ) : Méthode permettant de renvoyer la liste des objets de type T.
- Créer la classe SalleService qui implémente l'interface IDao. Dans cette classe les données seront stockés dans une collection de type List.
Couche de présentation
- Dans une classe de test :
- Créer cinq salles.
- Afficher la liste des salles.
- Supprimer une salle.
- Modifier les informations d'une salle.
- Afficher la liste des salles.
Structure du Projet
La classe Salle
package ma.projet.beans; public class Salle { private int id; private String code; private String libelle; private static int comp; public Salle(String code, String libelle) { this.id = ++comp; this.code = code; this.libelle = libelle; } public Salle(int id, String code, String libelle) { this.id = id; this.code = code; this.libelle = libelle; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public String getLibelle() { return libelle; } public void setLibelle(String libelle) { this.libelle = libelle; } public String toString() { return this.code + " " + this.libelle; } }
L'interface IDao
package ma.projet.dao; import java.util.List; public interface IDao<T> { boolean create(T o); boolean update(T o); boolean delete(T o); List<T> findAll(); T findById(int id); }
La classe SalleService
package ma.projet.service; import java.util.ArrayList; import java.util.List; import ma.projet.beans.Salle; import ma.projet.dao.IDao; public class SalleService implements IDao<Salle> { private List<Salle> salles; public SalleService() { salles = new ArrayList<Salle>(); } @Override public boolean create(Salle o) { return salles.add(o); } @Override public boolean update(Salle o) { for(Salle s : salles){ if(s.getId() == o.getId()){ s.setCode(o.getCode()); s.setLibelle(o.getLibelle()); return true; } } return false; } @Override public boolean delete(Salle o) { return salles.remove(o); } @Override public List<Salle> findAll() { return salles; } @Override public Salle findById(int id) { for (Salle s : salles) { if (s.getId() == id) return s; } return null; } }
La classe de Test
package ma.projet.test; import java.util.Scanner; import ma.projet.beans.Salle; import ma.projet.service.SalleService; public class Test { public static void main(String[] args) { SalleService ss = new SalleService(); ss.create(new Salle("A", "Salle 1")); ss.create(new Salle("B", "Salle 2")); ss.create(new Salle("C", "Salle 3")); ss.create(new Salle("D", "Salle 4")); System.out.println("La liste des salles :"); for (Salle s : ss.findAll()) System.out.println("\t" + s); System.out.println("Supprimer la salle avec id = 1"); ss.delete(ss.findById(1)); System.out.println("Modifier la salle avec id = 2"); Salle salle = ss.findById(2); System.out.println("\tSalle à modifier : " + salle); Scanner sc = new Scanner(System.in); System.out.println("Donner le nouveau code :"); salle.setCode(sc.nextLine()); System.out.println("Donner le nouveau libelle :"); salle.setLibelle(sc.nextLine()); ss.update(salle); System.out.println("La liste des salles après les mises à jour :"); for (Salle s : ss.findAll()) System.out.println("\t" + s); } }
Exemple d’exécution :
La liste des salles :
A Salle 1
B Salle 2
C Salle 3
D Salle 4
Supprimer la salle avec id = 1
Modifier la salle avec id = 2
Salle à modifier : B Salle 2
Donner le nouveau code :
BB
Donner le nouveau libelle :
Sale 10
La liste des salles après les mises à jour :
BB Sale 10
C Salle 3
D Salle 4