Created
August 14, 2020 07:24
-
-
Save konami12/c7092d4456044fe9c7a1469cb1df3920 to your computer and use it in GitHub Desktop.
Opokemon yes
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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