Rutas
/
Java
Java
/
Ejercicios
/
Magos y guerreros 2
Magos y guerreros 2

Magos y guerreros 2

Ejercicio de aprendizaje

Introducción

Sobrecarga de métodos

En Java, la sobrecarga de métodos es una funcionalidad que permite que una clase tenga más de un método con el mismo nombre, si sus listas de parámetros son diferentes. Está relacionada con el polimorfismo en tiempo de compilación (o estático). Este concepto es crucial para crear métodos que realizan tareas similares, pero con entradas diferentes.

¿Por qué sobrecargar métodos?

La sobrecarga de métodos aumenta la legibilidad del programa. A métodos diferentes se les puede dar el mismo nombre, pero con parámetros distintos. Dependiendo del número de parámetros o del tipo de los parámetros, se llama al método correspondiente.

¿Cómo sobrecargar métodos?

La clave de la sobrecarga de métodos es la firma de un método. Dos métodos se considerarán diferentes si tienen firmas distintas. Hay dos formas de sobrecargar un método:

  1. Distinto número de parámetros: los métodos pueden tener el mismo nombre, pero un número de parámetros diferente.

    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. Distintos tipos de parámetros: los métodos pueden tener el mismo nombre y el mismo número de parámetros, pero con tipos diferentes.

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

Puntos a recordar

  • Los métodos sobrecargados deben cambiar la lista de argumentos.
  • Los métodos sobrecargados también pueden cambiar el tipo devuelto, pero cambiar únicamente el tipo devuelto no constituye una sobrecarga de métodos.
  • Los métodos se pueden sobrecargar en la misma clase o en una subclase.

En este concepto, exploraremos varios ejemplos y matices de la sobrecarga de métodos en Java.

Instrucciones

En este ejercicio juegas a un juego de rol llamado «Wizard and Warriors» con tus mejores amigos. Tú eres el Director de Juego, la persona encargada de hacer que el mundo del juego cobre vida para los jugadores. Un aspecto clave de esto es describir el juego a los jugadores: cuál es el estado de un personaje, cómo es el pueblo que están visitando, etc.

Tienes cinco tareas en las que describes partes del juego a los jugadores.

1. Describe un personaje

Cada personaje tiene una clase, un nivel y un número de puntos de vida, y se describe así: "You're a level <LEVEL> <CLASS> with <HIT_POINTS> hit points.". Implementa el método GameMaster.describe, que recibe un Character como único parámetro y devuelve su descripción.

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. Describe un destino

Cada destino tiene un nombre y un número de habitantes, y se describe así: "You've arrived at <NAME>, which has <INHABITANTS> inhabitants.". Implementa el método GameMaster.describe, que recibe un Destination como único parámetro y devuelve su descripción.

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

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

3. Describe el método de desplazamiento

Los personajes pueden viajar a un destino usando una de estas dos opciones:

  • A pie, descrito así: "You're traveling to your destination by walking."
  • A caballo, descrito así: "You're traveling to your destination on horseback."

Implementa el método GameMaster.describe, que recibe un TravelMethod como único parámetro y devuelve su descripción.

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

4. Describe a un personaje que viaja a un destino

Cuando un personaje viaja a un destino, esto se describe como una combinación de las descripciones individuales: "<CHARACTER> <TRAVEL_METHOD> <DESTINATION>". Implementa el método GameMaster.describe, que recibe un Character, un Destination y un TravelMethod como parámetros y devuelve su descripción.

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. Describe a un personaje que viaja a un destino sin especificar el método de desplazamiento

En la mayoría de los casos, los personajes viajan a un destino a pie. Por comodidad, se permite a los jugadores omitir su método de desplazamiento, en cuyo caso se dará por supuesto que viajan a pie. Implementa el método GameMaster.describe, que recibe un Character y un Destination como parámetros y devuelve su descripción.

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."
Editar en GitHub El enlace se abre en una ventana o pestaña nueva
Java Exercism

¿Listo para empezar Magos y guerreros 2?

Regístrate en Exercism para aprender y dominar Java con 26 conceptos158 ejercicios y mentoría humana real, todo gratis.