Aide en programmation orienté object

salut à toi,
voici mon problème.je dois dans un premier temps, crér un classe.
- cette classe a un attribut privé qui est un tableau definit comme suit:
index du tableau 0 1 2 3 4 5
elements du tableau 0 1 1 0 0 0
les élements du tableau sont des chiffres binaires.
- ensuite, je dois définir deux méthodes set() et get()
la methode set() contient deux arguments : l'index du bit et une nouvelle valeur pour ce bit. elle doit retourner 0 pour Ok et -1 s'il ya erreur(si l' argument index est en dehors du tableau ou si la valeur du bit n'est pas 0 ou 1)
la methode get() affiche les element du tableau.
-un constructeur : le constructeur doit recevoir un passa d'argument qui donne la longueur souhaiter du tableau. Il doit créer un tableau qui ne contienne que des zeros.
Merci de bien voulior m'aider.

35 réponses

Résumé de la discussion

Le problème porte sur une classe Registre en Java gérant un tableau binaire privé, avec un constructeur définissant la longueur et des méthodes set et get, et une initialisation du tableau à zéro. La solution fixe MAX_ARRAY_LENGTH à 6, initialise le tableau à zéro et vérifie que la valeur est 0 ou 1 et que l’indice est valide, tandis que get affiche les bits séparés par des barres. D'autres éléments du fil évoquent aussi l'alternative BitSet et la possibilité d'ajouter un constructeur surchargé acceptant directement un tableau pour initialiser le registre plus facilement.

