L3INFO | Malek Ltaief
Test 1 : Application gestion des aliments pour animaux
Dans cet exercice on vous demande de développer une application Java RMI pour la
gestion des stocks d'aliments dans un refuge pour animaux. Cette application
permettra aux gestionnaires de suivre l'inventaire des différents types d'aliments (tels
que les croquettes, le foin, les graines). L'application doit offrir l’ensemble des
fonctionnalités suivantes :
• Ajouter aliments : Enregistrer un nouveau lot d’aliments dans le stock avec
ses détails (Type, Quantité et Date de réception). Cette fonction permet de
gérer l'ajout d'aliments dans un stock tout en évitant de remplacer les données
existantes. Lorsqu'un aliment est ajouté, la fonction vérifie d'abord si un aliment
du même type est déjà présent dans le stock. Si c'est le cas, elle incrémente
simplement la quantité existante avec la nouvelle quantité fournie, garantissant
ainsi une mise à jour sans perte d'information. En revanche, si le type d'aliment
n'existe pas encore, un nouvel objet aliment est crée. Cet aliment est ensuite
ajouté au stock.
• Réserver des aliments : Décrémenter la quantité disponible lorsqu’un type
d’aliment est utilisé pour nourrir les animaux. Lorsqu'un client souhaite réserver
un aliment, il doit spécifier le type d'aliment et la quantité souhaitée.
Le serveur compare alors la quantité demandée avec la quantité disponible en
stock pour cet aliment spécifique. Si la quantité demandée est supérieure à la
quantité disponible, le serveur refuse la réservation et informe le client du stock
restant pour l'aliment en question. Sinon si les quantités sont compatibles, la
réservation est alors validée.
• Consulter les stocks disponibles : Obtenir la liste des types d’aliments
disponibles et leur quantité actuelle.
Travail demandé :
1. Créez une interface Java nommée StockService qui définit l’ensemble des
services accessibles par les clients (ajouterAliment, reserverAliments et
consulterStock).
2. Développez la classe de l’objet distant (la classe qui implémente l’interface
StockService) nommée StockServiceImpl.
3. Développez la classe serveur qui permet de publier la référence de l’objet
distant.
4. Développez la classe client permettant aux utilisateurs d’interagir avec le
serveur pour : ajouter un aliment, consulter le stock ou réserver une quantité
d’un aliment.
NB : Utilisez une Map<String, Aliment> pour gérer les types d’aliments. Chaque clé
représente un type d’aliment (par exemple, "Croquettes"), et la valeur correspond à un
objet contenant la quantité et d'autres informations.
2024-2025 1
L3INFO | Malek Ltaief
Test 2 : Gestion de commandes dans un restaurant
Vous êtes chargé de développer une application Java RMI pour gérer les commandes
dans un restaurant. Cette application permettra aux serveurs de saisir les commandes
des clients, de suivre leur état (en cours de préparation, prête, livrée) et de consulter
le détail des commandes.
Fonctionnalités :
• Saisir une commande : permet d’ajouter une nouvelle commande avec les
plats choisis et les quantités, associer la commande à une table et générer un
numéro de commande unique.
• Consulter les commandes : permet d’afficher la liste de toutes les
commandes, avec leur état (en cours, prête, livrée).
• Afficher détail commande : permet d’afficher les détails d’une commande
spécifique (plats, quantités, table).
• Marquer commande comme prête : permet de changer l'état d'une
commande à "prête" lorsqu'elle est préparée.
• Marquer commande comme livrée : permet de changer l'état d'une
commande à "livrée" lorsqu'elle est servie au client.
Travail demandé :
1. Créez une interface Java nommée CommandeService qui définit l'ensemble
des services accessibles par les clients (ajouterCommande,
consulterCommandes, AfficherDetailCommande, marquerCommePrete,
marquerCommeLivree).
2. Développez la classe de l'objet distant (la classe qui implémente l'interface
CommandeService) nommée CommandeServiceImpl.
3. Développez la classe serveur qui permet de publier la référence de l'objet
distant.
4. Développez la classe client permettant aux serveurs d'interagir avec le serveur
pour saisir, modifier et consulter les commandes.
NB :
• Vous devez crée la classe Commande contenant les attributs suivants :
o idCommande (entier unique)
o table (entier)
o plats (une liste ou une map de plats (de type String) et de quantités)
o etat (enumération : EN_COURS, PRETE, LIVREE)
• Utilisez Map<Integer, Commande> pour stocker les commandes. Chaque clé
représente l’id de la commande, et la valeur correspond à un objet contenant
les informations de la commande.
2024-2025 2
L3INFO | Malek Ltaief
Test 3 : Gestion des adoptions
Dans cet exercice on vous demande de développer une application Java RMI pour la
gestion des adoptions des animaux. Cette application permettra d’organiser les
informations sur les animaux disponibles à l’adoption et de gérer les demandes
d’adoption. L'application doit offrir l’ensemble des fonctionnalités suivantes :
• Ajouter un animal : Permet d’ajouter un animal disponible à l’adoption avec
ses détails (Nom, Espèce, Âge, Description).
• Consulter les animaux : Cette fonctionnalité permet d’afficher la liste des
animaux disponibles, avec la possibilité de filtrer par espèce. En effet,
l’utilisateur peut choisir soit de consulter la liste complète de tous les animaux,
soit d’afficher uniquement les animaux appartenant à une espèce spécifique.
• Effectuer une demande d’adoption : Réduit le nombre d’animaux disponibles
lorsqu’un animal est adopté. Si un animal n’est plus disponible, la demande est
rejetée.
Travail demandé :
1. Créez une interface Java AdoptionService définissant l’ensemble des services
accessibles par les clients (ajouter, consulter et adopter des animaux).
2. Implémentez la classe de l’objet distant AdoptionServiceImpl (la classe qui
implemente l’interface AdoptionService).
3. Développez la classe serveur pour publier l’objet distant.
4. Créez une application cliente pour interagir avec le serveur et effectuer les
opérations demandées.
NB :
• Vous devez crée la classe Animal contenant les attributs suivants :
o nom
o age
o espece
o description
• Utilisez Map<String, List<Animal>> pour stocker les informations des animaux.
Chaque clé représente l’espèce de l’animal, et la valeur correspond à un objet
contenant les informations de l’animal.
2024-2025 3
L3INFO | Malek Ltaief
Test 4 : Gestion des locations de voitures
Dans cet exercice on vous demande de développer une application Java RMI pour
gérer une agence de location de voitures. Cette application doit offrir l’ensemble des
fonctionnalités suivantes :
• Ajouter une voiture : Enregistrer un véhicule avec ses détails (Modèle, Marque,
Immatriculation, Disponibilité).
• Réserver une voiture : Vérifier la disponibilité d'une voiture pour des dates
spécifiques et la réserver si elle est libre.
• Lister les voitures disponibles : Afficher les véhicules disponibles à la location.
Travail demandé :
1. Créer une interface LocationService avec les services ajouterVoiture,
reserverVoiture, et consulterVoituresDisponibles.
2. Implémenter la classe de l’objet distant LocationServiceImpl.
3. Développer les classes serveur et client.
NB :
• Vous devez crée la classe Voiture contenant les attributs suivants :
o modele
o marque
o disponible
o immatriculation
o Utilisez HashMap<String, Voiture> pour stocker les informations des
voitures. Chaque clé représente l’immatriculation de la voiture, et la
valeur correspond à un objet contenant les informations de la voiture.
2024-2025 4
L3INFO | Malek Ltaief
Test 5 : Gestion des réservations dans un espace de
coworking
Dans cet exercice, on vous demande de développer une application Java RMI pour la
gestion des salles de réunion dans un espace de coworking. L'application permet de
suivre les réservations et d'assurer une allocation efficace des espaces.
Fonctionnalités :
• Ajouter une salle : Enregistrer une nouvelle salle avec ses détails (nom,
capacité et équipement). Si une salle existe déjà, mettre à jour les informations.
• Réserver une salle : Permettre aux utilisateurs de réserver une salle pour une
plage horaire donnée. Vérifier la disponibilité avant d’effectuer la réservation.
En cas de conflit, informer l’utilisateur.
• Consulter les disponibilités : Obtenir la liste des salles disponibles pour une
plage horaire donnée.
Travail demandé :
1. Développer une interface CoworkingService définissant les services
(ajouterSalle, reserverSalle, consulterDisponibilites).
2. Implémenter la classe de l’objet distant CoworkingServiceImpl.
3. Créer une classe serveur pour publier les services.
4. Développer une classe client permettant d’interagir avec le serveur.
NB :
• Vous devez crée la classe Salle contenant les attributs suivants :
o nom
o capacite
o equipement
o horairesReserves
• Utilisez HashMap<String, Salle> pour stocker les informations des salles.
Chaque clé représente le nom de la salle, et la valeur correspond à un objet
contenant les informations de la salle.
2024-2025 5
L3INFO | Malek Ltaief
Test 6 : Gestion des soins médicaux des animaux
Dans cet exercice, développez une application Java RMI pour gérer les soins
médicaux des animaux dans un refuge. L'application doit offrir les fonctionnalités
suivantes :
• Ajouter un soin : Enregistrer un nouveau soin médical pour un animal avec
ses détails (Nom de l’animal, Type de soin, Date et Durée estimée). Si un soin
pour l'animal est déjà planifié pour la même date, le serveur doit rejeter la
demande et informer le client.
• Modifier un soin : Permettre de modifier la durée ou la date d’un soin existant,
en vérifiant que la nouvelle date n’entraîne pas de conflit avec d’autres soins.
• Consulter les soins programmés : Permettre de récupérer les soins
programmés pour tous les animaux.
• Consulter les soins d’un animal : Permettre de récupérer les soins
programmés pour un animal spécifique.
Travail demandé :
1. Créer une interface SoinsService avec les services ajouterSoin, modifierSoin,
consulterSoinAnimal et consulterProgSoin.
2. Implémenter la classe de l’objet distant SoinsServiceImpl.
3. Développer les classes serveur et client.
NB :
• Vous devez crée la classe Soin contenant les attributs suivants :
o Date
o Duree
o Type
• Utilisez un HashMap<String, TreeMap<Date, Soin>> pour gérer les soins, où la
clé du HashMap est le nom de l’animal, et chaque clé du TreeMap correspond
à une date. La valeur associée est un objet représentant un soin (Type de soin,
Durée).
2024-2025 6
L3INFO | Malek Ltaief
Annexe technique : Manipulation des structures de
données en Java (HashMap)
Une HashMap permet de stocker des paires clé-valeur.
Exemples :
• Créer une HashMap et ajouter des éléments :
Map<Integer, String> etudiants = new HashMap<>();
etudiants.put(1, "Ali");
etudiants.put(2, "Mohamed");
• Accéder à une valeur à partir d'une clé :
String nom = etudiants.get(2); // Récupère "Mohamed"
System.out.println(nom);
• Vérifier si une clé ou une valeur existe :
if (etudiants.containsKey(1)) {
System.out.println("La clé 1 existe !"); }
if (etudiants.containsValue("Sarra")) {
System.out.println("Sarra est dans la liste !"); }
• Parcourir les éléments :
//parcours Par clés
for (Integer key : etudiants.keySet()) {
System.out.println("Clé : " + key); }
//parcours Par paires clé-valeur
for (Map.Entry<Integer, String> entry :
etudiants.entrySet()) { System.out.println("Clé : " +
entry.getKey() + ", Valeur : " + entry.getValue()); }
• Supprimer un élément :
etudiants.remove(2); // Supprime l'entrée avec la clé 2
2024-2025 7