Examen de session principale
Niveau d’étude : 2LM Année Universitaire : 2021/2022
Semestre : 1er Semestre
Matière : Programmation Java
Date : 06/01/2022
Enseignantes : Mme Jihen KHALFALLAH Durée : 1H30
Mme Ameni KHACHEB
Documents : Non autorisés
Nombre de pages : 3
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. java.lang.Exception
B. java.lang.Object
C. java.lang.Throwable
D. java.lang.Error
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
Page 1 / 6
C. De convertir un objet en un document XML
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) :
Interface VendableKilo
package Pb;
public interface VendableKilo {
// cette méthode retourne le revenu de la vente
public abstract double vendre(double qte);
}
Interface VendablePiece
package Pb;
public interface VendablePiece {
// cette méthode retourne le revenu de la vente
public abstract double vendre(int qte);
}
Interface Solde
package Pb;
Page 2 / 6
public interface Solde {
public abstract void StartSolde(double Pourcentage);
public abstract void EndSolde(double Pourcentage);
}
Classe Article
package Pb;
public class Article
{
protected double prixAchat;
protected double prixVente;
private String Nom;
private String Fournisseur;
public Article(double pA, double pV, String n, String f) {
prixAchat = pA;
prixVente = pV;
Nom = n;
Fournisseur = f;
}
public double rendement() {
return (prixVente - prixAchat) / prixAchat;
}
public void info() {
System.out.println("Nom du produit:" + Nom);
System.out.println("Fournisseur: " + Fournisseur);
System.out.println("Prix d'achat: " + prixAchat);
System.out.println("Prix de vente: " + prixVente);
}
}
Classe ArticleElectromenager
package Pb;
public class ArticleElectromenager extends Article implements VendablePiece,
Solde
{
public int stock;
// constructeur
public ArticleElectromenager(double pA, double pV, String n, String f)
{
super(pA,pV,n,f);
stock = 0;
}
// nouvelles méthodes
public double RemplirStock(int qte) {
stock = stock + qte;
return prixAchat * qte;
}
Page 3 / 6
// méthode surécrite
public void info() {
super.info();
System.out.println("Le stock du produit est " + stock + "pièces.");
}
// implementation de l'interface vendablePiece
public double vendre(int qte) {
if (qte<stock) {
stock = stock - qte;
return qte * prixVente;
}
else {
System.out.println("Stock insuffisant.");
return 0;
}
}
// implementation de l'interface solde
public void StartSolde(double Pourcentage) {
prixVente = prixVente * Pourcentage/100;
}
public void EndSolde(double Pourcentage) {
prixVente = prixVente * Pourcentage/100;
}
}
Classe ArticlePrimeur
package Pb;
public class ArticlePrimeur extends Article implements VendableKilo
{
public double stock;
// constructeur
public ArticlePrimeur(double pA, double pV, String n, String f) {
super(pA,pV,n,f);
stock = 0.0;
}
// nouvelles méthodes
public double RemplirStock(double qte) {
stock = stock + qte;
return prixAchat * qte;
}
// méthode surécrite
public void info() {
super.info();
System.out.println("Le stock du produit est " + stock +
"kilogrammes.");
}
// implementation de l'interface vendableKilo
public double vendre(double qte) {
if (qte<stock) {
stock = stock - qte;
Page 4 / 6
return qte * prixVente;
}
else {
System.out.println("Stock insuffisant.");
return 0;
}
}
}
Classe Supermarché
package Pb;
import java.util.Vector;
public class Supermarché {
public double Revenu;
public double Depense;
public Vector<ArticleElectromenager> Ae;
public Vector<ArticlePrimeur> Ap;
// constructeur
public Supermarché() {
Ae = new Vector<>();
Ap = new Vector<>();
Revenu = 0;
Depense = 0;
}
// méthodes
public double rendement() {
return (Revenu - Depense) / Depense;
}
public void info() {
System.out.println("Les depenses du magasin: " + Depense);
System.out.println("Les revenus du magasin: " + Revenu);
System.out.println("Le rendement" + rendement());
for (int i=0; i<2; i++) Ae.elementAt(i).info();
for (int i=0; i<2; i++) Ap.elementAt(i).info();
}
}
Classe Main
package Pb;
public class Main {
public static void main (String[] args) {
Supermarché CBA1 = new Supermarché();
// les produits a vendre
CBA1.Ae.addElement(new ArticleElectromenager(27000, 35000, "télé",
"Samsung"));
CBA1.Ae.addElement(new ArticleElectromenager(5000, 15000, "radio",
"Sony"));
Page 5 / 6
CBA1.Ap.addElement(new ArticlePrimeur(100, 200, "tomate", "Elore
MgTsz"));
CBA1.Ap.addElement(new ArticlePrimeur(50, 500, "tomate", "Avanti
Sarl, Esapgne"));
// remplir les stocks
for (int i=0; i<2; i++)
CBA1.Depense += CBA1.Ae.elementAt(i).RemplirStock(50);
for (int i=0; i<2; i++)
CBA1.Depense += CBA1.Ap.elementAt(i).RemplirStock(100);
// avoir les info
CBA1.info();
}
}
Page 6 / 6