Skip to content

Commit d3ff9f1

Browse files
authored
Merge pull request mouredev#6370 from JesusAntonioEEscamilla/JesusAEE
#9 Java & Python
2 parents 9964d01 + 0151871 commit d3ff9f1

File tree

2 files changed

+211
-4
lines changed

2 files changed

+211
-4
lines changed

Roadmap/09 - HERENCIA/java/JesusAntonioEEscamilla.java

Lines changed: 135 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
1+
import java.util.UUID;
2+
import java.util.ArrayList;
3+
import java.util.List;
24

35
/** #09 - Java -> Jesus Antonio Escamilla */
46

@@ -22,7 +24,36 @@ public static void main(String[] args) {
2224
((Gato) gato).cazar();
2325
((Pajaro) pajaro).volar();
2426
//---EXTRA---
25-
// Pendiente
27+
System.out.println("\n");
28+
// Crear Gerente
29+
Manager gerente = new Manager("Jesus");
30+
31+
// Crear Gerente de Proyecto
32+
ProjectManager gerenteProyecto1 = new ProjectManager("Antonio", "Proyecto1");
33+
ProjectManager gerenteProyecto2 = new ProjectManager("Faty", "Proyecto2");
34+
35+
// Crear Programadores
36+
Programmer programmer1 = new Programmer("Adolfo", "Python");
37+
Programmer programmer2 = new Programmer("Naty", "C#");
38+
Programmer programmer3 = new Programmer("Ruben", "Kotlin");
39+
Programmer programmer4 = new Programmer("Axel", "JavaScript");
40+
41+
// Agregar empleados a cargo del gerente
42+
gerente.agregarEmpleado(gerenteProyecto1);
43+
gerente.agregarEmpleado(gerenteProyecto2);
44+
gerente.agregarEmpleado(programmer1);
45+
gerente.agregarEmpleado(programmer2);
46+
gerente.agregarEmpleado(programmer3);
47+
gerente.agregarEmpleado(programmer4);
48+
49+
// Mostrar detalle de los empleados
50+
gerente.showDetails();
51+
gerenteProyecto1.showDetails();
52+
gerenteProyecto2.showDetails();
53+
programmer1.showDetails();
54+
programmer2.showDetails();
55+
programmer3.showDetails();
56+
programmer4.showDetails();
2657
}
2758

2859
//---EJERCIÓ---
@@ -81,7 +112,108 @@ public static void imprimirSonido(Animal animal){
81112

82113
/**-----DIFICULTAD EXTRA-----*/
83114

84-
// Pendientes
115+
116+
// Clase empleado
117+
public static abstract class Employ {
118+
private String id;
119+
private String nombre;
120+
121+
// Constructor
122+
public Employ(String nombre){
123+
this.id = generarIdentificador();
124+
this.nombre = nombre;
125+
}
126+
127+
// Método para generar un identificador único
128+
private String generarIdentificador() {
129+
return UUID.randomUUID().toString();
130+
}
131+
132+
public String getId(){
133+
return id;
134+
}
135+
136+
public String getNombre(){
137+
return nombre;
138+
}
139+
140+
// Método abstracto que debe ser implementado por las subclases
141+
public abstract void showDetails();
142+
}
143+
144+
// Clase Gerente
145+
public static class Manager extends Employ {
146+
private List<Employ> empleadosACargo;
147+
148+
// Constructor
149+
public Manager(String nombre){
150+
super(nombre);
151+
this.empleadosACargo = new ArrayList<>();
152+
}
153+
154+
// Añadir empleados a cargo
155+
public void agregarEmpleado(Employ empleado) {
156+
empleadosACargo.add(empleado);
157+
}
158+
159+
// Método especifico para mostrar los empleados a cargo
160+
public void showEmployToPosition(){
161+
System.out.println("\nGerente: " + getNombre() + " tiene a cargo los siguientes empleados:");
162+
for (Employ e : empleadosACargo) {
163+
System.out.println("- " + e.getNombre());
164+
}
165+
}
166+
167+
@Override
168+
public void showDetails() {
169+
System.out.println("\nGerente: " + getNombre() + " (ID: " + getId() + ")");
170+
showEmployToPosition();
171+
}
172+
}
173+
174+
// Clase Gerente de Proyecto
175+
public static class ProjectManager extends Employ {
176+
private String currentProject;
177+
178+
// Constructor
179+
public ProjectManager(String nombre, String currentProject){
180+
super(nombre);
181+
this.currentProject = currentProject;
182+
}
183+
184+
// Método específico para mostrar el proyecto actual
185+
public void showProject() {
186+
System.out.println("\nGerente de Proyecto: " + getNombre() + " está gestionando el proyecto: " + currentProject);
187+
}
188+
189+
@Override
190+
public void showDetails() {
191+
System.out.println("\nGerente de Proyecto: " + getNombre() + " (ID: " + getId() + ")");
192+
showProject();
193+
}
194+
}
195+
196+
// Clase Programador
197+
public static class Programmer extends Employ {
198+
private String lenguajeDominante;
199+
200+
// Constructor
201+
public Programmer(String nombre, String lenguajeDominante){
202+
super(nombre);
203+
this.lenguajeDominante = lenguajeDominante;
204+
}
205+
206+
// Método específico para mostrar el lenguaje dominante del programador
207+
public void showLenguaje() {
208+
System.out.println("\nProgramador: " + getNombre() + " domina el lenguaje: " + lenguajeDominante);
209+
}
210+
211+
@Override
212+
public void showDetails() {
213+
System.out.println("\nGerente: " + getNombre() + " (ID: " + getId() + ")");
214+
showLenguaje();
215+
}
216+
}
85217

86218
/**-----DIFICULTAD EXTRA-----*/
87219
}

Roadmap/09 - HERENCIA/python/JesusAntonioEEscamilla.py

Lines changed: 76 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,79 @@ def imprimir_sonido(animal):
4141
"""
4242
EXTRA
4343
"""
44-
# Pendientes
44+
# Creando la superclase
45+
class Employ:
46+
_contador_id = 1 # Contador de ID estático
47+
48+
def __init__(self, nombre):
49+
self.id = Employ._contador_id
50+
Employ._contador_id += 1
51+
self.nombre = nombre
52+
53+
def show_details(self):
54+
print(f"\nID: {self.id}, Nombre: {self.nombre}")
55+
56+
# Creando la clase Gerente
57+
class Manager(Employ):
58+
def __init__(self, nombre):
59+
super().__init__(nombre)
60+
self.empleados_a_cargo = []
61+
62+
def add_employ(self, empleados):
63+
self.empleados_a_cargo.append(empleados)
64+
65+
def show_details(self):
66+
super().show_details()
67+
print("\nEmpleados a cargo:")
68+
for empleado in self.empleados_a_cargo:
69+
empleado.show_details()
70+
71+
# Creando la clase Gerente de Proyecto
72+
class ProjectManager(Employ):
73+
def __init__(self, nombre, proyectos):
74+
super().__init__(nombre)
75+
self.proyectos = proyectos
76+
77+
def show_details(self):
78+
super().show_details()
79+
print(f"Proyectos: {', '.join(self.proyectos)}")
80+
81+
# Creando la clase Programador
82+
class Programmer(Employ):
83+
def __init__(self, nombre, lenguaje):
84+
super().__init__(nombre)
85+
self.lenguaje = lenguaje
86+
87+
def show_details(self):
88+
super().show_details()
89+
print(f"Lenguaje: {self.lenguaje}")
90+
91+
# Ejecutar
92+
# Crear Gerente
93+
gerente = Manager("Jesus")
94+
95+
# Crear Gerentes de Proyecto
96+
gerente_proyecto1 = ProjectManager("Antonio", ["Proyecto 1"])
97+
gerente_proyecto2 = ProjectManager("Faty", ["Proyecto 2"])
98+
99+
# Crear Programadores
100+
programmer1 = Programmer("Adolfo", "Python")
101+
programmer2 = Programmer("Naty", "C#")
102+
programmer3 = Programmer("Ruben", "Kotlin")
103+
programmer4 = Programmer("Axel", "JavaScript")
104+
105+
# Agregar empleados a cargo del gerente
106+
gerente.add_employ(gerente_proyecto1)
107+
gerente.add_employ(gerente_proyecto2)
108+
gerente.add_employ(programmer1)
109+
gerente.add_employ(programmer2)
110+
gerente.add_employ(programmer3)
111+
gerente.add_employ(programmer4)
112+
113+
# Mostrar detalle de los empleados
114+
gerente.show_details()
115+
gerente_proyecto1.show_details()
116+
gerente_proyecto2.show_details()
117+
programmer1.show_details()
118+
programmer2.show_details()
119+
programmer3.show_details()

0 commit comments

Comments
 (0)