I.S.I.L - Institut Supérieur des Ingénieurs Liégeois

Nous vous souhaitons la bienvenue et une bonne visite sur le forum de
I.S.I.L - Institut Supérieur des Ingénieurs Liégeois

Merci de vous connecter ou vous inscrire.
I.S.I.L - Institut Supérieur des Ingénieurs Liégeois

Forum d'entraide


    Exercice 5 - classe binary

    Partagez

    Andy_D
    Apprenti
    Apprenti

    Messages : 68
    Date d'inscription : 14/09/2010
    Age : 28

    Exercice 5 - classe binary

    Message par Andy_D le Mar 25 Jan - 22:06

    Salut les gars,
    j'ai une petite question concernant la méthode d'instance "cmpl1".
    Voici ce qui est demandé :
    "Cette classe doit comporter les méthodes d'instances suivantes :
    ...
    cmpl1()
    Cette méthode doit retourner la référence d'un objet Binary qui contient le complément à 1 binaire de l'objet sur lequel la méthode est appelée".

    Bon pour ce qui est du complément a un, aucun soucis. Ma question est la suivante : comment on retourne la référence d'un objet ? Puis-je créer un objet binary dans une méthode d'instance de ladite classe binary ? C'est un peu bizarre non ?

    Merci du coup de main.

    ANDY

    Andy_D
    Apprenti
    Apprenti

    Messages : 68
    Date d'inscription : 14/09/2010
    Age : 28

    Re: Exercice 5 - classe binary

    Message par Andy_D le Lun 31 Jan - 0:05

    Bon voila, je vous file le code source. Comme d'hab, on copie pas comme des charognards... Et si vous avez des remarques, dites les moi.

    Code:

    package Theorie5;

    /**
     * <b>Classe Binary</b>
     * <p>
     * Une objet binary est un vecteur de taille 'n' contenant 'n' variables
     * booléennes représentant l'état 1 ou 0
     * </p>
     *
     * @author Andy
     * @version 1.0
     */
    public final class Binary{

        /**
        * Vecteur de variables booléennes
        */
        public boolean[] vecteur;

        /**
        * Taille du vecteur
        */
        public int tailleVecteur=0;



        /*<b>Constructeurs</b>*/

        /**
        * Par défaut, le vecteur sera composé de 32 valeurs booléenes
        * Mais il est possible de lui donner une taille.
        *
        */
        public Binary ()
        {
            vecteur = new boolean[32];
            tailleVecteur=32;
            remplissage();
        }
        /**
        *
        *@throws IllegalArgumentException  Si jamais la taille entrée est <0.
        */
        public Binary(int size) throws IllegalArgumentException
        {
            if(size<0)
              throw new IllegalArgumentException("Le nombre de bits est négatif");
            else
            {
              vecteur = new boolean[size];
              tailleVecteur = size;
              remplissage();
            }
        }



        /*
        * <b>Méthodes d'instances</b>
        */

        /**
        * Me permet de remplire par défaut le vecteur avec des "falses".
        */
        public void remplissage() // permet de mettre toutes les valeurs a false (=0)
        {
            if(tailleVecteur>0)
            {
                for(int i=0; i<tailleVecteur; i++)
                    vecteur[i]=Boolean.FALSE;
            }
        }
        /**
        * <b>setVal(int n)</b>
        * n indique la valeur entière positive à convertir en binaire avec comme
    convention qu’un 1 binaire sera traduit en true et un 0 binaire en false dans le
    vecteur de booléen.
        * @param n
        * @throws IllegalArgumentException
        */
        public void setVal(int n) throws IllegalArgumentException
        {
            int max = maxValue();
            if(n<0||n>max)
            {
                throw new IllegalArgumentException("La valeur doit être compris entre 0 et "+max);
            }
            else
            {
            char[] valBin = Integer.toBinaryString(n).toCharArray();
            remplissage();
            int incr =0;
            for(int i=valBin.length-1; i>=0; i--)
            {
                boolean val= Boolean.FALSE;
                if( valBin[i]=='1')
                    val = Boolean.TRUE;
                vecteur[incr]=val;
                incr++;
            }
            }
        }
    /**
     * <b>maxValue()</b>
    Cette méthode doit retourner la valeur maximale positive entière que le vecteur
    est capable de mémoriser.
     * @return
     */
        public int maxValue()
        {
            int max =0;
            if(tailleVecteur>0)
            {
                for(int i=0; i<tailleVecteur; i++)
                {
                    max+=(int)Math.pow(2, i);
                }
            }
            return max;
        }
        @Override
        /**
        * toString()
    Cette méthode doit retourner un String qui contient la représentation de la
    valeur binaire mémorisée dans le vecteur booléen.
        */
      public String toString()
        {
            String retour="";

            for(int i=tailleVecteur-1; i>=0; i--)
            {
                if(vecteur[i]==Boolean.TRUE)
                    retour+="1";
                else retour+="0";
            }
            return retour;
        }

        /**
        * <b>clearBit(int  index)</b>
    index indique la position du bit à annuler (valeur false dans le vecteur booléen).
    Cette méthode doit lever un  IllegalArgumentException avec le message suivant
    « Indice incorrect» si index est <0 ou >la taille du vecteur booléen.
        * @param index
        * @throws IllegalArgumentException
        */
        public void clearBit(int index) throws IllegalArgumentException
        {
            if(index<0 || index>tailleVecteur-1)
            {
                throw new IllegalArgumentException("Indice incorrect");
            }
            else
            {
                vecteur[index] = Boolean.FALSE;
            }
        }

        /**
        * <b>setBit(int  index)</b>
    index indique la position du bit à mettre à 1 (valeur true dans le vecteur
    booléen).
    Cette méthode doit lever un  IllegalArgumentException avec le message suivant
    « Indice incorrect» si index est <0 ou >la taille du vecteur booléen.
        * @param index
        * @throws IllegalArgumentException
        */
        public void setBit(int index) throws IllegalArgumentException
        {
            if(index<0 || index>tailleVecteur-1)
            {
                throw new IllegalArgumentException("Indice incorrect");
            }
            else
            {
                vecteur[index] = Boolean.TRUE;
            }
        }

        /**
        * <b>isBit(int index)</b>
    Retourne true ou false suivant la valeur du bit à tester.
    Cette méthode doit lever un  IllegalArgumentException avec le message
    suivant « Indice incorrect» si index est <0 ou >la taille du vecteur booléen.
        * @param index
        * @return
        * @throws IllegalArgumentException
        */
        public boolean isBit(int index) throws IllegalArgumentException
        {
            boolean retour=Boolean.FALSE;
            if(index<0 || index>tailleVecteur-1)
            {
                throw new IllegalArgumentException("Indice incorrect");
            }
            else
            {
                retour = vecteur[index];
            }
            return retour;
        }

        /**
        * <b>cmpl1()</b>
    Cette méthode doit retourner la référence d’un objet Binary qui contient le
    complément à 1 binaire de l’objet sur lequel la méthode est appelée.
        * @return
        */
        public Binary cmpl1()
        {
            Binary cmpl= new Binary(tailleVecteur);
            for(int i=0; i<tailleVecteur; i++)
            {
                if(vecteur[i])
                {
                  cmpl.vecteur[i]=Boolean.FALSE;
                }
                else
                {
                    cmpl.vecteur[i]=Boolean.TRUE;
                }
            }
            return cmpl;
        }

        /**
        * <b>getVal()</b>
    Cette méthode doit retourner la valeur entière positive dont la représentation
    binaire est mémorisée dans le vecteur booléen.
        * @return
        */
        public int getVal()
        {
            int retour=0;
            for(int i=0; i<tailleVecteur; i++)
            {
                if(vecteur[i])
                retour+=(int)Math.pow(2, i);
            }
            return retour;
        }

        /**
        * <b>or( Binary mask)</b>
    Cette méthode modifie l’objet sur lequel la méthode est appelée en effectuant
    une opération or entre la valeur de l’objet et la valeur de mask.
        * @param mask
        */
        public void or(Binary mask)
        {
            int tailleMask = mask.tailleVecteur;
            if(mask.tailleVecteur>=tailleVecteur)
                tailleMask = tailleVecteur;

            for(int i=0; i<tailleMask; i++)
            {
              if(mask.vecteur[i]==Boolean.TRUE) //Si le Mask[i]==false, le vecteur reste ce qu'il est, par contre, si vecteur[i]=0 et mask[i]=1 alors vecteur[i]=1 => je n'ai besoin que de regarder le mask !
                  vecteur[i]=true;
            }
        }

        /**
        * <b>and( Binary mask)</b>
    Cette méthode modifie l’objet sur lequel la méthode est appelée en effectuant
    une opération and entre la valeur de l’objet et la valeur de mask.
        * @param mask
        */
        public void and(Binary mask)
        {
            int tailleMask = mask.tailleVecteur;
            if(mask.tailleVecteur>=tailleVecteur)
                tailleMask = tailleVecteur;

            for(int i=0; i<tailleVecteur; i++)
            {
                if(i<tailleMask)
                {
                    if(vecteur[i]==true && mask.vecteur[i]==true)
                        vecteur[i]=true;
                    else vecteur[i]= false;
                }
                else
                    vecteur[i]=false;
            }
        }
     
    }


    PS : Joe et Julien, NON, le code n'a pas été plombé par une erreur a retrouver ^^
    Allais it's time to Sleep

    A demain


    PS : Pour y voir plus claire, je vous conseil de soit : copier ce code dans netbeans (ou votre autre ide) ou alors dans notepad++, vous le copier dans un nouveau fichier et vous l'enregistrer avec l'extension .java. Il se mettra en couleur, ce qui est bcp plus lisible.

    Andy_D
    Apprenti
    Apprenti

    Messages : 68
    Date d'inscription : 14/09/2010
    Age : 28

    Re: Exercice 5 - classe binary

    Message par Andy_D le Mer 2 Fév - 22:47

    Bon il y a un soucis avec l'affichage de l'ancien message.
    Sinon j'ai modifié un peu mon code, voici la version "finale" :

    Code:

    package Theorie5;

    /**
     * <b>Classe Binary</b>
     * <p>
     * Une objet binary est un vecteur de taille 'n' contenant 'n' variables
     * booléennes représentant l'état 1 ou 0
     * </p>
     *
     * @author Andy
     * @version 1.2
     */
    public final class Binary{

        /**
        * Vecteur de variables booléennes
        */
        public boolean[] vecteur;

        /**
        * Taille du vecteur
        */
        private int tailleVecteur=0;



        /*<b>Constructeurs</b>*/

        /**
        * Par défaut, le vecteur sera composé de 32 valeurs booléenes
        * Mais il est possible de lui donner une taille.
        *
        */
        public Binary ()
        {
            vecteur = new boolean[32];
            tailleVecteur=32;
        }
        /**
        *
        *@throws IllegalArgumentException  Si jamais la taille entrée est <0.
        */
        public Binary(int size) throws IllegalArgumentException
        {
            if(size<0)
              throw new IllegalArgumentException("Le nombre de bits est négatif");
            else
            {
              vecteur = new boolean[size];
              tailleVecteur = size;
            }
        }

        /*
        * Méthodes d'instances
        */

        /**
        * Me permet de remplir par défaut le vecteur avec des "falses".
        */
        public void remplissage() // permet de mettre toutes les valeurs a false (=0)
        {
            if(tailleVecteur>0)
            {
                for(int i=0; i<tailleVecteur; i++)
                    vecteur[i]=Boolean.FALSE;
            }
        }
        /**
        * <b>setVal(int n)</b>
        * n indique la valeur entière positive à convertir en binaire avec comme
    convention qu’un 1 binaire sera traduit en true et un 0 binaire en false dans le
    vecteur de booléen.
        * @param n
        * @throws IllegalArgumentException
        */
        public void setVal(int n) throws IllegalArgumentException
        {
            int max = maxValue();
            if(n<0||n>max)
            {
                throw new IllegalArgumentException("La valeur doit être compris entre 0 et "+max);
            }
            else
            {
            char[] valBin = Integer.toBinaryString(n).toCharArray();
            remplissage(); // nécéssaire lorsqu'on utilise setVal plus d'une fois
            int incr =0;
            for(int i=valBin.length-1; i>=0; i--)
            {
                boolean val= Boolean.FALSE;
                if( valBin[i]=='1')
                    val = Boolean.TRUE;
                vecteur[incr]=val;
                incr++;
            }
            }
        }
    /**
     * <b>maxValue()</b>
    Cette méthode doit retourner la valeur maximale positive entière que le vecteur
    est capable de mémoriser.
     * @return
     */
        public int maxValue()
        {
            return (int)Math.pow(2, tailleVecteur)-1;
        }
        @Override
        /**
        * toString()
    Cette méthode doit retourner un String qui contient la représentation de la
    valeur binaire mémorisée dans le vecteur booléen.
        */
      public String toString()
        {
            String retour="";

            for(int i=tailleVecteur-1; i>=0; i--)
            {
                if(vecteur[i]==Boolean.TRUE)
                    retour+="1";
                else retour+="0";
            }
            return retour;
        }

        /**
        * <b>clearBit(int  index)</b>
    index indique la position du bit à annuler (valeur false dans le vecteur booléen).
    Cette méthode doit lever un  IllegalArgumentException avec le message suivant
    « Indice incorrect» si index est <0 ou >la taille du vecteur booléen.
        * @param index
        * @throws IllegalArgumentException
        */
        public void clearBit(int index) throws IllegalArgumentException
        {
            if(index<0 || index>tailleVecteur-1)
            {
                throw new IllegalArgumentException("Indice incorrect");
            }
            else
            {
                vecteur[index] = Boolean.FALSE;
            }
        }

        /**
        * <b>setBit(int  index)</b>
    index indique la position du bit à mettre à 1 (valeur true dans le vecteur
    booléen).
    Cette méthode doit lever un  IllegalArgumentException avec le message suivant
    « Indice incorrect» si index est <0 ou >la taille du vecteur booléen.
        * @param index
        * @throws IllegalArgumentException
        */
        public void setBit(int index) throws IllegalArgumentException
        {
            if(index<0 || index>tailleVecteur-1)
            {
                throw new IllegalArgumentException("Indice incorrect");
            }
            else
            {
                vecteur[index] = Boolean.TRUE;
            }
        }

        /**
        * <b>isBit(int index)</b>
    Retourne true ou false suivant la valeur du bit à tester.
    Cette méthode doit lever un  IllegalArgumentException avec le message
    suivant « Indice incorrect» si index est <0 ou >la taille du vecteur booléen.
        * @param index
        * @return
        * @throws IllegalArgumentException
        */
        public boolean isBit(int index) throws IllegalArgumentException
        {
            boolean retour=Boolean.FALSE;
            if(index<0 || index>tailleVecteur-1)
            {
                throw new IllegalArgumentException("Indice incorrect");
            }
            else
            {
                retour = vecteur[index];
            }
            return retour;
        }

        /**
        * <b>cmpl1()</b>
    Cette méthode doit retourner la référence d’un objet Binary qui contient le
    complément à 1 binaire de l’objet sur lequel la méthode est appelée.
        * @return
        */
        public Binary cmpl1()
        {
            Binary cmpl= new Binary(tailleVecteur);
            for(int i=0; i<tailleVecteur; i++)
            {
                if(vecteur[i])
                {
                  cmpl.vecteur[i]=Boolean.FALSE;
                }
                else
                {
                    cmpl.vecteur[i]=Boolean.TRUE;
                }
            }
            return cmpl;
        }

        /**
        * <b>getVal()</b>
    Cette méthode doit retourner la valeur entière positive dont la représentation
    binaire est mémorisée dans le vecteur booléen.
        * @return
        */
        public int getVal()
        {
            int retour=0;
            for(int i=0; i<tailleVecteur; i++)
            {
                if(vecteur[i])
                retour+=(int)Math.pow(2, i);
            }
            return retour;
        }

        /**
        * <b>or( Binary mask)</b>
    Cette méthode modifie l’objet sur lequel la méthode est appelée en effectuant
    une opération or entre la valeur de l’objet et la valeur de mask.
        * @param mask
        */
        public void or(Binary mask)
        {
            int tailleMask = mask.tailleVecteur;
            if(mask.tailleVecteur>=tailleVecteur)
                tailleMask = tailleVecteur;

            for(int i=0; i<tailleMask; i++)
            {
              if(mask.vecteur[i]==Boolean.TRUE) //Si le Mask[i]==false, le vecteur reste ce qu'il est, par contre, si vecteur[i]=0 et mask[i]=1 alors vecteur[i]=1 => je n'ai besoin que de regarder le mask !
                  vecteur[i]=true;
            }
        }

        /**
        * <b>and( Binary mask)</b>
    Cette méthode modifie l’objet sur lequel la méthode est appelée en effectuant
    une opération and entre la valeur de l’objet et la valeur de mask.
        * @param mask
        */
        public void and(Binary mask)
        {
            int tailleMask = mask.tailleVecteur;
            if(mask.tailleVecteur>=tailleVecteur)
                tailleMask = tailleVecteur;

            for(int i=0; i<tailleVecteur; i++)
            {
                if(i<tailleMask)
                {
                    if(vecteur[i]==true && mask.vecteur[i]==true)
                        vecteur[i]=true;
                    else vecteur[i]= false;
                }
                else
                    vecteur[i]=false;
            }
        }

    }

    Pour toute question...

    Contenu sponsorisé

    Re: Exercice 5 - classe binary

    Message par Contenu sponsorisé


      La date/heure actuelle est Ven 24 Fév - 8:00