Skip to content

Instantly share code, notes, and snippets.

@konami12
Last active September 4, 2020 02:47
Show Gist options
  • Save konami12/70f148044841bdb039740e93c295fc85 to your computer and use it in GitHub Desktop.
Save konami12/70f148044841bdb039740e93c295fc85 to your computer and use it in GitHub Desktop.
sustitución se Livskov aplicado
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