Track
/
Java
Java
/
Esercizi
/
Maghi e guerrieri 2
Maghi e guerrieri 2

Maghi e guerrieri 2

Esercizio di apprendimento

Introduzione

Sovraccarico dei metodi

In Java, il sovraccarico dei metodi è una funzionalità che consente a una classe di avere più di un metodo con lo stesso nome, se le loro liste di parametri sono diverse. È legato al polimorfismo a tempo di compilazione (o statico). Questo concetto è fondamentale per creare metodi che svolgono compiti simili ma con input diversi.

Perché sovraccaricare i metodi?

Il sovraccarico dei metodi aumenta la leggibilità del programma. A metodi diversi si può dare lo stesso nome, ma con parametri diversi. A seconda del numero o del tipo dei parametri, viene chiamato il metodo corrispondente.

Come sovraccaricare i metodi?

La chiave del sovraccarico dei metodi è la firma del metodo. Due metodi sono considerati diversi se hanno firme diverse. Ci sono due modi per sovraccaricare un metodo:

  1. Numero di parametri diverso: i metodi possono avere lo stesso nome ma un numero diverso di parametri.

    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. Tipi di parametri diversi: i metodi possono avere lo stesso nome e lo stesso numero di parametri, ma con tipi diversi.

    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);
        }
    }
    

Punti da ricordare

  • I metodi sovraccaricati devono cambiare la lista degli argomenti.
  • I metodi sovraccaricati possono anche cambiare il tipo restituito, ma cambiare solo il tipo restituito non costituisce un sovraccarico dei metodi.
  • I metodi si possono sovraccaricare nella stessa classe o in una sottoclasse.

In questo concetto, esploreremo vari esempi e sfumature del sovraccarico dei metodi in Java.

Istruzioni

In questo esercizio giochi a un gioco di ruolo chiamato «Wizard and Warriors» con i tuoi migliori amici. Sei il Game Master, la persona che ha il compito di far prendere vita al mondo di gioco per i giocatori. Un aspetto fondamentale è descrivere il gioco ai giocatori: qual è lo stato di un personaggio, che aspetto ha la città che stanno visitando, e così via.

Hai cinque compiti che ti chiedono di descrivere ai giocatori alcune parti del gioco.

1. Descrivi un personaggio

Ogni personaggio ha una classe, un livello ed un numero di punti ferita e viene descritto così: "You're a level <LEVEL> <CLASS> with <HIT_POINTS> hit points.". Implementa il metodo GameMaster.describe, che prende un Character come unico parametro e ne restituisce la descrizione.

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. Descrivi una destinazione

Ogni destinazione ha un nome ed un numero di abitanti e viene descritta così: "You've arrived at <NAME>, which has <INHABITANTS> inhabitants.". Implementa il metodo GameMaster.describe, che prende una Destination come unico parametro e ne restituisce la descrizione.

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

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

3. Descrivi il metodo di viaggio

I personaggi possono raggiungere una destinazione in uno dei due modi seguenti:

  • A piedi, descritto così: "You're traveling to your destination by walking."
  • A cavallo, descritto così: "You're traveling to your destination on horseback."

Implementa il metodo GameMaster.describe, che prende un TravelMethod come unico parametro e ne restituisce la descrizione.

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

4. Descrivi un personaggio che viaggia verso una destinazione

Quando un personaggio viaggia verso una destinazione, la descrizione è una combinazione delle singole descrizioni: "<CHARACTER> <TRAVEL_METHOD> <DESTINATION>". Implementa il metodo GameMaster.describe, che prende un Character, una Destination ed un TravelMethod come parametri e ne restituisce la descrizione.

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. Descrivi un personaggio che viaggia verso una destinazione senza specificare il metodo di viaggio

Nella maggior parte dei casi, i personaggi raggiungono una destinazione a piedi. Per comodità, i giocatori possono omettere il metodo di viaggio; in tal caso si dà per scontato che viaggino a piedi. Implementa il metodo GameMaster.describe, che prende un Character ed una Destination come parametri e ne restituisce la descrizione.

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."
Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Java Exercism

Vuoi iniziare Maghi e guerrieri 2?

Iscriviti a Exercism per imparare e padroneggiare Java con 26 concetti158 esercizi e il mentoring di persone reali, tutto gratis.