Last active
September 4, 2020 02:47
-
-
Save konami12/70f148044841bdb039740e93c295fc85 to your computer and use it in GitHub Desktop.
sustitución se Livskov aplicado
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; | |
} | |
get name() { | |
return this.#name; | |
} | |
get type() { | |
return this.#type; | |
} | |
// quitamos el método canFly | |
} | |
/* | |
Generamos una clase PokemonFly la cual | |
contara con el método cnFly que tenia la | |
clase Pokemon | |
*/ | |
class PokemonFly extends Pokemon { | |
// Creamos el metodo principal | |
constructor(name, type) { | |
// Invocamos al constructor de la clase pokémon | |
super(name, type); | |
} | |
/* | |
Agregamos un metodo el cual define la habiliad | |
de volar. | |
*/ | |
get canFly() { | |
return "Puedo volar"; | |
} | |
} | |
/* | |
Creamos una clase Charmander la cual hereda de | |
la clase Pokemon y en esta ocacion no es necesario | |
mandar una exepción ya que no tiene el método canFly | |
*/ | |
class Charmander extends Pokemon { | |
// Creamos el metodo principal | |
constructor() { | |
// Invocamos al constructor de la clase pokémon | |
super("Charmander", "Fire"); | |
} | |
} | |
/* | |
Creamos una clase Charizar la cual hereda de | |
la clase PkemonFly ya que charizar si utiliza | |
el método canFly | |
*/ | |
class Charizar extends PokemonFly { | |
// Creamos el metodo principal | |
constructor() { | |
// Invocamos al constructor de la clase pokémon | |
super("Charizar", "Fire"); | |
} | |
} | |
// Creamos la instancia de la clase Charizar | |
const CHARIZAR = new Charizar(); | |
/* | |
Como se comento con anterioridad charizar puede | |
utilizar todos los métodos de la clase Pokemon. | |
*/ | |
console.log(`Hola soy ${CHARIZAR.name}`); | |
console.log(`Soy de tipo ${CHARIZAR.type}`); | |
console.log(`Ademas ${CHARIZAR.canFly}`); | |
// Creamos la instancia de la clase Charmander | |
const CHARMANDER = new Charmander(); | |
/* | |
Como se comento con anterioridad charmander no puede | |
utilizar todos los métodos de la clase Pokemon. | |
*/ | |
console.log(`Hola soy ${CHARMANDER.name}`); | |
console.log(`Soy de tipo ${CHARMANDER.type}`); | |
console.log(`Ademas ${CHARMANDER.canFly}`); | |
// En esta caso la salida nos mostrara undedined | |
// ya que el método no exite en la clase Charmander | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment