scons
Messages postés8Date d'inscriptionjeudi 23 octobre 2003StatutMembreDernière intervention28 juin 2006
-
26 juin 2006 à 13:13
scons
Messages postés8Date d'inscriptionjeudi 23 octobre 2003StatutMembreDernière intervention28 juin 2006
-
28 juin 2006 à 13:48
bonjour.
voila j'ai un probleme avec une application developpée en java et qui s'appuie sur le concept orienté objet.
mon application est destinée à la gestion de pieces elementaires et composites.
une piece composite sera comoposée de plusieurs pieces elmentaires.
je peu ainsi par l'intermedaire de cette application ceer ces deux types de pieces.
cependant lors de la supression de pieces j'aimerai que l'application ne puisse pas suprimer une piece composite sans affecter les pieces elementaires qui la compose.
je sais pas si cela est tres cair pour vous, je me permet ainsi de vous poster le code de mon programme.
voici le code de mon applications.
import java.util.*;
public class Monappli2
{
public static void main(String[]args)
{
Menu m = new Menu ();
}
}
class Menu // creation de la calsse menu
{
int i = 1;
int num;
int b;
String nums, nums1, nums2;
String no,no1;
String a;
float px;
Map pieces = new Hashtable(); // declaration de la Map piece
Set tab = new HashSet(); // decalration d'ensemble tab
public Menu()
{
do // affiche la phrase de bienvenue seule au debut de l'application
{
System.out.println("bonjour bienvenuez sur le programme de gestion des pieces");
i=i+1;
}while(b==1);
do
{
System.out.println("que voulez vous effectuer comme operation?");
System.out.println();
System.out.println("1: creer une piece elementaire");
System.out.println("2: afficher une piece");
System.out.println("3: creer une piece composite"); // creation du menu
System.out.println("4: afficher toutes les pieces");
System.out.println("5: supprimer une piece");
System.out.println("6: suprimer l'ensemble de toutes les pieces");
System.out.println("7: fermer l'application");
System.out.println("entrer votre choix");
num=Lire.lireEntier(); // lit l'entier selectionner
switch(num) //suivant le numero entrée on execute la methode qui lui est associée
{
case 1 : this.pieceelem();break;
case 2 : this.affpiece();break;
case 3 : this.piececomp();break;
case 4 : this.toutaffiche();break;
case 5 : this.suprimeunepiece();break;
case 6 : this.videtable();break;
}
}while(num!=7); //condition de ferneture de l'aplication
}
public void pieceelem() //methode de creation d'une piece elementaire
{
System.out.println();
System.out.println("entrer le numero de serie");
nums = Lire.lireChaine();
System.out.println("entrer le nom de la piece");
no = Lire.lireChaine();
System.out.println("entrer le prix de l'objet");
px = Lire.lireFloat();
System.out.println("vous venez de creer la piece de numero: " +nums);
PieceElementaire p0 = new PieceElementaire(nums,no,px); //creation de la piece
pieces.put(nums,p0);
System.out.println();
}
public void affpiece() // affichage d'une piece
{
System.out.println("entrer le numero de serie de la piece a afficher");
a = Lire.lireChaine(); // lecture du code entrée
if(pieces.containsKey(a)) //si le numero est dans la Map piece
{
Piece p = (Piece)pieces.get(a);// recuperation des données
p.AfficheInfo(); // affichage des données de la piece
}
else
{
System.out.println("la piece n'existe pas");// sinon le piece n'existe pas
System.out.println();
}
}
public void piececomp() //creation d'une piece comoposite
{
System.out.println();
System.out.println("entrer le numero de serie de la nouvelle piece");
nums = Lire.lireChaine(); //definiton du nom et code de la piece composite
System.out.println("entrer le nom de la nouvelle piece");
no = Lire.lireChaine();
do
{
System.out.println();
System.out.println("entrer le numero de la piece elementaire associer");// numero de la piece elementaire pour la composition
nums1 = Lire.lireChaine();
if(pieces.containsKey(nums1))
{
Piece p = (Piece)pieces.get(nums1);
tab.add(p); //stockage des donnes dans l'ensemble tab
}
System.out.println("voulez vous ajouter une autre piece a la composition?"); // conditon d'arret de la composition
System.out.println("oui tapez 1, sinon tapez une autre touche");
b = Lire.lireEntier();
System.out.println();
PieceComposite pc0 = new PieceComposite(nums,no,tab); // creation de la piece composite
pieces.put(nums,pc0);
}while(b==1); // condition d'arret de la composition
}
public void toutaffiche() //tout afficher
{
if(pieces.isEmpty()) // si vide
{
System.out.println("il n'y a pas de piece dans la table");
}
else
{
Iterator i = pieces.keySet().iterator(); // sinon parcour de la MAP piece
while(i.hasNext())
{
Object cle =(Object)i.next();
Piece p1 = (Piece)pieces.get(cle);//recuperation de la cle de l'objet
p1.AfficheInfo(); // affichage de la piece
}
}
}
public void suprimeunepiece() // suppression d'une piece
{
System.out.println("entrer le numero de serie de la piece a supprimer");
nums2 = Lire.lireChaine();
if(pieces.containsKey(nums2))
{
/****************************************************************************************************************
Iterator i = tab.iterator();
while(i.hasNext())
{
System.out.println("etes vous sure");
}
****************************************************************************************************************/
System.out.println("la piece de numero"+nums2);
pieces.remove(nums2); // suppression de la piece
System.out.println("a bien ete suprimee");
System.out.println();
}
public void videtable() // effacer toutes les données
{
pieces.clear(); // suppression des données
System.out.println("la table de piece a ete vidée");
System.out.println();
System.out.println();
}
abstract class Piece // definiton de la classe piece comme abstraite car elle a besion de ses sous classes pour exister
{
private String numserie;
private String nom;
private PieceComposite Composite;
}
protected abstract float Prix(); // methode de prix abstraite car differente selon
{ // si c'est une piece composite ou elementaire
}
public void AffecterComposite(PieceComposite pc)
{
Composite=pc;
}
}
class PieceElementaire extends Piece // sous classe piece elementaire
{
private float prix;
String nums;
String no;
PieceElementaire(String num,String no,float pr)
{
super(num,no); // constructeur qui reprend celui de la classe mere
prix=pr;
}
protected float Prix() // methode qui retourne le prix d'une piece elementaire
{
return prix;
}
}
class PieceComposite extends Piece // sous classe piece composite
{
Set composants; // ensemble de composant
PieceComposite(String num,String no,Set com)
{
super(num,no); // constructeur qui reprend celui de la classe mere
Piece p;
composants=new HashSet();
Iterator i=com.iterator(); // parcour de l'ensemble
while(i.hasNext())
{
p=(Piece)i.next();
composants.add(p); // ajout de la piece elementaire qui vas entrer dans la composition
}
}
protected float Prix() // methode de calcul du prix
{
float somme=0;
Piece p;
Iterator j=composants.iterator(); // parcour l'ensemble de composant
while(j.hasNext())
{
p=(Piece)j.next(); // tant qu'il y a un suivant
somme=somme+p.Prix(); // on additionne les prix
}
return somme; // retourne la somme finale
}
public void AjoutComposants(Piece p) //methode de stockage des composants
{
composants.add(p);
p.AffecterComposite(this);
}
public void DetruireComposants(Piece p) //methode de supression de piece
{
composants.remove(p);
p.AffecterComposite(this); // met a jour l'ensemble
}
public void affichecomp() // methode d'affichage d'une piece composite
{
System.out.println();
System.out.println("*****************");
Iterator i = composants.iterator(); // parcour de l'ensemble de composant
System.out.print("la piece " +nums);
System.out.print(" est composee de:");
System.out.println();
while(i.hasNext())
{
Piece P = (Piece)i.next();
P.AfficheInfo();
}
System.out.println("*****************");
System.out.println();
}
public void AfficheInfo()
{
super.AfficheInfo();
this.affichecomp();
}
}
}
voila si quelqu'un piuvait m'aider je lui en serai tres reconnaissant.
merci .