Parcours
/
Java
Java
/
Exercices
/
Magiciens et guerriers 2
Magiciens et guerriers 2

Magiciens et guerriers 2

Exercice d'apprentissage

Introduction

Surcharge de méthodes

En Java, la surcharge de méthodes est une fonctionnalité qui permet à une classe de posséder plusieurs méthodes portant le même nom, à condition que leurs listes de paramètres soient différentes. Elle est liée au polymorphisme à la compilation (ou statique). Ce concept est essentiel pour créer des méthodes qui effectuent des tâches similaires, mais avec des entrées différentes.

Pourquoi surcharger des méthodes ?

La surcharge de méthodes améliore la lisibilité du programme. On peut donner le même nom à différentes méthodes, mais avec des paramètres différents. Selon le nombre de paramètres ou leur type, c'est la méthode correspondante qui est appelée.

Comment surcharger des méthodes ?

La clé de la surcharge de méthodes réside dans la signature d'une méthode. Deux méthodes sont considérées comme différentes si leurs signatures diffèrent. Il y a deux façons de surcharger une méthode :

  1. Un nombre différent de paramètres : les méthodes peuvent porter le même nom, mais avoir un nombre de paramètres différent.

    public class Display {
    
        public void show(int x) {
            System.out.println("Show with int: " + x);
        }
    
        public void show(int x, int y) {
            System.out.println("Show with two ints: " + x + ", " + y);
        }
    }
    
  2. Des types de paramètres différents : les méthodes peuvent porter le même nom et avoir le même nombre de paramètres, mais avec des types différents.

    public class Display {
    
        public void show(int x) {
            System.out.println("Show with int: " + x);
        }
    
        public void show(String s) {
            System.out.println("Show with String: " + s);
        }
    }
    

Points à retenir

  • Les méthodes surchargées doivent modifier la liste des arguments.
  • Les méthodes surchargées peuvent aussi modifier le type de retour, mais le simple fait de changer le type de retour ne constitue pas une surcharge de méthodes.
  • On peut surcharger des méthodes dans une même classe ou dans une sous-classe.

Dans ce concept, on va explorer différents exemples et nuances de la surcharge de méthodes en Java.

Instructions

Dans cet exercice, tu joues à un jeu de rôle nommé «\u00A0Wizard and Warriors\u00A0» avec tes meilleurs amis. Tu es le maître du jeu, la personne chargée de faire vivre le monde du jeu pour les joueurs. Un aspect essentiel de ce rôle consiste à décrire le jeu aux joueurs\u00A0: le statut d'un personnage, l'apparence de la ville qu'ils visitent, etc.

Cinq tâches t'attendent, qui te demandent de décrire certaines parties du jeu aux joueurs.

1. Décris un personnage

Chaque personnage a une classe, un niveau et un nombre de points de vie, et se décrit ainsi\u00A0: "You're a level <LEVEL> <CLASS> with <HIT_POINTS> hit points.". Implémente la méthode GameMaster.describe qui prend un Character comme unique paramètre et renvoie sa description.

Character character = new Character();
character.setCharacterClass("Wizard");
character.setLevel(4);
character.setHitPoints(28);

new GameMaster().describe(character);
// => "You're a level 4 Wizard with 28 hit points."

2. Décris une destination

Chaque destination a un nom et un nombre d'habitants, et se décrit ainsi\u00A0: "You've arrived at <NAME>, which has <INHABITANTS> inhabitants.". Implémente la méthode GameMaster.describe qui prend une Destination comme unique paramètre et renvoie sa description.

Destination destination = new Destination();
destination.setName("Muros");
destination.setInhabitants(732);

new GameMaster().describe(destination);
// => "You've arrived at Muros, which has 732 inhabitants."

3. Décris le mode de déplacement

Les personnages peuvent se rendre à une destination de deux manières\u00A0:

  • À pied, décrit comme\u00A0: "You're traveling to your destination by walking."
  • À cheval, décrit comme\u00A0: "You're traveling to your destination on horseback."

Implémente la méthode GameMaster.describe qui prend un TravelMethod comme unique paramètre et renvoie sa description.

new GameMaster().describe(TravelMethod.HORSEBACK);
// => "You're traveling to your destination on horseback."

4. Décris un personnage qui voyage vers une destination

Quand un personnage voyage vers une destination, on décrit cela comme une combinaison des descriptions individuelles\u00A0: "<CHARACTER> <TRAVEL_METHOD> <DESTINATION>". Implémente la méthode GameMaster.describe qui prend un Character, une Destination et un TravelMethod comme paramètres, et renvoie sa description.

Character character = new Character();
character.setCharacterClass("Wizard");
character.setLevel(4);
character.setHitPoints(28);

Destination destination = new Destination();
destination.setName("Muros");
destination.setInhabitants(732);

new GameMaster().describe(character, destination, TravelMethod.HORSEBACK);
// => "You're a level 4 Wizard with 28 hit points. You're traveling to your destination on horseback. You've arrived at Muros, which has 732 inhabitants."

5. Décris un personnage qui voyage vers une destination sans préciser le mode de déplacement

Dans la majorité des cas, les personnages se rendent à une destination à pied. Pour plus de simplicité, les joueurs peuvent omettre de préciser leur mode de déplacement, auquel cas la marche est considérée comme le mode de déplacement. Implémente la méthode GameMaster.describe qui prend un Character et une Destination comme paramètres, et renvoie sa description.

Character character = new Character();
character.setCharacterClass("Wizard");
character.setLevel(4);
character.setHitPoints(28);

Destination destination = new Destination();
destination.setName("Muros");
destination.setInhabitants(732);

new GameMaster().describe(character, destination);
// => "You're a level 4 Wizard with 28 hit points. You're traveling to your destination by walking. You've arrived at Muros, which has 732 inhabitants."
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
Java Exercism

Prêt à commencer Magiciens et guerriers 2 ?

Inscris-toi sur Exercism pour apprendre et maîtriser Java avec 26 concepts158 exercices, et un vrai mentorat humain, le tout gratuitement.