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 :

méthode passée en paramètre


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 13
    Par défaut méthode passée en paramètre
    Bonjour,

    Je souhaiterai créer une classe "Integration" dans laquelle je code plusieurs méthodes de calcul d'intégrale (rectangle, trapèze, ...). En regardant sur le web, j'ai vu qu'il fallait créer une méthode (nommée par exemple "CalculerValeur") dans cette même classe retournant la valeur de l'expression à intégrer à un point donné. Ainsi, les paramètres des méthodes de calcul d'intégrales sont juste les bornes inf et sup de l'intégrale et le pas de discrétisation.

    Le problème est que, dans mon programme, la méthode "CalculerValeur" est réalisée dans une autre classe. Comment peut-on faire pour passer cette méthode en paramètre de la méthode d'intégration et avoir quelques chose du genre :

    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
    public classe Integration {
       public double Rectangle(Method maMethode, double borneInf, double bornesup, int n) {
          double h = (borneSup-borneInf)/n;
          double integrale = 0;
          for(int i=0; i<n-1; i++) {
             integrale += h*maMethode(borneInf+i*h);
          }
          return integrale;
       }
    }
     
    public classe toto {
       Integration integral = new Integration();
       public double CalculerValeur(double point) {
          return expression(point);
       }
       public void titi() {
          integral.Rectangle(CalculerValeur(),a,b,n);
       }
    }

    Merci par avance pour vos réponse.

  2. #2
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Salut,


    Tu ne peux pas passer directement une méthode.
    Tu dois définir une interface qui décrit la signature de la méthode, puis définir une classe anonyme qui implémentera la méthode.

    a++

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 13
    Par défaut
    Et comment je peux faire ça ?
    Pourrais-tu m'aider ?

    Merci

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    D'un côté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public interface ValueCalculator {
      double calculate(double point);
    }
    D'un autre côté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public class DefaultValueCalculator implements ValueCalculator {
      double calculate(double point) {
        return expression(point); // mettre la vraie implémentation.
      }
    }
    Et pour s'en servir :

    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
    public classe Integration {
       public double Rectangle(ValueCalculator calculator, double borneInf, double bornesup, int n) {
          double h = (borneSup-borneInf)/n;
          double integrale = 0;
          for(int i=0; i<n-1; i++) {
             integrale += h*calculator.calculate(borneInf+i*h);
          }
          return integrale;
       }
    }
     
    public classe Toto {
       Integration integral = new Integration();
       public void titi() {
          integral.Rectangle(new DefaultValueCalculator(),a,b,n);
       }
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 13
    Par défaut
    Merci bien pour ta réponse !!

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 13
    Par défaut
    Bonjour,

    Comment puis-je modifier le programme si j'ai plusieurs expressions sans avoir à créer autant de classe "DefaultValueCalculator" que j'ai d'expressions ?
    J'aimerai que toutes mes expressions soient dans la même classe DefaultValueCalculator mais je n'y arrive pas...

    Est ce que c'est possible ?

    Merci par avance pour vos réponses

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 06/01/2011, 16h28
  2. Problème de fstream passé en paramètre
    Par Beb8 dans le forum SL & STL
    Réponses: 2
    Dernier message: 11/04/2005, 11h51
  3. [SQL server 2000] bout de requete passé en paramètre
    Par guignol dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 10/08/2004, 17h45
  4. Réponses: 6
    Dernier message: 28/05/2004, 09h39
  5. Réponses: 5
    Dernier message: 27/11/2003, 10h55

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