Rechercher : dans
Par :

Aide en programmation orienté object

Dernière réponse le 26 avr 2006 à 13:32:39 bifaka, le 23 avr 2006 à 00:08:16 
 Signaler ce message aux modérateurs

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.

Meilleures réponses pour « aide en programmation orienté object » dans :
Introduction à la programmation orientée objet Voir Un nouveau concept de développement Extrait de « Au coeur de ActiveX et OLE », de David Chappel "Au cours des 35 dernières années, les concepteurs de matériel informatique sont passés de machines de la taille d'un hangar à des ordinateurs...
VisualBasic est un langage orienté objet VoirMythe VisualBasic est un langage orienté objet. Réalité FAUX. Explications Ce mythe revient régulièrement, mais c'est malheureusement faux : VB6 n'est pas un langage orienté objet. Prenons les principes de base de l'orienté objet : ...
Introduction au Dark Basic VoirGrand merci à DJ Fire-Black qui est l'auteur de cette astuce. Introduction Pourquoi choisir DarkBASIC plutôt qu'un langage POO ? DarkBASIC est simplifié, par rapport aux langages POO (Programmation Orientée Objet) et vous fera gagner un temps...
Le mot-clé static ou les attributs et méthodes de classe en POO Voir(NOTE: Cet article explique la signification du mot-clé static au sein d'une classe. La signification de "static" en C n'a par exemple rien à voir.) Vous êtes débutant en programmation orientée objet. En Java, en C++...ou que sais-je encore,...
POO - Le polymorphisme VoirDéfinition du polymorphisme Le nom de polymorphisme vient du grec et signifie qui peut prendre plusieurs formes. Cette caractéristique est un des concepts essentiels de la programmation orientée objet. Alors que l'héritage concerne les classes (et...
Java - L'héritage VoirLa notion d'héritage Le concept d'héritage est un des concepts les plus importants de la programmation orientée objet, car il conditionne irréversiblement la façon selon laquelle un code Java est écrit. L'héritage est un mécanisme permettant de...

1

decay, le 23 avr 2006 à 00:16:40

Ca sent un peu le "faites mes devoirs, je vous en serai reconnaissant"

Et il ya une antinomie que je détecte dans l'énoncé, le tableau fait 6 éléments, et le constructeur doit recevoir la taille du tableau? Il n'y a pas de taille maximum précisée?

Et pour afficher le contenu du tableau, c'est un affichage sur console texte ou graphique?

Mais je te donne au moins le début de la classe :

class CBinary
{
char bits[6];
public:
CBinary();
CBinary(int a_iTabLength);
int Set(char a_iBitIndex, char a_iNewBitValue);
void Get();
~CBinary();
}

Répondre à decay

2

bifaka, le 23 avr 2006 à 00:41:15

Merci, je te suis vraiment reconnaissante. C'est juste que j'ai passé 4h devant cet exercice sans savoir vraiment quoi faire.
oui le tableau fait 6 éléments, et le constructeur doit recevoir la taille du tableau. Non Il n'y a pas de taille maximum précisée

c'est un affichage sur console graphique car le tableau doit être de type short si tu essayes de commenter ce que t'as fait ca serait bien ou peut être completer ce j'ai fait..

Voici ce que j'ai essayé de faire mais ca ne donne rien:

import java.io.*;
class Registre

{

private short[] Bit={0,1,1,0,0,0};


public int setBit(int index; int valeur)
{
for ( i =0;i<Bit.length;i++)
{
if((index < Bit.length) ||(valeur=0||valeur=1) )
{

return 0;
}
else
return -1;
}

}

}


(
int i=0;
for ( i =0;i<Bit.length;i++)
{
System.out.print("|"+Bit[i]);
}


)

// constructeur
public Registre()
{

}

}

Répondre à bifaka

3

emmanuelP, le 23 avr 2006 à 17:14:07

Salut,

Il y a des méthodes plus "futées" (en utilisant par exemple la classe java.util.BitSet) mais compte tenu de tes imposés:

	
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++;
		}
	}
}



Good luck

Répondre à emmanuelP

4

bifaka, le 23 avr 2006 à 20:44:05

Salut emmanuelP,
il se trouve que j'ai un autre problème. quand j'appelle la fonction get() dans la fonction main ca me donne cette erreur " void type not allowed here System.out.print(+ blax.get()); "
je suis débutante en java c'est pourquoi j'ai autant de difficultés.
Merci beaucoup pour ton aide. Peux tu me donner un lien où je peux avoir accès à ces metodes futées ou tout simplement tu me donnes un programme avec ces methodes pour que je puisse m'entrainer.


bonne soirée.

Répondre à bifaka

5

bifaka, le 24 avr 2006 à 10:07:08

Bonjour à tous,
ya t- il quelqu'un pour m'aider? quand j'appelle la methode get() dans la methode main() ca me donne cet erreur:

" void type not allowed here System.out.print(+ blax.get()); "

tout simplement parcque la methode get() ne retourne rien et n'a pas de passage d'argument. Ca doit seulement afficher les element sdu tableau. Qui peut me dire comment je dois faire pour trouver une solution à ca?afin de pouvoir afficher les élements du tableau. Je serai reconnaissante pour chaque aide. En plus, je dois aussi deplacer les elements du tablau à gauche et à droite. Là aussi, je ne sais pas comment ca se passe.
Merci d'avance.

Répondre à bifaka

6

choubaka, le 24 avr 2006 à 10:28:04

Salut

et avec ça ??

System.out.print("" + myBitArray[index]);
Chouba,
Pochard d'assaut .. 

Répondre à choubaka

7

bifaka, le 24 avr 2006 à 11:28:06

