Skip to content

Commit fd145ba

Browse files
authored
Merge pull request mouredev#5816 from raynerpv2022/main
#9 Python and GO
2 parents 6ca147f + dd5f4be commit fd145ba

File tree

2 files changed

+315
-0
lines changed

2 files changed

+315
-0
lines changed
Lines changed: 199 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,199 @@
1+
package main
2+
3+
import "fmt"
4+
5+
// /*
6+
// * EJERCICIO:
7+
// * Explora el concepto de herencia según tu lenguaje. Crea un ejemplo que
8+
// * implemente una superclase Animal y un par de subclases Perro y Gato,
9+
// * junto con una función que sirva para imprimir el sonido que emite cada Animal.
10+
// *
11+
12+
type Salvaje interface {
13+
Sonido()
14+
}
15+
type Animal struct {
16+
nombre string
17+
}
18+
19+
type Gusano struct {
20+
Animal
21+
sonido string
22+
}
23+
24+
type Hormiga struct {
25+
Animal
26+
sonido string
27+
}
28+
29+
func (g Gusano) Sonido() {
30+
fmt.Printf("Me llamo %s y hago %s\n", g.nombre, g.sonido)
31+
}
32+
33+
func (h Hormiga) Sonido() {
34+
fmt.Printf("Me llamo %s y hago %s\n", h.nombre, h.sonido)
35+
}
36+
37+
func AnimalSalvaje(AS Salvaje) {
38+
AS.Sonido()
39+
40+
}
41+
42+
// ************************************************************
43+
// * DIFICULTAD EXTRA (opcional):
44+
// * Implementa la jerarquía de una empresa de desarrollo formada por Empleados que
45+
// * pueden ser Gerentes, Gerentes de Proyectos o Programadores.
46+
// * Cada empleado tiene un identificador y un nombre.
47+
// * Dependiendo de su labor, tienen propiedades y funciones exclusivas de su
48+
// * actividad, y almacenan los empleados a su cargo.
49+
// */
50+
51+
type Empleado struct {
52+
id int
53+
nombre string
54+
empleadosACargo []Empleado
55+
}
56+
57+
type Gerente struct {
58+
Empleado
59+
proyectos []string
60+
}
61+
62+
type GerenteP struct {
63+
Empleado
64+
proyecto string
65+
}
66+
67+
type Programador struct {
68+
Empleado
69+
lenguajes []string
70+
}
71+
72+
func (p *Programador) MostrarLenguajes() {
73+
fmt.Printf("Soy el programador %v y puedo programar en %v \n", p.nombre, p.lenguajes)
74+
}
75+
76+
func (p *Programador) Addlengajes(lenguaje string) {
77+
78+
p.lenguajes = append(p.lenguajes, lenguaje)
79+
fmt.Println("Lenguaje guardado")
80+
}
81+
82+
func (p *Programador) MostrarEmpleados() {
83+
fmt.Printf("Soy el programador %v y no puedo tener empleados a cargo \n", p.nombre)
84+
}
85+
86+
func (g *GerenteP) MostrarEmpleados() {
87+
fmt.Printf("Soy el Gerente de Proyecto %v \n", g.nombre)
88+
fmt.Printf("Mis empleados a cargo son %v \n", g.empleadosACargo)
89+
90+
}
91+
92+
func (g *GerenteP) AddEmpleados(empleado Empleado) {
93+
g.empleadosACargo = append(g.empleadosACargo, empleado)
94+
fmt.Println("Empleado guardado")
95+
96+
}
97+
98+
func (g *GerenteP) Mostrarproyecto() {
99+
fmt.Printf("Soy el Gerente de Proyecto %v \n", g.nombre)
100+
fmt.Printf("Miproyecto es %v \n", g.proyecto)
101+
}
102+
103+
func (g *GerenteP) AddProyecto(proyecto string) {
104+
g.proyecto = proyecto
105+
fmt.Println("Proyecto guardado")
106+
107+
}
108+
109+
func (g *Gerente) Mostrarproyectos() {
110+
fmt.Printf("Soy el Gerente %v \n", g.nombre)
111+
fmt.Printf("Mis proyecto son %v \n", g.proyectos)
112+
}
113+
114+
func (g *Gerente) Addproyectos(proyecto string) {
115+
g.proyectos = append(g.proyectos, proyecto)
116+
fmt.Println("Proyecto guardado")
117+
}
118+
func (g *Gerente) MostrarEmpleados() {
119+
fmt.Printf("Soy el Gerente %v \n", g.nombre)
120+
fmt.Printf("Mis empleados son %v \n", g.empleadosACargo)
121+
}
122+
123+
func (g *Gerente) AddEmpleados(empleado Empleado) {
124+
g.empleadosACargo = append(g.empleadosACargo, empleado)
125+
fmt.Println("Proyecto guardado")
126+
}
127+
func main() {
128+
gusanito := Gusano{Animal{"gusi"}, "ffffff"}
129+
hormiguita := Hormiga{Animal{"hormi"}, "gggggg"}
130+
AnimalSalvaje(gusanito)
131+
AnimalSalvaje(hormiguita)
132+
133+
fmt.Println("************* Extra ************")
134+
p1 := Programador{
135+
Empleado{
136+
9,
137+
"Pepito",
138+
nil,
139+
},
140+
nil}
141+
142+
p1.Addlengajes("Java")
143+
p1.Addlengajes("Python")
144+
p2 := Programador{
145+
Empleado{
146+
8,
147+
"Juannito",
148+
nil,
149+
},
150+
nil}
151+
p2.Addlengajes("Golang")
152+
p2.Addlengajes("C++")
153+
154+
gp1 := GerenteP{
155+
Empleado{
156+
2,
157+
"kuko",
158+
nil,
159+
},
160+
""}
161+
gp2 := GerenteP{
162+
Empleado{
163+
3,
164+
"lalo",
165+
nil,
166+
},
167+
""}
168+
gp1.AddProyecto("Web")
169+
gp2.AddProyecto("MOngodb")
170+
gp1.AddEmpleados(p1.Empleado)
171+
gp2.AddEmpleados(p2.Empleado)
172+
g := Gerente{
173+
Empleado{
174+
1,
175+
"Jefesito",
176+
nil,
177+
},
178+
nil}
179+
g.Addproyectos(gp1.proyecto)
180+
g.Addproyectos(gp2.proyecto)
181+
g.AddEmpleados(gp1.Empleado)
182+
g.AddEmpleados(gp2.Empleado)
183+
184+
p1.MostrarLenguajes()
185+
p1.MostrarEmpleados()
186+
187+
p2.MostrarLenguajes()
188+
p2.MostrarEmpleados()
189+
190+
gp1.MostrarEmpleados()
191+
gp1.Mostrarproyecto()
192+
193+
gp2.MostrarEmpleados()
194+
gp2.Mostrarproyecto()
195+
196+
g.MostrarEmpleados()
197+
g.Mostrarproyectos()
198+
199+
}
Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
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+
8+
9+
10+
11+
12+
class Animal:
13+
14+
def __init__(self, nombre) -> None:
15+
self.nombre = nombre
16+
17+
18+
class Delfin (Animal):
19+
20+
def __init__(self, ruido, nombre) -> None:
21+
super().__init__(nombre)
22+
self.ruido = ruido
23+
24+
def sonido(self):
25+
print(f"Me llamo {self.nombre}, y hago {self.ruido}")
26+
27+
class Tiburon (Animal):
28+
def __init__(self, ruido, nombre) -> None:
29+
super().__init__(nombre)
30+
self.ruido = ruido
31+
32+
def sonido(self):
33+
print(f"Me llamo {self.nombre}, y hago {self.ruido}")
34+
35+
36+
Tibu = Tiburon("GHGHGHGHGHGHG", "tiburcio")
37+
Tonina= Delfin("jijijijjjiijjjiji", "Toninota")
38+
Tibu.sonido()
39+
Tonina.sonido()
40+
41+
42+
# // * DIFICULTAD EXTRA (opcional):
43+
# // * Implementa la jerarquía de una empresa de desarrollo formada por Empleados que
44+
# // * pueden ser Gerentes, Gerentes de Proyectos o Programadores.
45+
# // * Cada empleado tiene un identificador y un nombre.
46+
# // * Dependiendo de su labor, tienen propiedades y funciones exclusivas de su
47+
# // * actividad, y almacenan los empleados a su cargo.
48+
# // */
49+
50+
class Empleado:
51+
def __init__(self,id,nombre) -> None:
52+
self.id = id
53+
self.nombre = nombre
54+
self.empleados_acargo = []
55+
56+
def addE(self, empleado):
57+
self.empleados_acargo.append(empleado)
58+
59+
def mostrarE(self):
60+
print(f"Empleados A CArgo de {self.nombre}")
61+
for i in self.empleados_acargo:
62+
print (i.nombre)
63+
64+
65+
class Gerente( Empleado):
66+
def __init__(self, id, nombre) -> None:
67+
super().__init__(id, nombre)
68+
69+
def gerenciar(self):
70+
print(f"NOmbre : {self.nombre} ID {self.id} ------ Empleados a Cargo : {len(self.empleados_acargo)}, Coordina todos los Proyectos")
71+
72+
73+
74+
class GerenteP (Empleado) :
75+
def __init__(self, id, nombre, proyecto) -> None:
76+
super().__init__(id, nombre)
77+
self.empleados_acargo = []
78+
self.proyecto = proyecto
79+
80+
def gerenciar(self):
81+
print(f"NOmbre : {self.nombre} ID {self.id} ------ Empleados a Cargo : {len(self.empleados_acargo)}, Coordina el proyecto {self.proyecto} ")
82+
83+
def addE(self, empleado: Empleado):
84+
self.empleados_acargo.append(empleado)
85+
86+
87+
88+
89+
class Programador(Empleado):
90+
def __init__(self, id, nombre, language) -> None:
91+
super().__init__(id, nombre)
92+
self.language = language
93+
94+
def programar(self):
95+
print(f"NOmbre : {self.nombre} ID {self.id} ------ programa en {self.language}")
96+
def addE(self, empleado):
97+
print("No puede Tener empleados a su cargo")
98+
99+
100+
P1 = Programador(99,"Paco", ["Python","C#"])
101+
P2 = Programador(98,"Kuko",["GO", "C++"])
102+
GP1 = GerenteP(22,"Cucurella","Web TOR")
103+
G1 = Gerente(111,"Gerente Manolo")
104+
G1.addE(GP1)
105+
GP1.addE(P1)
106+
GP1.addE(P2)
107+
108+
G1.gerenciar()
109+
GP1.gerenciar()
110+
P1.programar()
111+
P2.programar()
112+
G1.mostrarE()
113+
GP1.mostrarE()
114+
P1.addE(P2)
115+
116+

0 commit comments

Comments
 (0)