Solution de gestion d'une agence de location de voitures
Ce document présente une étude de cas pour la conception d'une solution de gestion d'une agence de location de voitures. Il s'adresse aux étudiants en informatique ou en génie logiciel souhaitant comprendre la modélisation orientée objet, l'utilisation d'interfaces, ainsi que la manipulation des collections en Java (List et Set) dans un contexte applicatif.
D'après le document Solution de gestion d'une agence de location de voitures
Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.
Document source
Programmation, Gestion, Logiciel · PDF · 3 pages
Afficher l'aperçu du document
Ce document présente une étude de cas pour la conception d'une solution de gestion d'une agence de location de voitures. Il s'adresse aux étudiants en informatique ou en génie logiciel souhaitant comprendre la modélisation orientée objet, l'utilisation d'interfaces, ainsi que la manipulation des collections en Java (List et Set) dans un contexte applicatif.
Étude de cas : gestion d'une agence de location de voitures
Le système à développer comprend trois classes principales : Voiture, Client et Agence.
Voiture est définie par les attributs suivants :
- immatriculation
- marque
- prix de location
Deux voitures sont considérées comme égales si elles ont la même immatriculation et la même marque.
Client est caractérisé par :
- un code
- un nom
- un prénom
Deux clients sont égaux s’ils ont le même code.
Agence est définie par :
- un nom
- un parking qui enregistre l’ensemble des voitures de l’agence
- une collection des clients
L’agence offre à ses clients la possibilité de choisir les voitures à louer selon différents critères, notamment la marque et le prix. Il est possible de sélectionner dans la liste des voitures toutes celles qui satisfont un critère donné.
Les fonctionnalités principales du système sont :
- retourner la liste des voitures selon un critère défini
- afficher les clients et leurs voitures louées
- louer une voiture à un client
- retourner une voiture louée par un client
- retourner l’ensemble des clients ayant loué une ou plusieurs voitures
- retourner la liste des voitures actuellement en location
Implémentation des classes Voiture et Client
Classe Voiture :
- Attributs : immatriculation, marque, prix
- Méthode d’égalité : deux voitures sont égales si immatriculation et marque sont identiques
Classe Client :
- Attributs : code, nom, prénom
- Méthode d’égalité : deux clients sont égaux si leur code est identique
Exemple d’égalité entre deux voitures
Voiture v1 = new Voiture("123-AB", "Renault", 300);
Voiture v2 = new Voiture("123-AB", "Renault", 350);
boolean sontEgales = v1.equals(v2); // true car même immatriculation et même marque
Les interfaces pour les critères de sélection
Pour permettre la sélection des voitures selon des critères, on définit l’interface suivante :
public interface Critere {
boolean estSatisfaitPar(Voiture v);
}
Cette interface sera implémentée par différentes classes représentant des critères spécifiques.
Implémentation de CritereMarque
Cette classe vérifie si une voiture a une marque donnée :
public class CritereMarque implements Critere {
private String marque;
public CritereMarque(String marque) {
this.marque = marque;
}
public boolean estSatisfaitPar(Voiture v) {
return v.getMarque().equalsIgnoreCase(marque);
}
}
Implémentation de CriterePrix
Cette classe vérifie si le prix de location d’une voiture est inférieur ou égal à un montant donné :
public class CriterePrix implements Critere {
private double prixMax;
public CriterePrix(double prixMax) {
this.prixMax = prixMax;
}
public boolean estSatisfaitPar(Voiture v) {
return v.getPrix() <= prixMax;
}
}
Exemple d’utilisation dans Main.java
Un client souhaite louer une voiture de marque "Renault" et dont le prix est au plus 300 dt/jour. On teste si l’agence peut satisfaire cette demande :
Critere critereMarque = new CritereMarque("Renault");
Critere criterePrix = new CriterePrix(300);
List<Voiture> voituresDisponibles = agence.getVoitures();
for (Voiture v : voituresDisponibles) {
if (critereMarque.estSatisfaitPar(v) && criterePrix.estSatisfaitPar(v)) {
System.out.println("Voiture disponible : " + v);
}
}
Gestion des collections : List (Vector & ArrayList)
Pour gérer plusieurs voitures, on crée une classe ListVoitures qui stocke un ensemble de voitures dans une liste. Cette classe permet d’ajouter, de supprimer et d’afficher les voitures.
Les méthodes principales à implémenter sont :
- public void addVoiture(Voiture v)
- public void removeVoiture(Voiture v)
- public void existe(Voiture v)
On peut utiliser soit Vector soit ArrayList pour la liste interne.
Exemple d’utilisation des méthodes de ListVoitures
ListVoitures liste = new ListVoitures();
Voiture v1 = new Voiture("123-AB", "Renault", 250);
Voiture v2 = new Voiture("456-CD", "Fiat", 300);
liste.addVoiture(v1);
liste.addVoiture(v2);
liste.removeVoiture(v1);
liste.afficherVoitures();
Tri et parcours de la liste
On peut trier la liste des voitures selon différents critères :
- Tri par immatriculation
- Tri par marque
Pour parcourir la liste, on utilise l’interface Iterator :
Iterator<Voiture> it = liste.getIterator();
while (it.hasNext()) {
Voiture v = it.next();
System.out.println(v);
}
Gestion des collections : Set (HashSet & TreeSet)
Pour gérer l’ensemble des clients, on utilise une collection de type Set, afin d’éviter les doublons.
Les méthodes à implémenter dans la classe SetClient sont :
- Créer un Set de clients
- public void ajouterClient(Client c) — n’accepte pas les doublons
- public void supprimerClient(Client c)
- public void trouverClient(Client c)
- public boolean chercherClient(Client c)
- public void afficherClient(Client c)
Pour parcourir un Set, la méthode adéquate est d’utiliser un Iterator ou une boucle for-each.
Utilisation d’un TreeSet pour un ordre naturel
Pour avoir les clients ordonnés selon leurs identifiants (codes), on remplace le HashSet par un TreeSet. Cela nécessite que la classe Client implémente l’interface Comparable ou qu’un Comparator soit fourni.
Glossaire des termes clés
- Voiture : objet représentant un véhicule avec immatriculation, marque et prix de location.
- Client : personne caractérisée par un code unique, un nom et un prénom.
- Agence : entité qui gère un parking de voitures et une liste de clients.
- Critere : interface définissant une méthode pour tester si une voiture satisfait un critère donné.
- CritereMarque : implémentation de Critere basée sur la marque de la voiture.
- CriterePrix : implémentation de Critere basée sur le prix de location maximal.
- ListVoitures : classe gérant une collection de voitures avec ajout, suppression et affichage.
- Vector / ArrayList : classes Java pour gérer des listes dynamiques.
- SetClient : classe gérant un ensemble de clients sans doublons.
- HashSet : implémentation de Set sans ordre particulier.
- TreeSet : implémentation de Set avec ordre naturel ou défini par un comparateur.
- Iterator : interface pour parcourir une collection élément par élément.
Points clés à retenir
- La modélisation orientée objet permet de structurer les entités Voiture, Client et Agence avec leurs attributs et méthodes.
- Les critères de sélection des voitures sont définis via une interface Critere et ses implémentations.
- Les collections List (Vector, ArrayList) sont utilisées pour gérer des listes ordonnées de voitures.
- Les collections Set (HashSet, TreeSet) permettent de gérer des ensembles de clients sans doublons, avec ou sans ordre.
- L’utilisation des interfaces Iterator facilite le parcours des collections.
- Le tri des collections peut se faire selon différents attributs (immatriculation, marque, etc.).
Commentaires
Aucun commentaire pour le moment. Posez la première question.