Author's photo
Anonymný autor
JAVA programovanie

Polymorfizmus

Vedel by mi prosím niekto poradiť hru, ktorá aplikuje polymorfizmus? Potrebujem ju naprogramovať ako semestrálnu prácu. Za všetky nápady, prípade linky na inšpiráciu vopred ďakujem. :)

1 odpoveď
Myslim ze nejde konkretne o hru, ale o princip polymorfizmu, t.j. ze vstupne alebo vystupne objekty nejakej metody/funkcie nie su fixne viazane na konkretne typy.
Napr. funkcia (na pohyb hraca v 2d priestore na osiach x/y)

void MovePlayer(Player player, Direction direction, int Distance) {
switch(direction) {
case: Direction.Left: Player.x - Distance; break;
case: Direction.Right: Player.x + Distance; break;
case: Direction.Up: Player.y - Distance; break;
case: Direction.Down: Player.y + Distance; break;
}
}

nie je polymorficka, pretoze pracuje len s objektom typu Player, ale da sa zmenit na:

interface IMovableObject {
void MoveLeft(int Distance);
void MoveRight(int Distance);
void MoveUp(int Distance);
void MoveDown(int Distance);
}

class Player : IMovableObject;
class Enemy: IMovableObject;
class Projectile: IMovableObject;

void MovePlayer(IMovableObject object, Direction direction, int Distance) {
switch(direction) {
case: Direction.Left: object.MoveLeft(Distance); break;
case: Direction.Right: object.MoveRight(Distance); break;
case: Direction.Up: object.MoveUp(Distance); break;
case: Direction.Down: object.MoveDown(Distance); break;
}
}

Teraz sa funkcia da pouzit na akykolvek objekt, ktory implementuje interface IMovableObject - Player, Enemy alebo Projectile v priklade vyssie.
Komentáre:
Slavomír D.
Ospravedlnujem sa za iny programovaci jazyk. Neskor som si vsimol ze sa jedna o Javu. Semantika je ina ale princip zostava: interface interface IMovableObject { ... } class Player implements IMovableObject { ... } class Enemy implements IMovableObject { ... } class Projectile implements IMovableObject { ... }