IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Comment répéter plusieurs fois un constructeur?


Sujet :

Langage Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 146
    Par défaut Comment répéter plusieurs fois un constructeur?
    Bonsoir a tous

    j'ai remarqué que lorqu'on ne retournait pas de valeur a une methode, il n'est pas necessaire de défnire un type, comment ce fait t'il ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	public void calculTot() //si j'écrit void int claculTot() il y a erreur sur eclispe
    	{
    		total =  note_f + note_m + note_i
    		System.out.println("le total de  l'élève est"+ total);
    	}
    merci pour votre précision

  2. #2
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 746
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 746
    Par défaut
    J' ai l'impression que tu crois que le mot-clé "void" sert a déclarer une méthode, ce n'est pas le cas. En java il n'y a pas de tel mot clé une méthode se déclade ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    typeRetour nomDeLaMethode(){
      //corps de la méthode
    }
    "void" correspond au type vide que l'on utilise donc pour les méthode qui ne renvoient pas de valeur. Si tu veux que ta méthode retourne quelque-chose il faut remplacer void par le type de la variable à retourner.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 146
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public int calculTot() 
    	{
    		total =  note_f + note_m + note_i
    		System.out.println("le total de  l'élève est"+ total);
                     return total;
    	}
    merci de ta réponse comme ceci alors. Donc avec void comme on n'a pas besoin d'envoyer quelque chose on n'a pas besoin de connaître son type.

    j'aurai une autre question

    voici une class:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public Banque
    {
    String nom;
     
      public Banque() /*constructeur*/
      { 
        System.out.println("donner le nom du client");
        nom = Lire.S();
       }
    }
    voici une application qui utiliserai la classe Banque:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public Compte
    {
      public static void main(String[] arg)
      {
        int nombre = 3;
        for (i=0; i >nombre; i++)
        {
           Banque C[i] = new Banque();
        }
      }
    }
    j'aimerais qu'on me demande 3 fois le nom du client, apparament comme cela ne fonctionne pas.

    j'ai donc essayer cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public Compte
    {
      public static void main(String[] arg)
      {
        int nombre = 3;
        Banque []C = new [nombre]
      }
    }
    ici sans succès, on ne me demande pas 3 fois de nom, qu'est ce qu'il ne va pas ?
    c'est dans mon constructeur ??

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    D'abord, il y a un bug dans la boucle for: il devrait y avoir i<nombre au lieu de i>nombre

    Ensuite, que fait la méthode S de la classe Lire ?
    Et est-ce que le message "donner le nom du client" apparaît trois fois ?

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 483
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Banque[] banques;  // déclarer un tableau de Banque
    banques = new Banques[3];  // instancier un tableau de trois entrées
    for (int i=0;i<3;i++) // itérer trois fois, en évitant de mettre n'importe quoi comme critère de continuité ;)
       banques[i] = new Banque(); // on met un nouveau Banque à chaque index

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 146
    Par défaut
    merci de vos réponse Nudger et tchize
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    D'abord, il y a un bug dans la boucle for: il devrait y avoir i<nombre au lieu de i>nombre
    en effet c'est <

    merci tchize , je n'avais pas pensé de déclarer un tableau de banque.

    Quelle est la meilleur façon d'enregister tous les noms quelque par sous forme de tableau?
    dans la class Banque? ou tous simplement dans la classe qui l'utilise (Compte)?

    si c'est la classe banque doit-je déclarer le tableau dans le constructeur ou je dois le faire à travers un methode ? ou encore de le déclarer dans l'application compte?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    Class Banque
    {
      static private nom[]; /*on enregistre tous les noms dans ce tableau*/
      static private somme_total;
      static private nb_client;
     
      public Banque()
      {
        /*doit-je déclarer le tableau nom dans le constructeur*/
      }
      public String creertableau() 
      {
        /* doit-t'on crée un tableau de nom ici ? */
       }
       public int donnermoyenne()
       {
          moyenne = somme / nb_client
          return moyenne;
       }
    }
    mon but est de faire un petit programme qui lit tous les noms des client,la sommes d'argent qu'ils ont et de faire la moyenne

    pour simplifier voici ce que doit avoir en sortie (même si je n'ai pas encore écrit la partie de la reception des la somme des comptes, mon but est de trouver comment crée correctement mes classes)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    combien de client a saisir?
    2
    nom du client ?
    jean
    somme verser?
    10 euros
    nom du client?
    marcel
    somme verser?
    40 euros
    jean a verser 10 euros
    marcel a verser 40 euros
    la moyenne des sommes versé est de 25 euros

  7. #7
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 483
    Par défaut
    ta classe n'a pas le bon nom, manifestement, c'est une classe Client et non Banque, puisqu'elle a le nom du client et son solde.

    Un Banque est formé principalement d'une liste de Client, liste à laquelle tu ajoute au fur et a mesure les clients.

    A noter que c'est une mauvaise idée d'aller lire la console dans le constructeur. Lisez plutot les input de l'utilisateur dans une boucle de votre main et, au fur et à mesure, construisez des Client que vous ajoutez dans votre Banque.

    Pour les listes de taille variable, préférez la classe ArrayList

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 146
    Par défaut
    merci de ton aide, je vais partir alors d'une class Banque et d'une classe client pour le moment je m'occupe pas des compte

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Class Banque
    {
      private nom_client;
       /*ici dois-je laisser le constructeur par défaut.*/
      public ajouterClient()
      {
         nom_client = Lire.S();
      } 
    }
    maintenant je crée une class Client
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Class Client
    {
       private String nom_client;
       private String adresse;
     
       public Client()
       {
          nom = System.out.println("Donner le nom du client");
          adresse = System.out.println("Donner son adresse");
       }
     
    }
    et je crée une application qui utilise la classe Client:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    classe AjouterClient
    {
      public static void main(String[] arg)
      {
        Client[] nouveau; /*on déclare un tableau de Client*/
        /* on suppose qu'on souhaite 5 nouveau client*/
        nouveau= new Client[nb_client]; /*on instancie 5 entrée*/
        for (in i=0; i<5;i++)
        {
           nouveau[i] = new Client();
        }
     
      }
    }
    j'ai donc une class Banque qui va seulement collecter les nom des clients
    une class client dont on enregistre les noms adresses...
    une class Ajouter client qui va ajouer de client et qui correspond a l'application

    Ici mes 3 class sont t'elle cohérentes cette fois-ci avant de continuer?

  9. #9
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 483
    Par défaut
    La classe client devrait plutot ressembler à ça


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class Client{
       private String nom;
       private String adresse;
     
       public Client(String nom, String adresse){
           this.nom=nom;
           this.adresse=adresse;
       }
    }
    et s'utiliserais comme ca


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Client c = new Client(nom,adresse);

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 146
    Par défaut
    Donc pour enregister un client avec ta class je fait ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    System.out.println("Donner le nom du client");
    nom = lire.S();
    System.out.println("Donner son adresse");
    adresse = Lire.s();
    Client c = new Client(nom,adresse);
    Maintenant je veux sauvegarder juste le nom de ce client et le rajouter dans la classe Banque sous forme d'un tableau comment je fait?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    System.out.println("sauvegarde du nouveau client? O/N");
    choix = Lire.c();
    if (choix == O)
    {
    C.enregister(nom);
    }
    dans ce cas si j'ajoute ceci a la classe Client?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    public class Client{
       private String nom;
       private String adresse;
     
       public Client(String nom, String adresse){
           this.nom=nom;
           this.adresse=adresse;
       }
       public enregistrer(nom)
       {
         String Banque E = new String Banque(nom);
       }
     
    }
    la class banque que je pense faire en utilsant this
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Class Banque
    {
      private String[] nom;
      public banque(nom)
      {
         this.nom[] = nom;
         System.out.println(nom+"a bien été sauvegarder");
      }
    }

  11. #11
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 483
    Par défaut
    y a du melting pot la

    String Banque E = new String Banque(nom);

    cette notation ne veut strictement rien dire. Si tu veux avoir le nom du client tu fais, par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public String getNom(){
        return nom;
    }
    Ca veux dire quoi pour toi "enregistrer le nom du client dans la Banque" ??

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 146
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Ca veux dire quoi pour toi "enregistrer le nom du client dans la Banque" ??
    je voulais dire ranger le nom du nouveau client quelque pars?
    (je nai pas encore étudier la base de donnnée, donc je pensais déjà le mettre dans un tableau)

    pour String Banque j'ai fait une grosse erreur de mettre 2 type

  13. #13
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 483
    Par défaut
    ce n'est pas le nom du client que la banque doit stocker, mais le client, en toute logique.

    Quelque chose comme ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public class Banque(){
     
       private List<Client> clients = .....;
       //....
       public void addClient(Client client){
           clients.add(client);
       }
    }

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 146
    Par défaut
    que veut dire les chevrons
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       private List<Client> clients = .....;
    je n'ai encore jamais utiliser ?

  15. #15
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 483
    Par défaut
    Ce sont des Generics

    voir ici http://gfx.developpez.com/tutoriel/java/generics/
    En gros, ca donne une une Liste de Clients

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 146
    Par défaut
    merci du lien je vais étudier tous cela.

    j'ai une dernière question, je souaite utiliser java pour faire un programme de gestion de client par exemple.

    Existe-t'il une base de donnée qui est completement gratuite ?
    je parle dans le cas ou on souhaiterai vendre le programme et se servir de cette base ? ou du moment qu'on fait du commerce on paye des licences ?
    je pensais à postgresql

    si par exemple on a crée une calculatrice qui normalement
    est fait pour fonctionner en local, peut t-on modifier le code source afin de transmettre des données sur le web ou recevoir ? est t'il facile a mettre en oeuvre ou c'est impossible et qu'il faut utiliser java pour internet car tous se passera a traver le navguateur comme firefox?

    (en gros je crée un logiciel en local et quelques année plus tard je souhaite que ce logiciel puisse s'échanger des données avec internet)

    j'ai manupuler des site web avec la base de donnée et php et apparament utiliser mysql et phpmyadmin est gratuit mais pour ce qui est java je ne sais si c'est la même chose ?

  17. #17
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 483
    Par défaut
    pour la base de données, il existe des bases qu'on peux intégrer en java, comme H2Database, derby, etc.

    Pour le réseau, voir les classes socket.

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 146
    Par défaut
    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 10
    Dernier message: 01/09/2011, 16h34
  2. [CR 9] Comment imprimer plusieurs fois l'état ?
    Par CR9-Deb dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 24/07/2009, 14h40
  3. Répéter plusieurs fois un test
    Par phyfab dans le forum Général Python
    Réponses: 2
    Dernier message: 16/11/2008, 16h42
  4. Réponses: 5
    Dernier message: 24/08/2006, 16h00
  5. Réponses: 11
    Dernier message: 02/02/2005, 13h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo