Skip to content

Instantly share code, notes, and snippets.

@konami12
Created August 14, 2020 07:24
Show Gist options
  • Save konami12/c7092d4456044fe9c7a1469cb1df3920 to your computer and use it in GitHub Desktop.
Save konami12/c7092d4456044fe9c7a1469cb1df3920 to your computer and use it in GitHub Desktop.
Opokemon yes
class Pokemon {
#name = "";
#type = "";
constructor(name, type) {
this.#name = name;
this.#type = type;
}
/**
* Permite conseguir el nombre del pokemon.
*
* @return {string}
*/
get name() {
return this.#name;
}
/**
* Permite conseguir el tipo de pokemon.
*
* @return {string}
*/
get type() {
return this.#type;
}
/*
Agregamos un nuevo método el cual nos permite
mostrar el ataque de nuestor pokemon y por podra
ser heredado a las clases hijas
*/
get attack() {}
}
/*
Creamos una clase que nos permita definir pokémons
de tipo fuego esta clase tiene que heredar de Pokémon
*/
class PokemonTypeFire extends Pokemon {
/*
En el contructor llammos al consturctor de la calse Pokémon
y por defecto indicamos que el tipo de pokémon es fuego.
*/
constructor(name) {
// con super se invoca al constructor de la clase Pokémon
super(name, "Fire");
}
/*
Para este caso sobrescribiremos el metodo attack de la
clase Pokemon para aplicar polimorfismo
*/
get attack() {
const { name, type } = this;
return `${name} ataca con, Aliento igneo`;
}
}
/*
Creamos dós clases mas para pokemons de tipo
Agua y Electricos, estas realizaran las mismas
acciones que la clase PokemonTypeFire.
*/
class PokemonTypeWater extends Pokemon {
constructor(name) {
super(name, "Water");
}
get attack() {
const { name, type } = this;
return `${name} ataca con, Chorro de agua`;
}
}
class PokemonTypeElectric extends Pokemon {
constructor(name) {
super(name, "Electric");
}
get attack() {
const { name, type } = this;
return `${name} ataca con, Chorro de agua`;
}
}
/*
Utilizamos la misma clase atack pero realizaremos
unos cambios.
*/
class Attack {
/*
Tenemos un método con el que al pasar
la lista de los pokémons que conforman
nuestro equipo realizaran sus ataques.
*/
allPokemonAttack(pokemons) {
let response = "";
for (let pokemon of pokemons) {
const { attack } = pokemon
console.log(attack);
}
}
}
// instancia de la clase Attack
const ATTACK_POKEMON = new Attack();
// Cargamoos el liistado de pokemoons.
ATTACK_POKEMON.allPokemonAttack([
new PokemonTypeFire("Charmander"),
new PokemonTypeWater("Squirtle"),
new PokemonTypeElectric("Pikachu"),
]);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment