Examen de session principale
Niveau d’étude : 2LM Année Universitaire : 2021/2022
Semestre : 1er Semestre
Matière : Programmation Java
Date : 05/01/2022
Enseignantes : Mme Jihen KHALFALLAH Durée : 1H30
Mme Ameni KHACHEB
Documents : Non autorisés
Nombre de pages : 4
La clarté de la copie rendue sera prise en considération.
QCM (5 points) :
1. Laquelle de ces classes est la plus élevée dans la hiérarchie en Java?
A. [Link]
B. [Link]
C. [Link]
D. [Link]
2. Laquelle de ces classes est en relation à toutes les exceptions qui peuvent être
capturées en utilisant catch?
A. Error
B. Exception
C. RuntimeException
D. Tout les réponses sont vrais
3. Lequel des énoncés suivants est un argument valable pour le constructeur
BufferedInputStream ?
A. File
B. FileReader
C. FileInputStream
D. RandomAccessFile
4. La sérialisation est un procédé qui permet :
A. De faire passer l'état d'un objet dans un flux
B. De convertir un objet en un autre objet
C. De convertir un objet en un document XML
Page 1 / 4
5. Un champ transient est :
A. Un champ dont la valeur ne peut être changée
B. Un champ ignoré lors d'une opération de sérialisation
C. Un champ employé dans un contexte de gestion des exceptions
Problème (15 points) :
On écrira un programme qui gère le stock d'un supermarché.
On suppose qu'on a déjà conçu la description du problème en terme des classes et des
interfaces (voir annexe).
Vous devez d'abord comprendre la hiérarchie des classes et des interfaces comme suit. Cela
est nécessaire pour voir clairement les paramètres de retour des méthodes ainsi que la liste de
leurs arguments.
Voici une spécification du programme en terme des classes et des interfaces:
I. On aura trois interfaces:
1. Vendable par kilogramme: l'interface pour les produits qui se vendent par
kilogramme
o Méthodes:
• vendre: cette méthode reçoit la quantité vendue du produit, retourne le
revenu du supermarché et modifie le stock, sachant que:
revenu = prix de vente * quantité
2. Vendable par pièce: l'interface pour les produits qui se vendent par pièce
o Méthodes:
• vendre
3. Succeptible d'être vendu en solde
o Méthodes:
• lancer le solde: cette méthode baisse le prix du produit par le
pourcentage donné
• terminer le solde: cette méthode baisse le prix du produit par le
pourcentage donné
II. On aura une classe générale des Articles:
o Propriétés:
• prix d'achat: le prix pour lequel le supermarché achète le produit
• prix de vente: le prix pour lequel le supermarché vend le produit
• nom: le nom du produit
Page 2 / 4
• fournisseur: le nom du fournisseur du produit
o Méthodes (autre que le constructeur):
• calculateur du taux de rendement, sachant que:
rendement= (prix de vente - prix d'achat) / prix d'achat
• description des caractéristiques du produit sur l'écran (les prix, le nom,
le fournisseur; rendement)
Cette classe n'implémente aucune interface.
III. On a deux classes dérivées des Articles:
Chaque classe dérivée des articles respecte la règle suivante: au moment de la
construction de l'objet, le stock est vide.
1. La classe des articles élécroménagers
o Propriétés suplémentaires:
• nombre de pièces en stock
o Méthodes supplémentaires (autre que le constructeur):
• remplir le stock: cette méthode reçoit la quantité achetée du produit,
retourne les dépenses du supermarché et modifie le stock, sachant que:
dépenses = prix d'achat * quantité
• 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.
2. La classe des primeurs
o Propriété supplémentaires:
• quantité en stock
o Méthodes supplémentaires:
• remplir le stock
• 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 vendu en solde.
IV. On a une classe pour les supermarchés:
Au moment de la construction de l'objet, les dépenses et les revenus sont nuls.
Page 3 / 4
o Propriétés:
• dépenses: le coût d'achat des produits
• revenus: les revenus après la vente des produits
• produits: deux vecteurs de deux articles (éléctroménagers et primeurs)
o Méthodes (autre que le constructeur):
• calculateur du taux de rendement, sachant que:
rendement= (Revenu - Dépense) / Dépense
• description de l'état du supermarché (les dépenses, les revenus;
rendement)
Questions :
1. Coder les interfaces et les classes.
2. Développer une classe exécutable « Main » qui créée un supermarché, définit les
articles à vendre, effectue le remplissage du stock et simule les achats.
Annexe :
Diagramme de classe
Rappel déclaration d'un Vecteur : Vector<String> vect;
vect = new Vector<String>();
elementAt(int position): retourne l'élément à la position spécifiée
addElement(Objet): ajoute un élément à la fin du vecteur
Bonne chance !
Page 4 / 4