Vous êtes sur la page 1sur 4

4°IIR Prof.

Nisrine DAD Année académique : 2022/2023

TP5 POO3 (Java et Java avancé)

Partie 1 : Gestion de stock d'un magasin

On veut créer une application qui permet de gérer le stock d’un magasin en utilisant la notion
d’interface. Dans cette application, vous devez d'abord comprendre la hiérarchie des classes et
des interfaces. Cela est nécessaire pour voir clairement les paramètres de retour des méthodes
ainsi que la liste de leurs paramètres formels. La spécification de cette application en termes de
classes et interfaces se présente comme suit:

1. On a trois interfaces :

1.1 VendableKilo: l'interface pour les produits qui se vendent par kilogramme.
Méthode:
vendre: cette méthode reçoit la quantité vendue du produit, retourne le revenu
du magasin et modifie le stock
1.2 VendablePiece: l'interface pour les produits qui se vendent par pièces.
Méthode:
vendre: cette méthode reçoit la quantité vendue du produit, retourne le revenu
du magasin et modifie le stock.
1.3 Solde: l'interface pour les produits susceptibles d'être vendus en solde.
Méthodes:
lanceSolde: cette méthode baisse le prix du produit par le pourcentage donné.
termineSolde: cette méthode augmente le prix du produit par le pourcentage
donné.
2. On a une classe générale des Articles (class Article).
Attributs:
prixAchat: le prix pour lequel le supermarché achète le produit.
prixVente: le prix pour lequel le supermarché vend le produit.
nom: le nom du produit.
fournisseur: le nom du fournisseur du produit.
Méthodes (autre que le constructeur):
rendement : calculateur du taux du rendement

1
4°IIR Prof. Nisrine DAD Année académique : 2022/2023

toString : description des caractéristiques du produit sur l'écran (les prix, le nom,
le fournisseur; rendement).
Cette classe n'implémente aucune interface.
3. On a deux classes dérivées de la classe « Article »
Chaque classe dérivée de la classe article respecte la règle suivante: au moment de la
Construction de l'objet, le stock et vide.
3.1 La classe des artciles élécroménagers (class ArticleElectromenager )
Attribut suplémentaire:
stock : nombre de pièces en stock.
Méthodes supplémentaires (autre que le constructeur):
remplirStock : remplir le stock.
toString: description des caractéristiques du produit sur l'écran (les prix, le nom,
le fournisseur; rendement; stock).
Il faut implémenter les interfaces correspondantes à cette classe.
3.2 La classe des primeurs (class ArticlePrimeur )
Attribut supplémentaire:
stock : quantité en stock.
Méthodes supplémentaires:
remplirStock : remplir le stock.
toString : description des caractéristiques du produit sur l'écran (les prix, le nom,
le fournisseur; rendement; stock).
Il faut implémenter les interfaces correspondantes à cette classe, sachant que les
primeurs ne peuvent pas être vendues en solde.
4. On a une classe pour les magasins (class Magasin)
Attributs:
depense : le coût d'achat des produits.
revenu: les revenus après la vente des produits.
articleElectromenagerArray, articlePrimeurArray: deux tableaux de deux
articles (éléctroménagers et primeurs).
Méthodes (autre que le constructeur):
toString : description de l'état du magasin.
rendement : calculateur du taux de rendement

2
4°IIR Prof. Nisrine DAD Année académique : 2022/2023

Questions:
1. Créer les différentes interfaces et classes.
2. Pour tester le travail réalisé, écrire un programme d’essai permettant de :
Définir les articles à vendre, effectuer le remplissage du stock, simuler les achats et
utiliser les différentes autres méthodes des classes crées

Partie 2 : Livre et étagère


On considère un Livre avec les caractéristiques : titre, auteur et nbPages.
Et une Etagere contenant un ensemble de Livre.
On doit pouvoir :
 Récupérer le nombre de livres qu’une étagère contient.
 Récupérer le nombre maximal de livres qu’une étagère peut contenir.
 Afficher les livres dans l’étagère.
 Ajouter un livre à l’étagère : On l’ajoute après le dernier livre déjà ajouté à l’étagère. Le
premier livre ajouté doit être mis au début de l'étagère, c.-à-d. à la première position du
tableau. Il est impossible de mettre des livres dans une étagère pleine.
 Chercher un livre, en se basant sur sa position sur l'étagère. La première position d'une
étagère est désignée par l’indice 1.
 Chercher la position d’un livre dans l’étagère. Chaque livre est identifié par son titre et
son auteur. Si le livre n’est pas dans l’étagère la méthode retourne 0 et s'il existe plus
d’un livre contenant le même titre et le même auteur cette méthode retourne celui qui a
le plus petit indice.
 Chercher si un livre existe ou non, en se basant sur son titre et son auteur.
 Chercher tous les livres d'un auteur et retournant un tableau de ces livres.
 Chercher tous les livres qui ont un certain titre.
 Supprimer un livre dont on fournit la position sur l'étagère. En cas de suppression d’un
livre arranger à nouveau l’étagère (décaler les livres vers le début).
 Supprimer un livre dont on fournit l’auteur et le titre. Et en cas de suppression d’un livre
arranger à nouveau l’étagère (décaler les livres vers le début).
 Dans le cas où l’étagère contient de nombreux livres, dans le cas de suppression d’un
livre, son arrangement à nouveau nécessite plusieurs décalages de ces livres vers le

3
4°IIR Prof. Nisrine DAD Année académique : 2022/2023

début. Pour éviter toutes ces opérations, on aurait aussi la possibilité d’enlever un livre
et de placer le dernier livre à la place du livre enlevé.
Remarques : utiliser un tableau pour gérer les livres, avec le nombre de livres est fixe pour
chaque étagère.
Questions:
1.Faire la conception sous forme de diagramme de classes.
2.Traduire ce diagramme vers les classes en Java. Respecter les conventions de noms de Java.
3.Ecrire un programme pour tester votre projet.
4.Documenter votre projet avec Javadoc.

Partie 3 : String, StringBuilder, StringBuffer et StringTokenizer


A partir de votre IDE, dessiner le diagramme de classes UML correspondant aux 4
classes suivantes:
 String,
 StringBuilder
 StringBuffer
 StringTokenizer
Remarque : Dans Eclipse, vous pouvez utiliser le menu Navigate Open Declaration et
Navigate Open Type Hierarchy.

Vous aimerez peut-être aussi