Skip to content

Commit 285cdc9

Browse files
committed
[09]-TypeScript
1 parent 746e31d commit 285cdc9

File tree

1 file changed

+151
-0
lines changed

1 file changed

+151
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
/*
2+
* EJERCICIO:
3+
* Explora el concepto de herencia según tu lenguaje. Crea un ejemplo que
4+
* implemente una superclase Animal y un par de subclases Perro y Gato,
5+
* junto con una función que sirva para imprimir el sonido que emite cada Animal.
6+
*
7+
* DIFICULTAD EXTRA (opcional):
8+
* Implementa la jerarquía de una empresa de desarrollo formada por Empleados que
9+
* pueden ser Gerentes, Gerentes de Proyectos o Programadores.
10+
* Cada empleado tiene un identificador y un nombre.
11+
* Dependiendo de su labor, tienen propiedades y funciones exclusivas de su
12+
* actividad, y almacenan los empleados a su cargo.
13+
*/
14+
15+
namespace herencias {
16+
17+
class Animals{
18+
animal: string
19+
nombre: string
20+
21+
constructor(animal: string, nombre: string){
22+
this.animal = animal
23+
this.nombre = nombre
24+
}
25+
26+
talk():string{
27+
return `Soy un ${this.animal} y me llamo ${this.nombre} y emite un sonido no determiando`
28+
}
29+
30+
}
31+
32+
class Perro extends Animals{
33+
sonido: string
34+
35+
constructor(nombre: string, sonido: string){
36+
super("perro", nombre)
37+
this.sonido = sonido
38+
}
39+
40+
talk():string{
41+
return `Soy un ${this.animal}, me llamo ${this.nombre} y ladro, ${this.sonido}!`
42+
}
43+
}
44+
45+
class Gato extends Animals{
46+
sonido: string
47+
48+
constructor(nombre: string, sonido: string){
49+
super("gato", nombre)
50+
this.sonido = sonido
51+
}
52+
53+
talk():string{
54+
return `Soy un ${this.animal}, me llamo ${this.nombre} y maullo, ${this.sonido}!`
55+
}
56+
}
57+
58+
const loro = new Animals("loro", "theo")
59+
const perro = new Perro("Max", "guau! guau!")
60+
const gato = new Gato("Michi", "miau miau!")
61+
62+
const emitirSonido = (animal: Animals): string=>{
63+
return `${animal.talk()}`
64+
}
65+
66+
console.log(emitirSonido(loro))
67+
console.log(emitirSonido(perro))
68+
console.log(emitirSonido(gato))
69+
70+
//! EXTRA
71+
72+
class Empleado {
73+
name: string
74+
id: number
75+
empleados: Empleado[]
76+
77+
constructor(name: string, id: number) {
78+
this.name = name
79+
this.id = id
80+
this.empleados = []
81+
}
82+
83+
print(){
84+
return `Soy un el empleado ${this.name} con id: ${this.id} sin cargo asignado`
85+
}
86+
87+
add(empleado: Empleado){
88+
this.empleados.push(empleado)
89+
}
90+
91+
}
92+
93+
94+
class Gerente extends Empleado {
95+
gerenciar(){
96+
return `${this.name} esta coordinando todos los proyectos de la empresa`
97+
}
98+
99+
}
100+
101+
class GerenteDeProyectos extends Empleado {
102+
proyecto: string
103+
104+
constructor(name: string, id: number, proyecto: string){
105+
super(name, id)
106+
this.proyecto = proyecto
107+
}
108+
109+
gerenciarDeProyectos(){
110+
return `${this.name} esta coordinando su proyectos`
111+
}
112+
113+
}
114+
115+
class Programador extends Empleado {
116+
lenguage: string
117+
118+
constructor(name: string, id: number, lenguage: string){
119+
super(name, id)
120+
this.lenguage = lenguage
121+
}
122+
123+
programar(){
124+
return `${this.name} esta programando en ${this.lenguage}`
125+
}
126+
127+
add(empleado: Empleado): string{
128+
return `Un programador no tinene empleados a cargo, ${empleado.name} no se añadira`
129+
}
130+
131+
}
132+
133+
const miGerente = new Gerente("Sebastian", 1)
134+
const miGerenteDeProyectos = new GerenteDeProyectos("Laura", 2, "Proyecto 1")
135+
const miGerenteDeProyectos2 = new GerenteDeProyectos("Daniela", 3, "Proyecto 2")
136+
const miProgramador = new Programador("Juan", 4, "JavaScript")
137+
const miProgramador2 = new Programador("JuanSe", 5, "TypeScript")
138+
const miProgramador3 = new Programador("Sebas", 6, "Pyton")
139+
const miProgramador4 = new Programador("Michael", 7, "Java")
140+
141+
miGerente.add(miGerenteDeProyectos)
142+
miGerente.add(miGerenteDeProyectos2)
143+
144+
miGerenteDeProyectos.add(miProgramador)
145+
miGerenteDeProyectos.add(miProgramador2)
146+
miGerenteDeProyectos2.add(miProgramador3)
147+
miGerenteDeProyectos2.add(miProgramador4)
148+
149+
console.log(miProgramador.add(miProgramador2))
150+
console.log(miGerente.print())
151+
}

0 commit comments

Comments
 (0)