Merci Chouba,
ca marche. je me suis redu compte en appelant la methode get() dans la methode main() comme ca
blax.get()
ca marche aussi.
grand merci les gars.
j'ai un autre probleme

je dois aussi deplacer les elements du tablau à gauche et à droite. c.à. d je dois créer une autre classe dans laquelle je deplace tous les elemets du tableau à une position à gauche respectivement à droite. le dernier element qui sort du tableau doit être effacer.
comment ca se passe je n'ai jamais fait ca.
Merci pour toute aide

Répondre à bifaka

8

choubaka, le 24 avr 2006 à 12:14:14

Salut

si je comprends bien ... les données de ton tableau de longueur 6 doivent se retrouver dans un tableau de longueur 5 ...


donc en schématisant ça donne

tableau1[0][1][2][3][4][5]

tableau2 [4][3][2][1][0]

le [5] étant supprimé

donc en fait, tu dois faire une méthode qui itére ton tableau, en retire les données et les insére dans le tableau 2 en partant de la fin ..


int index2 = 4;

for (int i = 0; i<5;i++){

      

      short tempo = tableau1[i];
      tableau2[index2] = tempo;
      index2 = index2--

             
}




Chouba,
Pochard d'assaut .. 

Répondre à choubaka

9

bifaka, le 24 avr 2006 à 12:32:01

C'est pas exactement ca.
les deux tableaux doivent avoir la même longueur. L e truc c'est que j'ai deux methodes
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])
merci pour ton aide choubaka

Répondre à bifaka

10

choubaka, le 24 avr 2006 à 14:07:41

Ok


pour la méthode 1

public short methode1(){

int index2 = 0;

tableau2[index2] = 6;

for (int i = 0; i == tableau1.lenght() ;i++){

      
      index2 = i + 1
      short tempo = tableau1[i];
      tableau2[index2] = tempo;
      
        }

       return tableau1[5];
             
}



pour la méthode 2

public short methode2(){

        short tempo = tableau1[0];
        tableau2[6]  = 6;

for (int i = 1 ; i < tableau.lenght ; i ++){

      tableau2[i -1] = tableau1[i];


       }

    return tempo;
        

}

Chouba,
Pochard d'assaut .. 

Répondre à choubaka

11

bifaka, le 25 avr 2006 à 08:30:38

Merci pour ton aide choubaka c'est vraiment énorme et je te suis reconnaissante.
Au fait mon programme actuel ressemble à ca. mais je dois l'élargir
en créant une sous calsse de la registre. celle doit hériter du constructeur de la classe mère et en plus de ca, elle doit avoir comme argument un tableau qui contient les valeurs initiales du registre. Elle doit aussi vérifier que toutes cettes valeurs sont 0 ou 1si c'est le cas, il doit écrire ces valeurs dans un deuxieme tableau comme valeurs initiale et si ce n'est pas le cas, il doit initialiser le tableau zéro. Ensuite je dois créer deux méthodes 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])
dans la methode main, je dois créer un objet de la classe fille qui est un tableau de longueur 6 et qui est ainsi initialiser: 010101.
demander `l'utilisateur quel bit du registre il veut déplacer et de quel côté ensuite exécuter l'opération et afficher les bit qui ont été déplacer.
Je suis très reconnaissante pour toute aide. corriger mon programme et completer le si necessaire car ca ne fonctionne pas.

J'AI BESOIN D'aiDE . C'est URGENT. MERCI POUR TOUT AIDE

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**/


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

Répondre à bifaka

12

choubaka, le 25 avr 2006 à 09:04:08

Salut

déjà un petit problème ici ..

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


tu reçois en argument "myBitArray1" qui est à priori déjà rempli ...

dans la ligne soulignée, tu l'écrase en réinitialisant le tableau qui de ce fait devient vide ...
Chouba,
Pochard d'assaut .. 

Répondre à choubaka

13

choubaka, le 25 avr 2006 à 09:13:30

Deuxième petit problème

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; 


il vient d'où ce tempo ??? Chouba,
Pochard d'assaut .. 

Répondre à choubaka

15

choubaka, le 25 avr 2006 à 09:29:22

//deplaceRegistre bit={0,1,0,1,0,1,0,1}; //il ya là une erreur du compilateur // c'est normal bit n'existe pas

short[] d== new short[6];

Registre bit = new Registre(i,d); // ça c'est l'instanciation de ta classe. mais je ne sais pas où tu vas chercher ton "i"

d=={0,1,0,1,0,1,0,1}; 
bit.deplaceRegistre(6,d);



/* 
*Initialiaser 
*l' Objet 
*/ 






}//fin main 
Chouba,
Pochard d'assaut .. 

Répondre à choubaka

16

bifaka, le 25 avr 2006 à 09:40:40

Au fait je dois travailler avec deux tableaux mais on me demande de passer seulement un tableau au contructeur . Comment faire pour initialiser le deuxieme tableau? où dois je le déclarer? tempo est une erreur de frappe. jevoulais écrire temp. Je ne savais pas qu'on pouvais mettre directement des chiffres c'est pourquoi j'ai mis i. Alors c'est juste l'opération que j#ai faite dans les deux méthodes?
merci pour ton aide mon grand.

Répondre à bifaka

17

bifaka, le 25 avr 2006 à 10:01:44

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

Répondre à bifaka

18

choubaka, le 25 avr 2006 à 10:26:51

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...
Chouba,
Pochard d'assaut .. 

Répondre à choubaka

19

choubaka, le 25 avr 2006 à 10:39:16

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... Chouba,
Pochard d'assaut .. 

Répondre à choubaka
Collection CommentÇaMarche.net