[JAVA] Comment enregistrer des opérations ?

Fermé
Timidemimi - 30 nov. 2009 à 17:56
 timidemimi - 4 déc. 2009 à 11:15
Bonjour,

J'ai un projet à faire en java consistant à modéliser une classe mère CompteBancaire ainsi qu'une classe fille CompteBancaireReleve.
La classe fille doit effectuer les mêmes opérations que la classe mère [ crediter() et debiter() le compte ] sauf qu'en plus ces opérations doivent être mémorisées (5 au maximum), dans le but d'afficher un relevé de compte par la suite (montrant les dernières opérations stockées affichées dans l'ordre).

Le problème est que nous n'avons pas encore abordé les tableaux en cours, et il n'y a que peu d'indications sur mon sujet me permettant de savoir comment stocker autrement ces opérations.

Si quelqu'un connaissant une méthode pouvait me l'expliquer afin que je puisse l'appliquer dans ce projet, ce serait vraiment gentil!

En attendant une réponse, merci d'avance!
A voir également:

7 réponses

nobie-cs Messages postés 155 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 15 mai 2010 17
30 nov. 2009 à 23:36
tu peut utiliser une ArrayList
https://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html
tu peut faire aussi un Base de donnée en SQL
0
timidemimi Messages postés 5 Date d'inscription lundi 30 novembre 2009 Statut Membre Dernière intervention 3 décembre 2009
1 déc. 2009 à 18:01
Merci beaucoup pour ta réponse.

J'ai regardé ArrayList mais je ne sais même pas ce qu'est une collection =/
Et nous ne commençons le SQL que l'an prochain.. Cela me semble bien complexe pour un sujet de première année, surtout que notre prof dit que l'on n'a pas besoin d'utiliser de tableau ou autre.

J'ai pensé utiliser 5 variables ou je pourrais stocker les opérations, mais je me heurte à un problème. En effet dans la classe Test on effectue plus de 5 opérations et je ne parviens pas à "décaler" les valeurs de mes variables (la variable1 prend la valeur de la variable2, etc...). Penses-tu que ce soit possible de fonctionner ainsi? Merci d'avance!
0
nobie-cs Messages postés 155 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 15 mai 2010 17
1 déc. 2009 à 19:22
dsl j'ai bien compris ton problème tu peut m'expliquer ou donner un exemple de se que crediter() et debiter() doit faire
0
timidemimi Messages postés 5 Date d'inscription lundi 30 novembre 2009 Statut Membre Dernière intervention 3 décembre 2009
1 déc. 2009 à 20:03
Je te mets les lignes de code correspondant aux méthodes :

Pour la classe mère CompteBancaire :

// Méthode permettant de créditer le compte :


public void crediter(int montant_credite) {
if (montant_credite > 0) {
this.solde = this.solde + montant_credite;
}
}


// Méthode permettant de débiter le compte (on suppose que le solde peut-être négatif, c'est-à-dire que le compte peut être à découvert) :


public void debiter(int montant_debite) {
if (montant_debite > 0) {
this.solde = this.solde - montant_debite;
}
}


Et pour la classe fille CompteBancaireReleve :

//Redéfinition des méthodes sur les opérations pour incrémenter nb_operations_effectuees :


public void crediter(int montant_credite) {
super.crediter(montant_credite);
this.nb_operations_effectuees++;
}


public void debiter(int montant_debite) {
super.debiter(montant_debite);
this.nb_operations_effectuees++;
}


// Méthode renvoyant le nombre d'opérations effectuées depuis la création du compte :


public int getNbOperationsEffectuees() {
return this.nb_operations_effectuees;
}


Voilà si tu as besoin d'autres précisions je te copie-colle cela tout de suite =)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nobie-cs Messages postés 155 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 15 mai 2010 17
1 déc. 2009 à 21:02
tu veut enregistrer tout les (montant_debite et montant_credite) que ta effectuer ??
0
En gros avec ma classe Test je dois obtenir :

Ancien solde 1000 Euros

LIBELLE DEBIT CREDIT

Opération 1 +300 Euros
Opération 2 -150 Euros
Opération3 ...
...
...
Nouveau solde XXX Euros


Ce sont des exemples mais voilà pourquoi je dois stocker chaque opération. Je n'ai pas plus de précision, je sais juste que je dois créer une méthode "qui enregistre une opération au crédit (et une autre pour opération au débit) sur le compte dont le montant est passé en paramètre".

Effectivement un tableau serait l'idéal mais je ne sais absolument pas les utiliser et les infos que j'ai pu trouver sur le net ne sont pas d'une grande aide =/

De plus, comme je n'ai qu'un nombre prédéfini d'opérations que je peux mémoriser, les valeurs de Opération 1, 2, 3 ...etc changent dès que je fais plus d'opérations que ce nombre (puisque je veux afficher les dernières effectuées).

Alors voilà je viens de passer 1h à essayer avec 5 variables ou je stockerais la valeur du montant (positif si crédit, négatif si débit, pour pouvoir tester dans quelle colonne afficher). Mais ça ne fonctionne pas je bloque. J'ai également essayer d'utiliser un switch mais visiblement, ça ne convient pas non plus.

Quelqu'un de ma promo a dit avoir fait une méthode transaction() mais je n'ai pas plus de précision donc je ne vois pas trop ce qu'il a voulu dire...
0
(Je suis désolée la présentation de mon tableau n'a pas marché, les espaces ont été supprimmés, j'ai une colonne DEBIT et une colonne CREDIT disctinctes)
0
nobie-cs Messages postés 155 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 15 mai 2010 17
1 déc. 2009 à 21:48
la meilleure solution pour ton problème c'est d'utiliser une arraylist ou même un tableau
arraylist
ArrayList<int> listOpp;
listOpp= new ArrayList<int>;
listOpp.add(300);... // pour ajouter un élément au liste 
 listOpp.get(5);.. // il retourne la valeur à l'index 5 

pour le tableau ta besoin d'un seul d'une dimension quand tu veut ajouter tu ajoute a la fin du tableau "tab.legnth -1" pour le numéro des opération tu utiliser l'index
0
D'accord je vais essayer ça, merci beaucoup !
0
timidemimi Messages postés 5 Date d'inscription lundi 30 novembre 2009 Statut Membre Dernière intervention 3 décembre 2009
2 déc. 2009 à 19:52
Bonsoir,

J'ai tenté une ArrayList pour enregistrer mes opérations. Dans chaque élément de la liste je stocke donc un montant positif (crédit) ou négatif (débit) à l'indice Liste.get(i)
Seulement en appliquant tout ça je pense que j'ai mal manipulé les méthodes get() et size() et je me retrouve avec ces erreurs à la compilations :


auriane@auriane-ferrari:/media/NEN0HI NEW/IUT/ProgObj/Projet-partiel$ javac CompteBancaireReleve.java
CompteBancaireReleve.java:98: operator > cannot be applied to java.lang.Object,int
........if (operations.get(operations.size() - 5) > 0) {
..............................................................................^
CompteBancaireReleve.java:105: operator > cannot be applied to java.lang.Object,int
........if (operations.get(operations.size() - 4) > 0) {
..............................................................................^
CompteBancaireReleve.java:112: operator > cannot be applied to java.lang.Object,int
........if (operations.get(operations.size() - 3) > 0) {
..............................................................................^
CompteBancaireReleve.java:119: operator > cannot be applied to java.lang.Object,int
........if (operations.get(operations.size() - 2) > 0) {
..............................................................................^
CompteBancaireReleve.java:126: operator > cannot be applied to java.lang.Object,int
........if (operations.get(operations.size() - 1) > 0) {
..............................................................................^
Note: CompteBancaireReleve.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
5 errors


Peut-être pourras-tu me dire ce que cela signifie ... :S
Merci beaucoup.
0
nobie-cs Messages postés 155 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 15 mai 2010 17 > timidemimi Messages postés 5 Date d'inscription lundi 30 novembre 2009 Statut Membre Dernière intervention 3 décembre 2009
2 déc. 2009 à 23:21
pour affiche tout les élément du arrayList tu doit utiliser une boucle
for(int i=0;i<operations.size();i++){
System.out.println(operations.get(i));
}

en plus de sa ta fait une gros erreur operations.get(operations.size() - 1) > 0) c'est un bollean mais pas un int
0
timidemimi Messages postés 5 Date d'inscription lundi 30 novembre 2009 Statut Membre Dernière intervention 3 décembre 2009 > nobie-cs Messages postés 155 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 15 mai 2010
3 déc. 2009 à 19:29
En fait ArrayList.get() retourne un objet, et je n'avais pas précisé ce que j'allais mettre dans ma liste (en l'occurrence il fallait faire ArrayList<Integer> operations = new ArrayList<Integer>(); ).
Et j'ai effectivement utilisé une boucle pour afficher mes éléments, et du coup j'ai une sorte de bug je continue de chercher mais je ne vois pas le problème :

Code de ma méthode afficher() :

public void afficheReleve() {
........System.out.println("________________________________________________________________________________\n\n");
........System.out.println(" Ancien solde (initial) " + this.solde_initial + " Euros \n");
........System.out.println("________________________________________________________________________________\n\n");
........System.out.println(" LIBELLÉ DÉBIT CRÉDIT \n");
........System.out.println("________________________________________________________________________________\n\n");

........for(int i = 1; i <= this.operations.size() ; i++) {

................if (this.operations.get(i) > 0) {
........................System.out.println(" Opération " + + " +" + this.operations.get(i-1) + " Euros \n");
................}
................else {
........................System.out.println(" Opération " + i + " -" + this.operations.get(i-1) + " Euros \n");
................}
........}
}




Et en gros dans mon terminal j'obtiens ça :

________________________________________________________________________________


Ancien solde (initial)............................................1000.0 Euros

________________________________________________________________________________


LIBELLÉ.......................DÉBIT............................CRÉDIT

________________________________________________________________________________


Opération 2.......................................................+0.0 Euros

Opération 2.......................................................+0.0 Euros

Opération 3.......................................................+300.0 Euros

Opération 4.......................................................+0.0 Euros

Opération 5.................-50.0 Euros

________________________________________________________________________________


Nouveau solde..................................................850.0 Euros

________________________________________________________________________________



Alors que dans mon main() j'ai fait ceci :

CompteBancaireReleve2 c1 = new CompteBancaireReleve2(1000);
c1.debiter(100);
c1.debiter(200);
c1.crediter(300);
c1.debiter(100);
c1.debiter(50);

c1.afficheReleve();


Donc voilà tout ça c'est pas très logique car le code de mes méthodes crediter() et debiter() est juste (vérifié et re-vérifié), et je ne comprends pas comment en commençant ma boucle à i=0 je peux me retrouver avec en première ligne "Opération 2" alors que je dis d'afficher "Opération + (i+1)" .....
Aie aie aie j'espère trouver ça avant demain matin ^^
0
timidemimi Messages postés 5 Date d'inscription lundi 30 novembre 2009 Statut Membre Dernière intervention 3 décembre 2009 > nobie-cs Messages postés 155 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 15 mai 2010
3 déc. 2009 à 20:53
Bonsoir,
J'ai finalement pu compiler et tout marche parfaitement ! Erreur d'inattention dans ma classe TestCompte ... ^^
Merci beaucoup pour ton aide =)
Bye
0
nobie-cs Messages postés 155 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 15 mai 2010 17
3 déc. 2009 à 21:26
si ta pas autre chose à ajouter peut tu modifier le statut du poste stp :)
0
J'avais posté ce sujet en utilisateur anonyme, au départ je n'étais pas encore inscrite, alors je ne parviens pas à mettre le sujet en "résolu" =/
0