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

avec Java Discussion :

Incompréhension architecture d'un code source


Sujet :

avec Java

  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2007
    Messages : 643
    Points : 305
    Points
    305
    Par défaut Incompréhension architecture d'un code source
    Salut à tous,

    J’ai 2 lignes de codes qui me perturbe assez sur l'analyse d'un code source et cela me bloque pour la suite. Voici ces 2 lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    setQuery(query);
    doQuery();
    C’est 2 lignes sont écrites dans une méthode d'une classe USER qui hérite d'une classe SqlBean qui elle possède bien l’implémentation de cette méthode et est de type abstract.
    MAIS
    L’implémentation de cette méthode n’est pas static, ni la classe. Une seule classe hérite de SqlBean mais ne contient aucun constructeur.
    ALORS
    Pourquoi ces lignes sont-elles valides alors qu’on ne se sert d’aucun objet pour lancer les méthodes ?


    De plus l’implémentation de la méthode setQuery() est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public void setQuery(String _query)
      {
        if (this.res != null)
          this.res = null;
        super.setQuery(_query);
        this.query = _query;
      }
    La classe SqlBean extends PoolManBean mais je ne retrouve nulle part cette classe dans le dossier de l'application. Ainsi je ne vois pas ce que fait la ligne super.setQuery(_query) puisqu’il n’y a pas la super classe PoolManBean ?

    Bref, à n'y rien comprendre....

    Voilà le problème est très subjectif mais si vous avez quelques indications à me fournir pour mieux comprendre le code je suis à votre écoute.

    En tout les cas merci,


    Miltone

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par miltone Voir le message
    Pourquoi ces lignes sont-elles valides alors qu’on ne se sert d’aucun objet pour lancer les méthodes ?
    On se sert de l'objet courant. Le this est implicite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    this.setQuery(query);
    this.doQuery();
    Citation Envoyé par miltone Voir le message
    La classe SqlBean extends PoolManBean mais je ne retrouve nulle part cette classe dans le dossier de l'application.
    La classe parente ne doit pas forcément être dans le même dossier.
    Si tu jettes un coup d'oeil aux imports tu devrais trouver cette classe...


    a++

  3. #3
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Citation Envoyé par miltone Voir le message
    Salut à tous,

    J’ai 2 lignes de codes qui me perturbe assez sur l'analyse d'un code source et cela me bloque pour la suite. Voici ces 2 lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    setQuery(query);
    doQuery();
    C’est 2 lignes sont écrites dans une méthode d'une classe USER qui hérite d'une classe SqlBean qui elle possède bien l’implémentation de cette méthode et est de type abstract.
    MAIS
    L’implémentation de cette méthode n’est pas static, ni la classe. Une seule classe hérite de SqlBean mais ne contient aucun constructeur.
    ALORS
    Pourquoi ces lignes sont-elles valides alors qu’on ne se sert d’aucun objet pour lancer les méthodes ?
    - Sur le constructeur, si tu as un héritage, il y a forcément un constructeur visible. N'oublie pas que si aucun constructeur n'est défini dans la classe, il y a le constructeur par défaut.
    - L'objet qui lance la méthode, c'est l'objet dans lequel tu es ! C'est la base du polymorphisme : si je définis une méthode dans une classe mère, elle sera appliquée dans la classe fille à moins de l'avoir redéfinie (override ; et encore, dans ce cas là on peut quand même faire référence à la méthode d'origine avec "super").

    De plus l’implémentation de la méthode setQuery() est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public void setQuery(String _query)
      {
        if (this.res != null)
          this.res = null;
        super.setQuery(_query);
        this.query = _query;
      }
    La classe SqlBean extends PoolManBean mais je ne retrouve nulle part cette classe dans le dossier de l'application. Ainsi je ne vois pas ce que fait la ligne super.setQuery(_query) puisqu’il n’y a pas la super classe PoolManBean ?
    Tu as certainement un jar inclus (ou en tout cas, ton appli est conçue pour avoir le jar à disposition). JarFinder me sors poolman-2.0.4.jar [le n° n'étant pas forcément le bon, of course ^^]

  4. #4
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2007
    Messages : 643
    Points : 305
    Points
    305
    Par défaut
    On se sert de l'objet courant. Le this est implicite.
    Effectivement fallait le savoir. Merci.
    La classe parente ne doit pas forcément être dans le même dossier.
    Si tu jettes un coup d'oeil aux imports tu devrais trouver cette classe...
    Cette classe contenu dans un jar à l'exterieur de l'appli existe bien. J'ai pu la trouver. Merci.

    - L'objet qui lance la méthode, c'est l'objet dans lequel tu es ! C'est la base du polymorphisme : si je définis une méthode dans une classe mère, elle sera appliquée dans la classe fille à moins de l'avoir redéfinie (override ; et encore, dans ce cas là on peut quand même faire référence à la méthode d'origine avec "super").
    Tu me fait plutôt une explication de l'héritage que tu polymorphisme là
    Mais merci effectivement il y a bien un objet qui à la base appel la méthode qui contient ces appels sans objet devant.

    Tu as certainement un jar inclus (ou en tout cas, ton appli est conçue pour avoir le jar à disposition). JarFinder me sors poolman-2.0.4.jar [le n° n'étant pas forcément le bon, of course ^^]
    C'est effectivement la library poolman qui est utilisé dans le code. Une horreur. Juste pour une requête SQL il faut compter une dizaine de classe qui s'appellent et se rappellent entre elles.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 31/08/2009, 13h29
  2. Contribuez à la FAQ et aux CODES SOURCE XML
    Par Community Management dans le forum XML/XSL et SOAP
    Réponses: 12
    Dernier message: 21/04/2008, 20h52
  3. Je cherche le code-source d'un interface de Windows
    Par Robert A. dans le forum Windows
    Réponses: 5
    Dernier message: 02/06/2003, 09h45
  4. [VB6] Code source pour modifier MsgBox
    Par khany dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 25/02/2003, 15h13

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