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 :

Appel d'un constructeur à partir d'un autre


Sujet :

Langage Java

  1. #1
    Expert confirmé
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 4 062
    Points
    4 062
    Par défaut Appel d'un constructeur à partir d'un autre
    Salut!

    Dans une classe j'ai deux constructeurs:
    -un qui prend en parametre un tableau de type "double[][]" et le converti en "ArrayList".
    -un qui prend en parametre un nom de fichier et en extrait les données qu'il stocke dans un tableau de type "double[][]".

    Ce qu'il faudrait c'est que après avoir fait le tableau le 2ème constructeur fasse appel au 1er pour le convertir en "ArrayList", le 2ème ne faisant que "préparer le terrain".

    Mais:
    à la fin du 2ème constructeur donne l'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    The method LaClasse(double[][]) is undefined for the type LaClasse
    Est-il possible d'appeler un constructeur à partir d'un autre?
    Si oui quelle est la procédure à suivre?

    Merci de votre aide.
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2006
    Messages : 43
    Points : 48
    Points
    48
    Par défaut
    Pour appeler un constructeur apartir d un autre if faut utiliser le mot cle this. et par exemple tu devras faire this(double[][]).
    Mais si je ne me trompe pas, il faut que cet appel soit la premiere instruciton dun constructeur pour qu elle puiss entre utilisee.
    Pour quoi ne pas mettre le code qui effectue la transformation dans une methode qui effectue la transformation que tu appellerais depuis le constructeur directement au lieu de passer par des appel de differents constructeurs? Ca serait peut etre plus simple

  3. #3
    Membre habitué Avatar de Xavinou
    Inscrit en
    Mai 2005
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 135
    Points : 156
    Points
    156
    Par défaut
    Oui c'est possible avec le mot clé "this", par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    MaClasse(A a, B b) {
       this(a);
       ...
    }
    MaClasse(A a) {
       ...
    }

  4. #4
    Expert confirmé
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 4 062
    Points
    4 062
    Par défaut
    il faut que cet appel soit la premiere instruciton dun constructeur pour qu elle puiss entre utilisee.
    Je m'en suis aperçu à mes dépends.
    Pour quoi ne pas mettre le code qui effectue la transformation dans une methode qui effectue la transformation que tu appellerais depuis le constructeur directement au lieu de passer par des appel de differents constructeurs? Ca serait peut etre plus simple
    Sûrement mais je me demandais si je pouvais le faire sans réorganiser le code.
    De plus il faut bien 2 constructeurs distincts.
    J'avais pensé à "alléger" les constructeurs afin qu'il se contentent de faire appel aux méthodes qui effectueront l'initialisation effective des données.
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  5. #5
    Expert confirmé
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 4 062
    Points
    4 062
    Par défaut
    Pour l'instant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    /*Constructeur avec tableau*/
    LaClassse(double[][] tab){
    initArrayList(tab);
    }
    /*Constructeur avec fichier*/
    LaClasse(String filePath){
    ...
    initArrayList(tab);
    }
    void initArrayList(double[][] tab){
    ...
    }
    qui marche parfaitement.

    Sinon question subsidiaire:
    peut-on définir les méthodes d'une classe en dehors de celle ci comme en C++?
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2006
    Messages : 43
    Points : 48
    Points
    48
    Par défaut
    arghhhhhh vient pas dire ca ici ....

    en java tout ce qui compose une classe est code dans la classe.

    Tu peux faire des classes abstraites dont les methods abstraites seront obligatoirement implementees par les sous classes qui la derive, ou des interfaces qui declarent des methodes que les classes qui les implementent devront implementer mais sinon NON, il n est pas possible, en tout cas pas que je sache ...

  7. #7
    Membre éclairé
    Avatar de bbclone
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 537
    Points : 704
    Points
    704
    Par défaut
    > peut-on déclarer les méthodes d'une classe en dehors de celle ci comme en C++?

    on peut faire ca en C++?
    je croyais que la declaration de toute les methodes d'une classe etait obliger d'etre dans le .h ou .hpp
    et l'implementation d'un un fichier .C ou .CPP. (ou dans le .h/hpp mais souvent on divise)?

    ca a changer?
    on peut definir une methode d'une classe dans une autre classe?

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2006
    Messages : 43
    Points : 48
    Points
    48
    Par défaut
    je pense que pour lui les mettre dans le .h ou .hpp c etait les mettre en dehors de la classe

  9. #9
    Expert confirmé
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 4 062
    Points
    4 062
    Par défaut
    on peut faire ca en C++?
    ca a changer?
    A priori non c'est moi qui écrit des conneries.
    Je veux dire DEFINIR.
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  10. #10
    Membre éclairé
    Avatar de bbclone
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 537
    Points : 704
    Points
    704
    Par défaut
    merci pour ses precision :-)

  11. #11
    Expert confirmé
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 4 062
    Points
    4 062
    Par défaut
    Alors peut on les définir en dehors pour clarifier le code de la classe?
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2006
    Messages : 43
    Points : 48
    Points
    48
    Par défaut
    NON, en java le code d une classe est contenue dans la classe elle-meme. C est pas du C++
    Et d ailleurs je trouve ca mieux d ailleurs, mais c est une opinion perso...

  13. #13
    Expert confirmé
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 4 062
    Points
    4 062
    Par défaut
    Dommage, ça fait plus propre une classe réduite aux déclarations.
    Merci de vos réponses.
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2006
    Messages : 43
    Points : 48
    Points
    48
    Par défaut
    Ben je sais pas, une classe decoupee en plusieurs fichiers c est pas forcement genial...
    Mais tu peux avoir la possibilite de faire des interfaces qui declarent des methodes, puis des classes qui vont implementer ces interfaces...
    Masi bon perso je trouve que c es tmieux de bien avoir toutes ses methodes dans sa classe... mais comme le disent beaucoup, on ne progamme pas en Java comme on programme en C++ ...

  15. #15
    Membre éprouvé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 652
    Points : 1 151
    Points
    1 151
    Par défaut
    On appel ça une interface

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public interface MonInterface {
       public void maMethode();
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public class MaClasse implements MonInterface() {
       public void maMethode() {
          System.out.println("inside maMethode...");
       }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public static void main(String[] args) {
       MonInterface test = new MaClasse();
       test.maMethode();
    }
    Clic me...
    CV en ligne

    Il y a 10 types de personnes, celui qui connait le binaire, et l'autre...

    Pas de réponse en MP...Merci

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2006
    Messages : 43
    Points : 48
    Points
    48
    Par défaut
    quoi de mieux qu un exemple pour illustrer un concept! bravo alwin!

  17. #17
    Expert confirmé
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 4 062
    Points
    4 062
    Par défaut
    On appel ça une interface
    Ce que je veux dire c'est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class LaClasse{
    ...
    void f();
    ...
    };
    void Laclasse::f(){
    ...
    }
    Mais c'est vrai que en Java les classes public ont chacune leur fichier ce qui réduit l'intérêt de la chose.
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2006
    Messages : 43
    Points : 48
    Points
    48
    Par défaut
    J'avais bien compris, mais bon ca c'est du C++ (pouah !!!) et la c'est du java, et je rappelle qu'on ne programme pas en Java comme on programme en C++...
    Tout au meme endroit pour que ca soit plus dans l'esprit objet qu'en C++ (l'objet contient bien ses attributs et ses comportements et ceci meme physiquement) sans avoir la classe découplée de l'implémentation de ses comportements.

  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2006
    Messages : 43
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par seriousme
    Mais c'est vrai que en Java les classes public ont chacune leur fichier ce qui réduit l'intérêt de la chose.
    Y'a pas que les classes publiques, pour toutes les classes c'est pareil!

  20. #20
    Expert confirmé
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 4 062
    Points
    4 062
    Par défaut
    Y'a pas que les classes publiques, pour toutes les classes c'est pareil!
    Merci.
    C'est parce que Eclipse autorise une seule classe public par fichier mais autant de classe non public que l'on veut.
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Appel d'un constructeur à partir d'un autre constructeur
    Par moineauacoustic dans le forum Langage
    Réponses: 6
    Dernier message: 11/08/2014, 19h00
  2. Appel d'un projet à partir d'un autre
    Par kazhar dans le forum VB.NET
    Réponses: 2
    Dernier message: 26/02/2007, 10h16
  3. comment appeler une requete a partir d'une autre ?
    Par DjBeGi dans le forum Access
    Réponses: 2
    Dernier message: 01/06/2006, 14h39
  4. Pb d'appel d'objet a partir d'un autre objet
    Par sebastien2222 dans le forum Langage
    Réponses: 11
    Dernier message: 31/05/2006, 09h49

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