Kurzusok
/
Java
Java
/
Feladatok
/
Varázslók és harcosok 2
Varázslók és harcosok 2

Varázslók és harcosok 2

Tanulófeladat

Bevezetés

Metódus-túlterhelés

A Java nyelvben a metódus-túlterhelés egy olyan lehetőség, amelynek segítségével egy osztálynak több azonos nevű metódusa is lehet, ha a paraméterlistáik eltérnek. A fordítási idejű (vagy statikus) polimorfizmushoz kapcsolódik. Ez a fogalom kulcsfontosságú ahhoz, hogy hasonló feladatokat ellátó, de eltérő bemenetű metódusokat hozzunk létre.

Miért érdemes túlterhelni a metódusokat?

A metódus-túlterhelés növeli a program olvashatóságát. Különböző metódusoknak lehet ugyanaz a nevük, de eltérő paramétereik vannak. A paraméterek számától vagy típusától függően a megfelelő metódus hívódik meg.

Hogyan terheljük túl a metódusokat?

A metódus-túlterhelés kulcsa a metódus szignatúrája. Két metódus akkor számít különbözőnek, ha eltér a szignatúrájuk. Kétféleképpen terhelhetünk túl egy metódust:

  1. Eltérő paraméterszám: A metódusoknak lehet ugyanaz a nevük, de eltérő lehet a paraméterszámuk.

    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. Eltérő paramétertípusok: A metódusoknak lehet ugyanaz a nevük és ugyanannyi paraméterük, de eltérő típusúak.

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

Fontos tudnivalók

  • A túlterhelt metódusoknak meg kell változtatniuk az argumentumlistát.
  • A túlterhelt metódusok a visszatérési típust is megváltoztathatják, de pusztán a visszatérési típus megváltoztatása önmagában még nem metódus-túlterhelés.
  • A metódusok ugyanabban az osztályban vagy egy alosztályban is túlterhelhetők.

E fogalom során a metódus-túlterhelés különféle példáit és árnyalatait járjuk körbe Java nyelven.

Utasítások

Ebben a feladatban egy „Wizard and Warriors” nevű szerepjátékot játszol a legjobb barátaiddal. Te vagy a játékmester, az, akinek az a dolga, hogy életre keltse a játék világát a játékosok számára. Ennek kulcsfontosságú része, hogy leírd a játékot a játékosoknak: mi egy karakter állapota, hogy néz ki a város, amit éppen meglátogatnak, és így tovább.

Öt részfeladat vár rád, amelyekben a játék egyes részeit írod le a játékosoknak.

1. Írj le egy karaktert

Minden karakternek van osztálya, szintje és életerőpontja, a leírása pedig így néz ki: "You're a level <LEVEL> <CLASS> with <HIT_POINTS> hit points.". Valósítsd meg a GameMaster.describe metódust, amely egyetlen paraméterként egy Character objektumot kap, és visszaadja annak leírását.

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. Írj le egy célállomást

Minden célállomásnak van neve és lakosságszáma, a leírása pedig így néz ki: "You've arrived at <NAME>, which has <INHABITANTS> inhabitants.". Valósítsd meg a GameMaster.describe metódust, amely egyetlen paraméterként egy Destination objektumot kap, és visszaadja annak leírását.

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

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

3. Írj le egy utazási módot

A karakterek kétféle módon utazhatnak egy célállomásra:

  • Gyalog, leírása: "You're traveling to your destination by walking."
  • Lovon, leírása: "You're traveling to your destination on horseback."

Valósítsd meg a GameMaster.describe metódust, amely egyetlen paraméterként egy TravelMethod értéket kap, és visszaadja annak leírását.

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

4. Írj le egy karaktert, aki egy célállomásra utazik

Amikor egy karakter egy célállomásra utazik, azt az egyes leírások kombinációjaként írjuk le: "<CHARACTER> <TRAVEL_METHOD> <DESTINATION>". Valósítsd meg a GameMaster.describe metódust, amely paraméterként egy Character, egy Destination és egy TravelMethod értéket kap, és visszaadja annak leírását.

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. Írj le egy karaktert, aki egy célállomásra utazik, az utazási mód megadása nélkül

A legtöbb esetben a karakterek gyalog utaznak egy célállomásra. A kényelem kedvéért a játékosok elhagyhatják az utazási mód megemlítését, ilyenkor az utazási mód alapértelmezés szerint a gyaloglás lesz. Valósítsd meg a GameMaster.describe metódust, amely paraméterként egy Character és egy Destination objektumot kap, és visszaadja annak leírását.

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."
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Java Exercism

Készen állsz elkezdeni a(z) Varázslók és harcosok 2 feladatot?

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Java nyelvet 26 fogalom158 feladat segítségével, valódi emberi mentorálással, mindez ingyen.