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 :

[POO]Question sur les constructeurs


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 122
    Par défaut [POO]Question sur les constructeurs
    Bonjour,

    j'essaye de comprendre les object et il y a truc qui est pas clair

    quel est la différence avec le construteur par défaut et le faite de se creer sont propre construteur.


    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
     
     
    class client {
    	int numeros;
    	String nom;
    }
     
     
    class test{
    	 public static void main(String arg[]) {
     
     
    	client n1=new client ();
    	n1.numeros=1;
     
    	Terminal.ecrireInt(n1.numeros);
    	}
    }

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 87
    Par défaut
    Bonjour

    Si ton constructeur ne prend aucun argument et ne fait rien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    class Client 
    {
       int numeros;
       String nom;
     
       Client ()
       {
     
       } 
     
    }
    Il n'y en a pas...
    Sinon


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    class Client 
    {
       int numeros;
       String nom;
     
       Client (String n)
       {
            nom = n;
       } 
     
    }
    forcement la il y en a... Je crois que c evident

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 122
    Par défaut
    mais est ce qu'on pourrais pas faire comme ça

    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
     
    class Client
    {
       int numeros;
       String nom;
     
     
    } 
     
     public static void main(String[] args) {
     
    client dupont = new client();
    dupont.numeros=1;
     
    }

  4. #4
    Membre chevronné Avatar de gronono
    Inscrit en
    Novembre 2003
    Messages
    457
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2003
    Messages : 457
    Par défaut
    Si une classe n'a pas de constructeur déclarée, alors elle en a un implicite qui est sans arguments.
    Donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public class MaClasse {
      String attribut1;
      // Pas de constructeur
    }
    est équivalent à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class MaClasse {
      String attribut1;
     
      public MaClasse() {
        // Vide
      }
    }
    Mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class MaClasse1 {
      String attribut1;
     
      public MaClasse1(String arg) {
        // Du code
      }
    }
    n'est pas équivalent à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public class MaClasse2 {
      String attribut1;
     
      public MaClasse2() {
        // Vide
      }
     
      public MaClasse2(String arg) {
        // Du code
      }
    }
    Le premier cas (MaClasse1) n'a pas de constructeur sans argument. Donc pour créer un objet MaClasse1, il faut absolument un paramètre.
    Par contre on pourrat creer un objet MaClasse2 sans spécifié d'argument.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 122
    Par défaut
    en faite ce que j'arrive pas comprendre, si dans ma class je ne détermine pas de construteur, java va en utilisé un par defaut.

    mais comment vas t -il intepreter cette object.

    si je comprend bien le constructeur va bien contenir la manière de acceder a cette object.
    donc sans construteur défini, je pourrais quand même acceder client.nom, et client.numéros.

  6. #6
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 817
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 817
    Par défaut
    Citation Envoyé par Burinho
    si je comprend bien le constructeur va bien contenir la manière de acceder a cette object.
    donc sans construteur défini, je pourrais quand même acceder client.nom, et client.numéros.
    oui.
    Dans ton cas à toi, ça revient au même.
    C'est ce que t'a répondu vincedom dès le début...
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  7. #7
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Accessoirement essaies d'éviter d'accéder aux attributs de tes classes, déclare ceux cis en private et utilise des accesseurs.
    Pour plus d'infos renseigne toi sur la notion d'encapsulation qui est une des bases de la programmation orientée objet

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 122
    Par défaut
    je viens d'essayer un construteur mais je comprend pas il me donne une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Exception in thread "main" java.lang.NoSuchMethodError: main
    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
    22
    23
     
     
    class client {
    	int numeros;
    	String nom;
     
    client(){
     
    	this.numeros=1;
    	this.nom="Dupont";
    	}
     
    }
     
    class test{
    	 public static void main(String[] args) {
     
     
    	client Dupont=new client ();
     
    	Terminal.ecrireInt(Dupont.numeros);
    	}
    }
    [/code]

  9. #9
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    a priori ton classpath est mal configuré

    essaye de lancer en faisant java -cp . nom de ta classe (no'blie pas le . apres le -cp)


    Sinon je réitère le fait que tu ne dois normalement déclarer les variables de ta classe en private et utiliser des méthodes pour accéder à ceux cis

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 122
    Par défaut
    c'est etonnant

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    -cp requires class path specification
    Usage: java [-options] class [args...]
               (to execute a class)
       or  java [-options] -jar jarfile [args...]
               (to execute a jar file)
     
    where options include:
        -server       to select the "server" VM
                      The default VM is server.
     
        -cp <class search path of directories and zip/jar files>
        -classpath <class search path of directories and zip/jar files>
                      A : separated list of directories, JAR archives,
                      and ZIP archives to search for class files.
        -D<name>=<value>
                      set a system property
        -verbose[:class|gc|jni]
                      enable verbose output
        -version      print product version and exit
        -version:<value>
                      require the specified version to run
        -showversion  print product version and continue
        -jre-restrict-search | -jre-no-restrict-search
                      include/exclude user private JREs in the version search
        -? -help      print this help message
        -X            print help on non-standard options
        -ea[:<packagename>...|:<classname>]
        -enableassertions[:<packagename>...|:<classname>]
                      enable assertions
        -da[:<packagename>...|:<classname>]
        -disableassertions[:<packagename>...|:<classname>]
                      disable assertions
        -esa | -enablesystemassertions
                      enable system assertions
        -dsa | -disablesystemassertions
                      disable system assertions

  11. #11
    Membre émérite Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Par défaut
    Ta classe et ton fichier .java doivent commencer par une majuscule

  12. #12
    Membre éprouvé Avatar de Satch
    Homme Profil pro
    Hypnothérapeute - Magicien
    Inscrit en
    Mars 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Suisse

    Informations professionnelles :
    Activité : Hypnothérapeute - Magicien

    Informations forums :
    Inscription : Mars 2004
    Messages : 498
    Par défaut
    Citation Envoyé par Pollux
    Ta classe et ton fichier .java doivent commencer par une majuscule
    meuh non ils ne doivent pas. C'est juste une convention mais ce n'est pas obligatoire.

  13. #13
    Membre émérite Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Par défaut
    son constructeur est confondu en méthode


    EDIT:
    sorry... j'ai lu vraiment trop vite....

    Le code que t'as fourni fait bien parti de deux fichiers différents?

  14. #14
    Membre éprouvé Avatar de Satch
    Homme Profil pro
    Hypnothérapeute - Magicien
    Inscrit en
    Mars 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Suisse

    Informations professionnelles :
    Activité : Hypnothérapeute - Magicien

    Informations forums :
    Inscription : Mars 2004
    Messages : 498
    Par défaut
    Citation Envoyé par Pollux
    son constructeur est confondu en méthode
    huh ???
    pas besoin de majuscule pour faire la différence entre constructeur et méthode...
    Un constructeur n'a pas de type de retour. ça suffit.

    Mais bon, on s'égare là. ;)

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 29
    Par défaut
    Salut,

    Pour ce qui est des constructeurs, tu as tout ce qu'il te faut dans les tutoriels du site comme et plus généralement relit tout le chapitre sur la POO java. C'est très bien expliqué.

    Pour ton problème de compilation, dis nous déjà quel est ton environnement, (console, eclipse...?). Apparemment ce serait la console, donc reporte toi aux cours & tuto pour compiler proprement ! ici

    De plus, je suis d'accord avec sinok, on ecrit MyClasse, myMethode, monChamp, MA_CONSTANTE, et monpackage. Ce n'est qu'une convention, mais ca facilite tres nettement la compréhension dans des cas comme celui-ci. C'est ce qu'il s'appelle programmer proprement .

    Reviens completer ta question si ca marche pas apres t'être documenté...

    @++

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 122
    Par défaut
    je viens de trouver le probleme mais je comprend pas bien pourquoi.

    j'avais le message en travaillant sur un répertoir qui est sur mon bureau, j'ai donc copier le répertoire dans mon /home et là ça marche.

    mais je pige pas pourquoi

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 122
    Par défaut
    manque de pot ça marche toujours pas je crois que c'est une histoire de path a mettre a jour

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

Discussions similaires

  1. php POO question sur les class et requetes SQL
    Par craz00 dans le forum Langage
    Réponses: 3
    Dernier message: 28/02/2014, 00h25
  2. [POO] Question sur les constructeurs
    Par Paulo62 dans le forum Général Python
    Réponses: 3
    Dernier message: 14/08/2009, 17h00
  3. [POO] Question sur les fonctions
    Par Carb0 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 26/11/2008, 15h18
  4. Question sur les constructeurs
    Par TocTocKiéLà? dans le forum C++
    Réponses: 2
    Dernier message: 27/06/2007, 17h52
  5. [POO] question sur les interfaces
    Par root76 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 20/05/2006, 17h12

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