Vous êtes sur la page 1sur 5

Institut Supérieur d’informatique

Équipe pédagogique
Mr Ben Rkaya Moez & Mme Boulifa Nadia Programmation JAVA
Mme. Salwa Mbarek Mme. Rania Mzid Filière : 2CS

Corrigé exercice
Manipulation d’un Tableau d’objets
Une boite de développement désire développer une application de gestion de
ressources de magasin de produits différents. Avant d’entamer la réalisation de ce
programme, la société a commencé par une étude du marché qui a permis de
dégager les différentes caractéristiques d’un produit et qui sont :
• Un identifiant (entier)
• Un libellé (chaine de caractère)
• Une marque (chaine de caractère)
• Un prix unitaire (un nombre réel)
• La quantité (entier)
• Une remise de 10% (s’il y a une offre de remise- booléen)
Nb : chaque produit n’a pas de remise par défaut.
Le programme doit permettre à l’utilisateur de :
1. Créer un produit vide (sans attributs)
2. Créer des nouveaux produits tout en spécifiant les caractéristiques (avec
attributs)
3. Ajouter (redéfinir) la méthode toString () dans la classe Produit qui renvoie une
chaîne de caractères décrivant le produit.

Corrigé
package com.java.classes;
public class Produit {
private int identifiant;
private String libelle;
private String marque;
private double prixU;
private boolean isremise;
private int qtte;
//Créer un produit vide (sans attributs)
public Produit(){
identifiant=0;
libelle="";
marque="";
prixU=0;
isremise=false;
qtte=0;
}
//Créer un produit (avec des attributs)

Page |1
Institut Supérieur d’informatique
Équipe pédagogique
Mr Ben Rkaya Moez & Mme Boulifa Nadia Programmation JAVA
Mme. Salwa Mbarek Mme. Rania Mzid Filière : 2CS

public Produit(int identifiant,String libelle,String marque,double prixU,


int qtte){
this.identifiant=identifiant;
this.libelle=libelle;
this.marque=marque;
this.prixU=prixU;
this.qtte = qtte;
this.isremise = false;
}
// Calculer le prix total de chaque remise
private double calcuerPrix(){
double totalprix;
if(this.isremise)
totalprix = (prixU * qtte) - (prixU * qtte)*0.1;
else
totalprix = prixU * qtte;
return totalprix;
}
//Afficher les produits
public String toString(){
return identifiant +" "+ libelle +" "+ marque +" "+ calcuerPrix();
}
//les accesseurs et les setteurs
public int getIdentifiant() {
return identifiant;
}
public void setIsremise(boolean isremise) {
this.isremise = isremise;
}
public void setPrixU (double prixU) {
this.prixU = prixU;
}

} //fin de la classe Produit

Dans le cadre de l’amélioration du programme sur lequel vous êtes affectés dans
l’entreprise et dans un souci constant d’adaptation aux besoins du client, vous êtes
demandés de créer un autre module afin de gérer les besoins des propriétaires
des magasins. Les différentes caractéristiques d’un magasin :
• Un identifiant (entier)
• Un nom (chaine de caractère)
• Une adresse (chaine de caractère)
• Capacité du magasin (taille maximale du magasin- entier)
• Nombre de produits (nombre de produits compris dans le magasin - entier)
• Un ensemble de produits
Le module doit permettre aux propriétaires des magasins en premier lieu d’ajouter
un nouveau produit au magasin, tout en prenant en considération qu’un magasin
peut contenir au maximum 20 produits.

Page |2
Institut Supérieur d’informatique
Équipe pédagogique
Mr Ben Rkaya Moez & Mme Boulifa Nadia Programmation JAVA
Mme. Salwa Mbarek Mme. Rania Mzid Filière : 2CS

NB : ajouter une méthode qui sert à chercher un produit dans un magasin, Cette
méthode renvoie la position du produit (ou -1 si le produit n’existe pas)
De plus on vous demande de Créer une méthode qui permet de supprimer un
produit du magasin et une méthode pour la suppression de tous les produits.
Vous êtes aussi demandés d’afficher les caractéristiques du magasin, et le nom et
le prix de l’ensemble de ses produits.
Afin de protéger les différentes caractéristiques des objets crées votre supérieur
vous demande de restreindre l’accès aux attributs de la classe Produit en prenant
en considération que le prix de ce dernier ne doit pas être négatif. Ensuite il vous
suggère d’organiser le code en des différents packages.
Finalement le programme doit permettre à son propriétaire de savoir le nombre
total de tous les produits de tous les magasins.
package com.java.classes;
public class Magasin {
private int identifiant;
private String nom;
private String adresse;
private int capacite;
private Produit[] produits; //un tableau de produits
private int nbElem;
private static int compteur;//pour savoir combien j'ai de produits dans
tous les magasins
//Créer un magasin
public Magasin(int identifiant, String nom, String adresse){
this.identifiant =identifiant;
this.nom = nom;
this.adresse = adresse;
this.capacite = 20;
this.nbElem = 0;
produits = new Produit[capacite];

}
/* Recherche d'un produit dont l'identifiant est e et Retourner sa position
sinon -1 */
public int recherche(int e){
boolean trouve =false;
int indice = -1;
int i=0;
while(i<nbElem && trouve==false){
if(produits[i].getIdentifiant() == e)
{
trouve=true;
indice =i;
}
else
i++;
}
return indice;

Page |3
Institut Supérieur d’informatique
Équipe pédagogique
Mr Ben Rkaya Moez & Mme Boulifa Nadia Programmation JAVA
Mme. Salwa Mbarek Mme. Rania Mzid Filière : 2CS

}
// Ajouter un nouveau produit dans le magazin
public void ajouterProduit(Produit p)
{
if(nbElem<capacite)
{
if(recherche(p.getIdentifiant())== -1)
{
produits[nbElem++] = p;
compteur++;
}

else
System.out.println("Le produit existe déjà dans le
magazin");
}
else
System.out.println("capacité insuffisante");

}
// Supprimer un produit
public void supprimerProduit(Produit p)
{
int i;
int pos = recherche(p.getIdentifiant());
if(pos== -1)
System.out.println("erreur");
else
{
i=pos;
while(i<nbElem)
{
produits[i] = produits[i+1];
i++;
}
nbElem--;
compteur--;
}
}
// Supprimer tous les produits
public void supprimerTous(){
for(Produit pr: produits){
if(pr!=null)
{
pr = null;
nbElem--;
compteur--;
}
}
}
/* Afficher les caractéristiques du magasin, ainsi que ses produits
Afficher le nombre de produit et la capacité initiale */
public void afficherTous(){
System.out.print(nom +" "+ adresse+": ");
System.out.println(nbElem + " articles /" + capacite + "(places)");
for(int i=0;i<nbElem;i++)
{
System.out.println("\t"+ produits[i]);
}

Page |4
Institut Supérieur d’informatique
Équipe pédagogique
Mr Ben Rkaya Moez & Mme Boulifa Nadia Programmation JAVA
Mme. Salwa Mbarek Mme. Rania Mzid Filière : 2CS

System.out.println("-------------------------------------------");
}
public int getIdentifiant() {
return identifiant;
}
public static int getCompteur() {
return compteur;
}
}
Classe Test
package com.java.test;
import com.java.classes.*;
public class TestProgramme {
public static void main(String[] args) {
Produit p1= new Produit(3250, "Tomate","Sicam",200,500);
p1.setIsremise(true);
Produit p2= new Produit(3251, "Yaourt","Vitalait",0.500,100);
Produit p3= new Produit(3252, "Yaourt","Délice",0.500,200);
Produit p4= new Produit(3253, "Pc portable","dell",1700,30);
p4.setIsremise(true);
Produit p5= new Produit(3254, "Souris sans
fil","Mac",3.200,100);
// déclaration de deux magasins
Magasin mg1= new Magasin(112,"Magazin général","Ben arouss");
Magasin mg2= new Magasin(113,"Mytec","charguia");
// Ajouter 3 produits à mg1 et 2 produits à mg2
mg1.ajouterProduit(p1);
mg1.ajouterProduit(p2);
mg1.ajouterProduit(p3);
//mg1.supprimerProduit(p2);
mg1.ajouterProduit(p4);
mg2.ajouterProduit(p5);
// afficher les deux magasins

//mg1.supprimerTous();
//mg2.supprimerTous();
mg1.afficherTous();
mg2.afficherTous();
System.out.println(Magasin.getCompteur() + " Produits dans tous
les magasins");
}
}

Page |5