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

Java Discussion :

Mettre en paramètre d'une fonction une interface, méthode etc.


Sujet :

Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2010
    Messages : 434
    Points : 94
    Points
    94
    Par défaut Mettre en paramètre d'une fonction une interface, méthode etc.
    Bonjour à tous,

    Je vous expose mon problème.

    J'ai une méthode de ce style là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    méthode1(String nomOutil, String versionOutil, File OutputFile)
    Suivant le projet où j'appelle cette méthode les paramètres vont naturellement changer. Mais voilà au lieu de rentrer "en dur" le nom de l'outil ainsi que sa version j'aimerais entrer en paramètre une sorte d'interface qui ,suivant où on est, retourne le nom de l'outil et sa version automatiquement.

    Je ne sais pas trop si j'ai été assez clair mais je peux donner des compléments de précisions si nécessaire.

    Merci beaucoup de votre aide

  2. #2
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2008
    Messages
    1 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 190
    Points : 2 657
    Points
    2 657
    Par défaut
    Je suis pas sur d'avoir compris.

    L'objet appelant ne peut-il pas implémenter une interface, étendre une classe qui retourne alors les valeurs demandées?

  3. #3
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    Citation Envoyé par Leniouns Voir le message
    Je ne sais pas trop si j'ai été assez clair mais je peux donner des compléments de précisions si nécessaire.
    Non, tu n'as pas été très clair. Peux tu donner des exemples histoire que ça nous aide à visualiser.
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2010
    Messages : 434
    Points : 94
    Points
    94
    Par défaut
    Par exemple je voudrais appeller la méthode dans deux projets différents :

    méthode1(String retourneNom(), String retourneVersion(), File fichier)

    Suivant que je suis dans le projet 1 retourneNom et retourneVersion vont me renvoyés des des valeurs différentes que si je suis dans le projet 2.

    Faut il que je créé une interface que j'implémente ensuite dans les projets en question ?

    Où il y a t'il une autre manière de faire ?

    N'hésitez pas, si vous n'avez toujours pas compris, à me poser des questions.

    Merci encore de votre aide

  5. #5
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2008
    Messages
    1 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 190
    Points : 2 657
    Points
    2 657
    Par défaut
    Soit tu considères que c'est au projet lui meme de savoir répondre, et dans ce cas oui, tu les fais implémenter une même interface.

    Soit tu considères que c'est à un fichier de propriété par exemple de répondre, et dans ce cas tu stocke dans un fichier toutes les informations sur tous les projets.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2010
    Messages : 434
    Points : 94
    Points
    94
    Par défaut
    Merci de ton aide

    Le système de fichier de propriété m'intérèsse. Comment cela marche-t-il ?

    Merci encore

  7. #7
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2008
    Messages
    1 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 190
    Points : 2 657
    Points
    2 657
    Par défaut
    Tu mets en dur dans une classe (ou un fichier quelconque) les informations nécessaires.

    Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public class Infos
    {
     public static final String NAME_PROJECT1 = "Name";
    ...
    }
    Tu peux sinon les 'binder' suivant un paramètre comme une classe, un entier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public class Infos
    {
     public static String getNameProject(int identifiantProject)
    {
    swtich(identifiantProject){
    case 1 : return "Name";
    ....
    }
    }
    ...
    }

  8. #8
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    Citation Envoyé par deathness Voir le message
    Tu mets en dur dans une classe (ou un fichier quelconque) les informations nécessaires.

    Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public class Infos
    {
     public static final String NAME_PROJECT1 = "Name";
    ...
    }
    Tu peux sinon les 'binder' suivant un paramètre comme une classe, un entier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public class Infos
    {
     public static String getNameProject(int identifiantProject)
    {
    swtich(identifiantProject){
    case 1 : return "Name";
    ....
    }
    }
    ...
    }
    Ah bon c'est ce qu'il demandait..

    Citation Envoyé par Leniouns
    méthode1(String retourneNom(), String retourneVersion(), File fichier)
    Cette syntaxe n'est pas correcte.
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2010
    Messages : 434
    Points : 94
    Points
    94
    Par défaut
    Qu'appelles tu un fichier quelconque ?

    Et ensuite à tu un exemple d'appel à ma méthode suivant tes soultions, car je ne vois pas trop comment les utiliser par la suite ?

    Merci beaucoup dans tous les cas

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2010
    Messages : 434
    Points : 94
    Points
    94
    Par défaut
    Citation Envoyé par Robin56 Voir le message
    Ah bon c'est ce qu'il demandait..


    Cette syntaxe n'est pas correcte.
    Oui enfin c'est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public void methode1(String retourneNom(), String retourneVersion(), File fichier)

  11. #11
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    Citation Envoyé par Leniouns Voir le message
    Oui enfin c'est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public void methode1(String retourneNom(), String retourneVersion(), File fichier)
    Non ce n'est pas correcte cette notation, Eclipse devrait te signaler un souci de syntaxe. C'est plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public void methode1(String retourneNom, String retourneVersion, File fichier)
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2010
    Messages : 434
    Points : 94
    Points
    94
    Par défaut
    D'accord.

    A vrai dire je n'ai pas essayé, c'était juste pour donnée un exemple.

    Quel est pour toi la meilleur solution alors ? Sachant que suivant le projet ou je suis, le nom et la version diffèrent. Comment faire ?

    Merci de ton implication

  13. #13
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    Citation Envoyé par Leniouns Voir le message
    Quel est pour toi la meilleur solution alors ? Sachant que suivant le projet ou je suis, le nom et la version diffèrent. Comment faire ?
    Si ce post s'adresse à moi, sache que je n'ai pas du tout compris ce que tu souhaites. Je doute que deathness ait répondu à ton soucis (mais si je me trompe, tant mieux pour toi) mais comme je n'arrive pas à cerner ce que tu souhaites..
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2010
    Messages : 434
    Points : 94
    Points
    94
    Par défaut
    Je ne sais pas trop comment mieux expliquer mon problème.

    Actuellement j'ai une méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    methode1(String nomOutil, String versionOutil File fichier)
    Cette méthode je l'utilise/l'appel dans plusieurs projets comme suit :

    Dans le Projet 1

    methode1("Marteau","v1",file);

    Projet le projet 2

    methode1("Scie","v1.1",file);

    Moi ce que j'aimerais c'est que l'appel se fasse toujours de la même façon et que c'est suivant le projet où on se trouve que l'on sait si c'est marteau, scie etc.

    Je ne m'exprime pas super bien Mais je n'arrive pas à mieux expliquer. Je ne veux pas non plus que le nom de l'outil et sa version soit une variable que l'on initialise dans chaque projet. Il y a t-il une façon de faire avec une interface ?

  15. #15
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2008
    Messages
    1 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 190
    Points : 2 657
    Points
    2 657
    Par défaut
    1) Le projet que tu parles, c'est un projet Eclipse ou c'est une class Projet que tu as crée toi-même?

    2) Ou veux tu que les informations que tu demandes soient stockées? Sont-elles modifiables en cours de route ou fixé une fois pour toute?

    D'après ce que j'en comprends la meilleure solution c'est que chaque projet connaissent les informations le concernant non?

  16. #16
    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
    Vous pouvez créer une Interface (ou une classe Abstraite) pour stocker des "constantes" que vous modifiez d'un projet à l'autre, si vous êtes sûr de bien tout recompiler (parce que les constantes sont intégrées dans le bytecode).

    Cela dit, je vous conseille très fortement de passer par un fichier de configuration et un chargement initial. Plus flexible, et pas de compilation nécessaire => vous vous éviterez bien des tracas, et aurez un code à la fois plus flexible et plus robuste.

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2010
    Messages : 434
    Points : 94
    Points
    94
    Par défaut
    deathness => Oui il s'agit de projets eclipse. Les infos ne sont pas modifiables en cour de routes. Et oui tu as compris, chaque projet devraient connaitre les informations qui le concernent.

    Rei Ichido => Comment fonctionnent les fichiers de configuration ?

    Merci à tous pour votre aide

  18. #18
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    Citation Envoyé par Leniouns Voir le message
    Rei Ichido => Comment fonctionnent les fichiers de configuration ?
    Réfère toi à ce post par exemple : http://www.developpez.net/forums/d27...n/#post1710622

    Donc deathness, tu avais bien compris le besoin.

    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  19. #19
    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
    Très basiquement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public interface Constantes {
     
       final static String version = "v2.1";
    }
     
     
    public class MyClass {
     
       public void test(OtherClass otherClass) {
         otherClass.methode(Constantes.version);
       }
    }
    Par contre, il faut faire très attention aux compilations : si on compile MyClass, puis qu'on change Constantes avec "v2.2" et qu'on ne recompile que Constantes, la classe compilée MyClass.class aura dans son bytecode la vieille constante "en dur", soit "v2.1".

    EDIT : et évidemment, je re-plussoie fortement l'utilisation d'un fichier de configuration, comme dans l'exemple cité ci-dessus.

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    pour faire simple et avec ton besoin

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public interface ToolInfos{
        public String getToolName();
        public String getToolVersion();
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void méthodeX(ToolInfos infos, File outputFile){
       //....
       sortie.printf("Document généra par %s version %s", infos.getToolName(), infos.getToolVersion());
    }
    Maintenant, moi, je suis plutot partisan de ce modèle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public classToolInfos{
        public static String getToolName(){
            //récupérer cette info dans un fichier /META-INF/tool.properties
            // que chaque outil est prié de fournir
        }
        public static String getToolVersion(){
            //récupérer cette info dans un fichier /META-INF/tool.properties
            // que chaque outil est prié de fournir
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void méthodeX(File outputFile){
       //....
       sortie.printf("Document généra par %s version %s", ToolInfos.getToolName(), ToolInfos.getToolVersion());
    }

Discussions similaires

  1. appliquer une fonction à une fonction
    Par stracoma dans le forum C++
    Réponses: 6
    Dernier message: 20/03/2015, 16h35
  2. [C#] Paramètre par défaut dans une fonction
    Par RobinJulie dans le forum Windows Forms
    Réponses: 5
    Dernier message: 18/01/2012, 14h07
  3. Réponses: 1
    Dernier message: 15/12/2011, 20h12
  4. passer en paramettre d'une fonction une fonction
    Par RoM3Ro dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 23/06/2006, 15h54
  5. Réponses: 5
    Dernier message: 09/02/2005, 18h50

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