Appel de méthode: à l'aide!

Fermé
mockmock - 17 déc. 2003 à 20:17
 mockmock - 18 déc. 2003 à 12:16
Bonjour à tous!

J'ai absolument besoin d'aide. Je dois avoir fini un code pour ce vendredi et j'ai quelques problèmes. Je suis un novice en java. Voici le code:

// programme 1 nommé : Personne.java 
public class Personne { 

// Age de cette personne 

private int age; 

// Nom de cette personne 

private String nom ; 

// Prénom de cette personne 

private String prenom ; 

public Personne(String nom,String prenom,int age){ 
this.nom=nom; 
this.prenom=prenom; 
this.age=age; 
} 

public String getnom(){ 
return nom; 
} 

public String getprenom(){ 
return prenom; 
} 

public int getage(){ 
return age; 
} 
public String toStringp(){ 
return "Cette personne de Nom complet "+prenom+" "+nom+" Et de Age: "+age+" ans"; 
} 
} 

// programme 2 nommé : Compte.java 

public class Compte{ 

// Numéro du compte bancaire 
private final int num; 
private static int numeroCompte=1; 

// Solde du compte bancaire 

private double solde ; 

// Client propriétaire de ce compte bancaire 

private Personne personne ; 

public Compte(double salaireInitiale,Personne personne){ 
num=numeroCompte; 
solde=salaireInitiale; 
this.personne=personne; 
numeroCompte++; 
} 

// Déposer un montant sur le compte 


void depot (double montant) { 

solde = solde + montant ; 

} 

// Retirer un montant du compte 

void retrait (double montant) { 
if(solde>montant) 
solde = solde - montant ; 
else System.out.println("Votre solde est insufisant pour la montant q vous voulez retirez \n   L'operation ne peut etre effectué"); 

} 


// Tester si le compte est a découvert 


boolean estADecouvert () { 

return solde < 0 ; 

} 
public int getNumeroCompte(){ 
return num; 
} 
public double getSolde(){ 
return solde; 
} 
public Personne getPersonne(){ 
return personne; 
} 
public String toStringCompte(){ 
return personne.toStringp()+"\nSon Solde: "+getSolde()+"  Son Numero de Compte: "+getNumeroCompte(); 
} 

} 


// programme 3 nommé :  banque.java 
import java.util.Vector; 
public class Banque{ 

private Vector v = new Vector(); 
private Compte c; 




// La fonction qui cree les comptes 

boolean creerCompte(int solde, Personne personne){ 
     boolean b = true; 
     c = new Compte(solde,personne); 
    if(!(v.contains(c))) { 
    v.addElement(c); 
    return b; 
                         } 
    else {  b=false; 
            return b; 
         }                        

                                                 } 

//le fonction qui retourne le compte de de numero num    
Compte getCompte(int num){ 
int r=0; 
    for(int i=0;i<v.size();i++) { 
                     if(((Compte)v.elementAt(i)).getNumeroCompte()==num) 
                         r=i; 
                            } 
                        if(r!=0) 
        
                                 return (Compte) v.elementAt(r); 

                        else { 
                        System.out.println("\n-*** Ce Numero ne correspond a aucun Compte ***-\n"); 
                        return null; 
                        } 
                        } 
                                        
// la fonction qui supprime les comptes : 
                                                  
boolean supprimerCompte(int num){ 
    Compte o=getCompte(num); 
     return v.removeElement(o) ;      
                                
                                } 
              
                              
          
//retourne la liste de compte des personnes de nom nom  
Vector rechercheCompte(String nom) { 
Personne p; 
int i; 
Vector v1=new Vector(); 

for(i=0;i<v.size();i++){ 
p=((Compte)v.elementAt(i)).getPersonne(); 
if(p.getnom()==nom) 
v1.addElement((Compte)v.elementAt(i)); 

} 
return v1; 
} 

public static void main(String[] args){ 
Banque b=new Banque(); 
Personne p1=new Personne("Titi","Toto",20); 
Personne p2=new Personne("Tata","Tutu",22); 
Personne p3=new Personne("Bibi","Bobo",22); 
b.creerCompte(1000,p1); // creation du compte numero 1 
b.creerCompte(2000,p2); // creation du compte numero 2 
b.creerCompte(800,p3);  // creation du compte numero 3 
b.creerCompte(4000,p1); // creation du compte numero 4 
System.out.println(b.getCompte(2).toStringCompte());    // utiliser la fonction getCompte() et afficher les renseinements sur le compte 2 
b.supprimerCompte(2); // la suppression du compte 2 
System.out.println(b.getCompte(2).toStringCompte()); // tester encore getComte() apres suppression. 

} 

}


Mes questions:

1) Quelle commande faut-il exécuter dans la fonction MAIN de la classe Banque pour afficher tous les comptes appartenant à une certaine personne?

2) Comment écrire l'appel de la méthode "retrait" dans la fonction MAIN de la classe Banque pour effectuer un retrait sur un compte?

3) En écrivant:

System.out.println(b.getCompte(1).toStringCompte()); // utiliser la fonction getCompte() et afficher les renseinements sur le compte 1

Celui-ci me retourne "Ce numéro ne correspond à aucun compte" et me provoque une erreur "NullPointerException: null" dans la classe Banque. Cela marche cependant en mettant getCompte(2) ou getCompte(3), etc...

J'ai pourtant bien ce compte:

b.creerCompte(1000,p1); // création du compte numero 1 appartenant à Titi Toto


Merci d'avance pour votre aide!! Et d'avance, bonnes fêtes de fin d'année à tous!
Mockmock

1 réponse

choubaka Messages postés 39376 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 29 avril 2024 2 101
18 déc. 2003 à 08:37
Salut

j'ai lu ton code et perso, je pense qu'en revoyant un peu la logique des responsabilités, tu peux faciliter grandement ta recherche.

Une banque contient un à plusieurs clients (ArrayList)
Un client possède un ou plusieurs comptes. (ArrayList)

De cette manière tu peux facilement lister les comptes avec une methode de Personne du style.

public ArrayList getCompte ()




Chouba,
Tatatatala...  Chi Hua Hua!
0
Merci pour votre réponse!

Cependant, pouvez-vous m'écrire la ligne de code qu'il faudrait mettre pour faire un crédit ou un débit sur un compte? Avec la méthode "credit" ou "debit".

Et si vous avez le temps, l'appel de méthode pour afficher tous les comptes de <nom>.

Merci d'avance et meilleures salutations!
0