Partage
  • Partager sur Facebook
  • Partager sur Twitter

Accéder à une méthode dans le main

    14 juin 2020 à 18:55:25

    Bonjour/Bonsoir,

    Je suis débutant en Java, et j'aimerai approfondir le "pattern strategy" vu dans cette partie du cour ICI (tout en bas de la page), donc je me suis un peux entraîné de mon coté. En ajouter une classe abstraite, quelques interfaces, et des classe différente.

    J'ai voulu reproduire quelque chose de similaire tout en voulant y ajouter des méthodes... sauf que petit probléme....

    J'ai crée par exemple une classe soigneur qui ajoute 100pts au point de vie de la cible. Seulement je n'ai pas réussis à l'inclure dans mon objet dédié au healing le seul moyen que j'ai trouvé a été de faire une méthode static dans le main comme ceci:

     //nous sommes dans le main,
    // et on suppose que j'ai déjà crée un objet nommé "war".
    giveHeal(war);
    }
    public static void giveHeal(Robot x) {
    int healing = 100;
    x.setHealthP(x.getHealthP()+healing);
    System.out.println("Les point de vie de "+x.getType()+" sont désormé à "+x.getHealthP());
    }

    Bon c'est cool ca fonctionne mais il n'y a-t-il pas un autre moyen de le faire directement par la classe dédié pour ca ? Parce que j'aimerai par la suite enlever X de mana au healer quand cette action est faite, et aussi ajouter d'autre méthode pour d'autre classe et ainsi de suite. Seulement dès la premiére méthode je suis déjà un peux bloqué.

    Donc ma question est, est-ce qu'il est possible de faire ce genre de méthodes ailleurs que dans le main ainsi éviter au maximum de surcharger le main de 50 méthodes différentes par exemple. 

    Merci pour vos futurs réponses :)

    -
    Edité par Fang44 14 juin 2020 à 19:00:15

    • Partager sur Facebook
    • Partager sur Twitter
      16 juin 2020 à 21:47:59

      Salut,

      Je n'ai pas bien compris ton problème. Si ta méthode n'appartient à aucune classe, alors oui il est nécessaire qu'elle soit static pour qu'elle soit appeler dans le main( car cette fonction est statique). 

      • Partager sur Facebook
      • Partager sur Twitter
        23 juin 2020 à 22:08:22

        Si tu compte appeler une classe dans le main, alors tu doit utiliser une nouvelle instance de la classe soigneur dans le main.

        Je ne comprends pas bien tes intentions mais pour un design pattern strategy tu es censé donner à l'instance de "Robot" une instance de l'implementation de l'interface "Soigneur" (exemple:Potion).

        public static void main(String[] args) {
        
          Robot r = new Robot() ;
          r.setSoigneur(new Potion()) ;
          
          //eventuellement si tu connais les fonctions lambda :
          r.setSoigneur( r -> r.setHealth(r.getHealth() + 100) ) ;
        
        }
        /*------------------------------------------*/
        public class Potion implements Soigneur{
        
          @Override
          public void soigner(Robot r) {
            r.setHealth(r.getHealth() + 100) ;
          } 
        
        }

        • Partager sur Facebook
        • Partager sur Twitter
          24 juin 2020 à 9:41:06

          Melin Alexandre a écrit:

          Salut,

          Je n'ai pas bien compris ton problème. Si ta méthode n'appartient à aucune classe, alors oui il est nécessaire qu'elle soit static pour qu'elle soit appeler dans le main( car cette fonction est statique). 


          Comment une méthode peut appartenir à aucune classe en Java ?

          -
          Edité par Splintz 24 juin 2020 à 9:41:16

          • Partager sur Facebook
          • Partager sur Twitter
            24 juin 2020 à 17:09:33

            Splintz a écrit:

            Melin Alexandre a écrit:

            Salut,

            Je n'ai pas bien compris ton problème. Si ta méthode n'appartient à aucune classe, alors oui il est nécessaire qu'elle soit static pour qu'elle soit appeler dans le main( car cette fonction est statique). 


            Comment une méthode peut appartenir à aucune classe en Java ?

            -
            Edité par Splintz il y a environ 7 heures

            Je me suis mal exprimé, je sous entendais autre que la classe Main en effet^^.

            • Partager sur Facebook
            • Partager sur Twitter

            Accéder à une méthode dans le main

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown