Java et concept objet

scons Messages postés 8 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 28 juin 2006 - 26 juin 2006 à 13:13
scons Messages postés 8 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 28 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
                        }


                 else
                   {
                     System.out.println("la piece n'existe pas");
                     System.out.println();
                       }


                                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();
                 }


                 else
                {
                System.out.println("la piece n'existe pas");
                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;


    Piece( String num, String no)
     {
      numserie=num;
      nom=no;           //definiton d'une piece
      Composite= null;
      }


           void AfficheInfo() // affichage sous DOS des données concernant un piece
            {


            System.out.println("_______________________");
             System.out.println("numserie: "  +numserie);
             System.out.println(" nom: "  +nom);
             System.out.println(" prix: "  +this.Prix());
             System.out.println();


            }
            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 .

4 réponses

rrk275 Messages postés 540 Date d'inscription vendredi 25 juin 2004 Statut Membre Dernière intervention 1 octobre 2007 2
26 juin 2006 à 13:52
Essaye la partie java du site ! :D
0
nickadele Messages postés 1251 Date d'inscription mercredi 7 août 2002 Statut Modérateur Dernière intervention 10 avril 2013
26 juin 2006 à 17:19
j'ai transféré ton post vers Java !

Nickadele
----------------------------------------------
non, ma belle ne s'appel pas Adèle
0
scons Messages postés 8 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 28 juin 2006
26 juin 2006 à 19:39
ok nickadele merci c sympa.
0
scons Messages postés 8 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 28 juin 2006
28 juin 2006 à 13:48
perconne pour me donner un tit coup de main?!
0
Rejoignez-nous