Bobot (l’IA à votre service)
  1. Modérateur
    de rien ...

    bienvenue sur CCM ...
    0
    1. Merci beaucoup et bon appetit choubaka . J'apprecie vraiment ce que t'as fait pour moi. C'est énorme. J'aimerai vraiment apprendre à programmer le poo. As tu des liens pour gros nuls ou pour débutants? Je te suis reconnaissante pour tous les conseils que tu me donneras.
      Bonne journée.
      0
      1. Modérateur
        pour les deux première, c'est une fôte de frappe

        suffit de changer par "myBitArray2" partout

        pour la troisième, dans la classe main ... j'ai mis directement 6 comme valeur (c'est un "int"), déclare le en short dans le méthode main

        pour afficher ton tableau, tu dois écrire une méthode analogue à "get" de la classe registre ...

        0
        1. quand je compile , ca me donne 3 erreurs. Les voilà

          cannot resolve symbol

          symbol : variable myBitarray2

          location: class DeplaceRegistre

          myBitarray2[0] = wert;

          ^

          cannot resolve symbol

          symbol : variable myBitarray2

          location: class DeplaceRegistre
          myBitarray2[bitArrayLenght1-1] = wert;

          ^

          cannot resolve symbol

          symbol : constructor DeplaceRegistre(int,short[])

          location: class DeplaceRegistre

          bit = new DeplaceRegistre((8,d);

          ^
          et quand je commente les lignes où se trouve les erreurs pour afficher mon tableau avec cette commande: System.out.println(" "+d );
          ca me donne un nonsense comme ceci:
          [S@1cde100
          comment remedier à ca ? surtout comment afficher mon tableau?

          merci
          0
          1. Modérateur
            public class Registre { 
            
            	/** 
            	* Longueur max du tableau 
            	*/ 
            
            	private static final int MAX_ARRAY_LENGTH=6; 
            
            	/** 
            	* Mon tableau 
            	*/ 
            
            	private short[] myBitArray={0,1,1,0,0,0}; 
            
            
            	/** 
            	* Constructeur 
            	* @param aBitArrayLength 
            	*/ 
            
            	public Registre(int aBitArrayLength){ 
            
            		if (aBitArrayLength<=MAX_ARRAY_LENGTH) { 
            		
            			myBitArray=new short[aBitArrayLength];
             
            			int index=0; 
            
            			while (index<aBitArrayLength) {
             
            				myBitArray[index]=0; 
            				index++; 
            			}
            		} 
            
            
            		else {
             
            			System.out.println("Longueur demandee superieure a celle autorisee."); 
            		} 
            
            
            	} 
            
            	/** 
            	* Modifier la valeur d un bit 
            	* @param position 
            	* @param valeur 
            	*/
             
            	public void set(int position, int valeur){ 
            
            		if ( !((valeur==0)||(valeur==1)) ){
             
            			System.out.println("la valeur "+valeur+" est incompatible avec le type bit."); 
            		} 
            
            		if ( (position<myBitArray.length) && (position>0) ){ 
            
            			myBitArray[position]=(short) valeur; 
            		} 
            
            		else {
             
            			System.out.println("La position "+position+" est en dehors du tableau."); 
            		} 
            	} 
            
            	/** 
            	* Afficher le tableau 
            	*/
             
            	public void get(){
             
            		int index=0; 
            
            		while (index<myBitArray.length) {
             
            			System.out.print(myBitArray[index]);
             
            			if (index< (myBitArray.length-1) ){
             
            				System.out.println("|");
            				System.out.println(""+ myBitArray[index]);
            			} 
            
            			else {
             
            				System.out.println(); 
            			}
             
            		index++;
             
            		}
             
            	} 
            } 
            
            
            
            
            class DeplaceRegistre extends Registre{
            
            	private short[] myBitArray1;
            	private short[] myBitArray2;
            
            	private short bitArrayLenght1 = 0;
            
            
            
            
            	public DeplaceRegistre(short aBitArrayLength,short[] BitArray) { 
            	
            		super (aBitArrayLength);
            
            		bitArrayLenght1 = aBitArrayLength; 
            
            		myBitArray1= BitArray;
            		 
            
            		} 
            
            	}/* Fin constructeur*/ 
            
            	public short déplace_gd(short wert) {
             
            		short temp;
            
             
            		if ( !((wert==0)||(wert==1)) ) {
             
            			System.out.println("la valeur du bit "+wert+" n'est ni 0 ni 1.");
             
            			return(-1); 
            		}
             
            		else{ 
            
            			myBitarray2[0] = wert;
            
            
            			for (short i = 0; i < bitArrayLenght1 ;i++) {
             
             
            				temp = myBitArray1[i];
             
            				myBitArray2[i+1] = temp;
             
            
            			} 
            		}
            
            		return  myBitArray1[bitArrayLenght1-1];
            
            	} 
            
            
            
            
            	public short déplace_dg(short position,short wert, short temp){
            
             
            		if ( !((wert==0)||(wert==1)) ) {
             
            			System.out.println("la valeur du bit "+wert+" n'est ni 0 ni 1.");
             
            			return(-1); 
            		} 
            
            		else{ 
            
            			myBitarray2[bitArrayLenght1-1] = wert;
            
            
            			for (short i = 1; i <= bitArrayLenght1 ;i++) {
             
             
            				temp = myBitArray1[i];
             
            				myBitArray2[i-1] = temp;
            
            			}
            
            			return myBitArray1[0]; 
            		} 
            
            
            		 
            
            
            	} 
            
            
            
            }/*fin Class*/ 
            
            	/* 
            	*Methode Main 
            	*/ 
            class GereRegistre {
            
             
            	public static void main(String args[]) throws IOException { 
            
            		BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); 
            
            	/* 
            	*crée un Objet 
            
            	*/ 
            
            		DeplaceRegistre bit; 
            
            
            		short[] d= {0,1,0,1,0,1}
            
            
            	/* 
            	*Initialiaser 
            	*l' Objet 
            	*/ 
            
            		bit= new DeplaceRegistre(6,d); 
            
            
            
            
            	}//fin main 
            }//fin programme


            en gros ça doit être ça ... reste à compiler et à étoffer ...
            0
            1. deplace_gd veut dire que le deplacement se fait de la guche vers la drite et vis verca . je dois créer deux méthodes(deplace_gd, deplace_gd mais seulement je ne sais si c'est juste )dans ma sous classe (classe fille) qui fait ceci la methode1 fait ceci
              tableau1 [0][1][2][3][4][5] j'ajoute un element dans le tableau 1 à la gauche qui me donne le tableau2 comme ca

              tableau2 [6][0][1][2][3]][4] le 5 je le retourne à la fonction
              Return([5])

              la methode2 fait cela
              tableau1 [0][1][2][3][4][5] j'ajoute un element dans le tableau 1 à las droite qui me donne le tableau2 comme ca

              tableau2 [1][2][3]][4] [5][6] le 0 je le retourne à la fonction
              Return([0])
              0
              1. Modérateur
                je ne comprends pas ce que font tes méthodes deplace_gd et deplace_dg

                tu peux les commenter ??
                0
                1. merci beaucoup. Tu es vraiment une providence.
                  0
                  1. Modérateur
                    désolé mais j'ai été appelé pour une intervention au boulot ...

                    je termine le code et je le poste
                    0
                    1. salut à tous , n'ya vraiment personne pour m'aider?
                      choubaka au secours!!!!!!!!!!
                      0
                      1. j'esPère que tu ne m'as pas oublié mon grand. Je dois remettre ca demain, Aide moi.
                        0
                        1. Modérateur
                          c'est pas une mince affaire ... je verrais ça cet après-midi ..

                          je peux déjà te dire que tes méthodes deplace_gd et deplace_dg ne sont pas bonnes du tout ... que ce soit au niveau des arguments aussi bien qu'au niveau de l'algorythme ...

                          laisse moi un peu de temps pour revoir tout ça ... merci

                          et pis, j'ai faim :P
                          0
                          1. sorry encore un copier coller qui m'a induit en erreur s'il te plait peut tu completer le programme en t'appuyant sur l'énoncé que je t'ai donné? c'est une prière. insère dans mon programme ce qui lui manque pour que ca fonctionne. n'oublie pas d 'afficher le tableau d
                            class deplaceRegistre extends Registre.

                            public class Registre {

                            /**
                            * Longueur max du tableau
                            */
                            private static final int MAX_ARRAY_LENGTH=6;

                            /**
                            * Mon tableau
                            */
                            private short[] myBitArray={0,1,1,0,0,0};

                            /**
                            * Constructeur
                            * @param aBitArrayLength
                            */
                            public Registre(int aBitArrayLength){

                            if (aBitArrayLength<=MAX_ARRAY_LENGTH) {
                            myBitArray=new short[aBitArrayLength];
                            int index=0;

                            while (index<aBitArrayLength) {
                            myBitArray[index]=0;
                            index++;
                            }
                            } else {
                            System.out.println("Longueur demandee superieure a celle autorisee.");
                            }

                            }

                            /**
                            * Modifier la valeur d un bit
                            * @param position
                            * @param valeur
                            */
                            public void set(int position, int valeur){

                            if ( !((valeur==0)||(valeur==1)) ){
                            System.out.println("la valeur "+valeur+" est incompatible avec le type bit.");
                            }
                            if ( (position<myBitArray.length) && (position>0) ){
                            myBitArray[position]=(short) valeur;
                            } else {
                            System.out.println("La position "+position+" est en dehors du tableau.");
                            }
                            }

                            /**
                            * Afficher le tableau
                            */
                            public void get(){
                            int index=0;

                            while (index<myBitArray.length) {
                            System.out.print(myBitArray[index]);
                            if (index< (myBitArray.length-1) ){
                            System.out.print("|");
                            } else {
                            System.out.println();
                            }
                            index++;
                            }
                            }
                            }

                            /** à partir d'ici corriger et à copleter s#il vous plait**/

                            class deplaceRegistre extends Registre
                            {
                            deplaceRegistre(short aBitArrayLength,short[] myBitArray1)
                            {
                            super (aBitArrayLength);
                            myBitArray1=new short[aBitArrayLength];
                            myBitArray2=new short[aBitArrayLength];

                            short index;
                            for(index=0;index<aBitArrayLength; index ++)
                            {
                            if (((myBitArray1[index]==0)||(myBitArray1[index]==1)))
                            {
                            myBitArray2[index]=myBitArray1[index];
                            }
                            else
                            {
                            myBitArray2[index]=0;
                            }
                            }

                            }/* Fin constructeur*/

                            public short déplace_gd(short position,short wert, short temp)
                            {
                            super.set( position,wert);
                            if ( !((wert==0)||(wert==1)) )
                            {
                            System.out.println("la valeur du bit "+wert+" n'est ni 0 ni 1.");
                            return(-1);
                            }
                            else{

                            for (short i = 0; i <=myBitArray1.length ;i++)
                            {
                            position =i+1;
                            temp = myBitArray1[i];
                            myBitArray2[ position] = temp;

                            }
                            }

                            return (myBitArray2[myBitArray1.length-1]);

                            }

                            public short déplace_dg(short position,short wert, short temp)
                            {
                            super.set( position,wert);
                            if ( !((wert==0)||(wert==1)) )
                            {
                            System.out.println("la valeur du bit "+wert+" n'est ni 0 ni 1.");
                            return(-1);
                            }
                            else{

                            for (short i = 0; i <=myBitArray1.length ;i++)
                            {
                            myBitArray2[i -1] = myBitArray1[i]

                            temp = myBitArray1[0];
                            myBitArray2[myBitArray2.length] = myBitArray2.length ;

                            }
                            }

                            return (myBitArray2[myBitArray1.length-1]);

                            }

                            }/*fin Class*/

                            /*
                            *Methode Main
                            */
                            class GereRegistre
                            {
                            public static void main(String args[]) throws IOException
                            {

                            BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

                            /*
                            *crée un Ojet

                            */

                            deplaceRegistre bit={0,1,0,1,0,1}; //il ya là une erreur du compilateur

                            short[]d=new short[6];

                            /*
                            *Initialiaser
                            *l' Objet
                            */

                            bit= new deplaceRegistre(i,d);

                            }//fin main
                            0
                            1. Modérateur
                              il me faudrait le code de ceci

                              ErzeugeRegistre

                              0
                              1. j'avais juste oublier de te copier le nom de la classe .
                                si je fait ca public Registre ( short[] monTableau);

                                selon l'énoncé du probleme je ne saurai plus comment travaillé avec. Je suis débutante en java. Peux tu inserer ca dans mon programme, peut être`là je vais mieux comprendre. et surtout dans la sous classe comment à partir d 'un constructeur, je peux travailler avec les 2 tableaux comme c'est dit dans l'énoncé.
                                Dans les 2 autres m´ethodes de la sous classe, j'ai voulu utiliser les elements da la methode set c'est pourquoi j'ai utiliser suer. S'il te plaît montre moi comment je dois le faire.
                                comment faire pour afficher mon tableau d?
                                Merci
                                /** à partir d'ici corriger et à copleter s#il vous plait**/

                                class deplaceRegistre extends ErzeugeRegistre
                                {
                                deplaceRegistre(short aBitArrayLength,short[] myBitArray1)
                                {
                                super (aBitArrayLength);
                                myBitArray1=new short[aBitArrayLength];
                                myBitArray2=new short[aBitArrayLength];

                                short index;
                                for(index=0;index<aBitArrayLength; index ++)
                                {
                                if (((myBitArray1[index]==0)||(myBitArray1[index]==1)))
                                {
                                myBitArray2[index]=myBitArray1[index];
                                }
                                else
                                {
                                myBitArray2[index]=0;
                                }
                                }

                                }/* Fin constructeur*/

                                public short déplace_gd(short position,short wert, short temp)
                                {
                                super.set( position,wert);
                                if ( !((wert==0)||(wert==1)) )
                                {
                                System.out.println("la valeur du bit "+wert+" n'est ni 0 ni 1.");
                                return(-1);
                                }
                                else{

                                for (short i = 0; i <=myBitArray1.length ;i++)
                                {
                                position =i+1;
                                temp = myBitArray1[i];
                                myBitArray2[ position] = tempo;

                                }
                                }

                                return (myBitArray2[myBitArray1.length-1]);

                                }

                                public short déplace_dg(short position,short wert, short temp)
                                {
                                super.set( position,wert);
                                if ( !((wert==0)||(wert==1)) )
                                {
                                System.out.println("la valeur du bit "+wert+" n'est ni 0 ni 1.");
                                return(-1);
                                }
                                else{

                                for (short i = 0; i <=myBitArray1.length ;i++)
                                {
                                myBitArray2[i -1] = myBitArray1[i]

                                temp = myBitArray1[0];
                                myBitArray2[myBitArray2.length] = myBitArray2.length ;

                                }
                                }

                                return (myBitArray2[myBitArray1.length-1]);

                                }

                                }/*fin Class*/

                                /*
                                *Methode Main
                                */
                                class GereRegistre
                                {
                                public static void main(String args[]) throws IOException
                                {

                                BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

                                /*
                                *crée un Ojet

                                */

                                deplaceRegistre bit={0,1,0,1,0,1,0,1}; //il ya là une erreur du compilateur

                                short[]d=new short[6];

                                /*
                                *Initialiaser
                                *l' Objet
                                */

                                bit= new deplaceRegistre(i,d);

                                }//fin main
                                }//fin programme
                                0
                                1. Modérateur
                                  si tu dois travailler avec deux tableau, rien ne t'empêche de les initialiser tous les deux dans ton constructeur ..

                                  le premier sera initialisé à partir des donées fournies par l'argument, l'autre par défaut...

                                  0
                                  1. oui c amarche mais sans private. je fais comment pour mes tableaux? et les methodes c'est bien fait?
                                    0
                                    1. Modérateur
                                      pour le constructeur, je viens de vérifier, tu n'as pas de constructeur de la classe registe qui accépte un tableau ... uniquement un int qui détermine la longueur du tableau ..

                                      rien ne t'empêche de créer un deuxième constructeur qui prends alors deux arguments ou seulement ton tableau ..

                                      public Registre ( short[] monTableau);

                                      il sera certainement utile d'avoir alors deux tableaux dans tes attributs de la classe Registre.. De cette manière, lorsque tu fais appel à un des constructeur, on initialise le tableau1 par exemple et lorsque tu fais appel à une méthode pour le deuxième ..

                                      Maintenant, je remaque dans ta méthode deplaceRegistre, tu fais appel à un constructeur super(int ....), je vois pas à quelle superclasse tu fais appel...

                                      Si tu dois créer une sous classe de registre, alors là d'accord mais je ne vois nulle part dans ton code cette fameuse sous classe..

                                      public Class PetitRegistre extends Registre {
                                       ...........
                                      
                                      }


                                      ceci est une sous classe de registre, qui hérite des attributs et des méthodes de Registre...
                                      0
                                      1. Modérateur
                                        il est possible que ce que tu veux rentrer dans ton tableau est trop grand ..

                                        je vois 8 entrées, alors que tu dois avoir maximum 6 entrées...

                                        private short[6] d = {0,1,0,1,0,1};

                                        ça marche ça ??

                                        sorry, je n'ai pas de compilateur pour vérifier, je fais ça de mémoire seulement...
                                        0
                                        1. quan j'essaye de compiler ca , ca me donne ces trois erreurs

                                          - illegal start of expression

                                          d=={0,1,0,1,0,1,0,1};

                                          ^

                                          cannot resolve symbol

                                          symbol : constructor Registre(int,short[])

                                          location: class Registre

                                          Registre bit = new Registre(6,d);

                                          ^
                                          et puis j'ai mis d= d=={0,1,0,1,0,1,0,1};
                                          ca me donne la même erreur
                                          illegal start of expression
                                          0
                                          • 1
                                          • 2