Skip to content

Commit e6eb764

Browse files
authored
Merge pull request mouredev#4679 from oleojake/main
#9 / #10 - JavaScript
2 parents d801b06 + a0fc16b commit e6eb764

File tree

2 files changed

+159
-0
lines changed

2 files changed

+159
-0
lines changed
Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
import "./style.css";
2+
3+
/*
4+
* EJERCICIO:
5+
* Explora el concepto de herencia según tu lenguaje. Crea un ejemplo que
6+
* implemente una superclase Animal y un par de subclases Perro y Gato,
7+
* junto con una función que sirva para imprimir el sonido que emite cada Animal.
8+
*/
9+
10+
class Animal {
11+
constructor(sound) {
12+
this.sound = sound;
13+
}
14+
15+
makeSound() {
16+
console.log(this.sound);
17+
}
18+
}
19+
20+
class Perro extends Animal {
21+
constructor() {
22+
super("Guau");
23+
}
24+
}
25+
26+
class Gato extends Animal {
27+
constructor() {
28+
super("Miau");
29+
}
30+
}
31+
32+
const perro = new Perro();
33+
const gato = new Gato();
34+
perro.makeSound();
35+
gato.makeSound();
36+
37+
/*
38+
* DIFICULTAD EXTRA (opcional):
39+
* Implementa la jerarquía de una empresa de desarrollo formada por Empleados que
40+
* pueden ser Gerentes, Gerentes de Proyectos o Programadores.
41+
* Cada empleado tiene un identificador y un nombre.
42+
* Dependiendo de su labor, tienen propiedades y funciones exclusivas de su
43+
* actividad, y almacenan los empleados a su cargo.
44+
*/
45+
46+
class Empleado {
47+
constructor(id, nombre) {
48+
this.id = id;
49+
this.nombre = nombre;
50+
}
51+
}
52+
53+
class Gerente extends Empleado {
54+
constructor(id, nombre) {
55+
super(id, nombre);
56+
this.empleados = [];
57+
}
58+
59+
addEmpleado(empleado) {
60+
this.empleados.push(empleado);
61+
}
62+
}
63+
64+
class GerenteProyecto extends Gerente {
65+
projects = [];
66+
67+
constructor(id, nombre) {
68+
super(id, nombre);
69+
}
70+
71+
assignProject(project) {
72+
this.projects.push(project);
73+
}
74+
}
75+
76+
class Programador extends Empleado {
77+
constructor(id, nombre) {
78+
super(id, nombre);
79+
}
80+
81+
develop() {
82+
console.log("Desarrollando...");
83+
}
84+
}
85+
86+
const gerente = new Gerente(1, "Gerente");
87+
const gerenteProyecto = new GerenteProyecto(2, "Gerente de Proyecto");
88+
const programador = new Programador(3, "Programador");
89+
90+
gerente.addEmpleado(gerenteProyecto);
91+
console.log(gerente);
92+
93+
gerenteProyecto.assignProject("Proyecto 1");
94+
gerenteProyecto.addEmpleado(programador);
95+
console.log(gerenteProyecto);
96+
97+
programador.develop();
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
/*
2+
* EJERCICIO:
3+
* Explora el concepto de manejo de excepciones según tu lenguaje.
4+
* Fuerza un error en tu código, captura el error, imprime dicho error
5+
* y evita que el programa se detenga de manera inesperada.
6+
* Prueba a dividir "10/0" o acceder a un índice no existente
7+
* de un listado para intentar provocar un error.
8+
*/
9+
10+
try {
11+
console.log(myvar);
12+
} catch (error) {
13+
console.error(error);
14+
} finally {
15+
console.log("La ejecución ha finalizado.");
16+
}
17+
18+
/*
19+
* DIFICULTAD EXTRA (opcional):
20+
* Crea una función que sea capaz de procesar parámetros, pero que también
21+
* pueda lanzar 3 tipos diferentes de excepciones (una de ellas tiene que
22+
* corresponderse con un tipo de excepción creada por nosotros de manera
23+
* personalizada, y debe ser lanzada de manera manual) en caso de error.
24+
* - Captura todas las excepciones desde el lugar donde llamas a la función.
25+
* - Imprime el tipo de error.
26+
* - Imprime si no se ha producido ningún error.
27+
* - Imprime que la ejecución ha finalizado.
28+
*/
29+
30+
class CustomError extends Error {
31+
constructor(mensaje) {
32+
super(mensaje);
33+
this.name = this.constructor.name;
34+
}
35+
}
36+
37+
function proccessNumberParam(param) {
38+
try {
39+
if (typeof param !== 'number') {
40+
throw new TypeError("El parámetro no puede ser undefined");
41+
}
42+
43+
if (param < 0) {
44+
throw new RangeError("El parámetro no puede ser negativo");
45+
}
46+
47+
if (param % 2 !== 0) {
48+
throw new CustomError("El parámetro no es un número par");
49+
}
50+
51+
console.log("El parámetro es correcto y no se ha producido ningún error.");
52+
} catch (error) {
53+
console.error(error.constructor.name + ": " + error.message);
54+
} finally {
55+
console.log("La ejecución ha finalizado.");
56+
}
57+
}
58+
59+
proccessNumberParam(10);
60+
proccessNumberParam("10");
61+
proccessNumberParam(-10);
62+
proccessNumberParam(3);

0 commit comments

Comments
 (0)