From 01518716925faba5979dbbc6057c030027f5b296 Mon Sep 17 00:00:00 2001 From: Jesus Antonio Escamilla Date: Sun, 29 Sep 2024 17:12:19 -0600 Subject: [PATCH] #09 Java & Python --- .../java/JesusAntonioEEscamilla.java | 138 +++++++++++++++++- .../python/JesusAntonioEEscamilla.py | 77 +++++++++- 2 files changed, 211 insertions(+), 4 deletions(-) diff --git a/Roadmap/09 - HERENCIA/java/JesusAntonioEEscamilla.java b/Roadmap/09 - HERENCIA/java/JesusAntonioEEscamilla.java index f4d20c31a8..959ec3443f 100644 --- a/Roadmap/09 - HERENCIA/java/JesusAntonioEEscamilla.java +++ b/Roadmap/09 - HERENCIA/java/JesusAntonioEEscamilla.java @@ -1,4 +1,6 @@ - +import java.util.UUID; +import java.util.ArrayList; +import java.util.List; /** #09 - Java -> Jesus Antonio Escamilla */ @@ -22,7 +24,36 @@ public static void main(String[] args) { ((Gato) gato).cazar(); ((Pajaro) pajaro).volar(); //---EXTRA--- - // Pendiente + System.out.println("\n"); + // Crear Gerente + Manager gerente = new Manager("Jesus"); + + // Crear Gerente de Proyecto + ProjectManager gerenteProyecto1 = new ProjectManager("Antonio", "Proyecto1"); + ProjectManager gerenteProyecto2 = new ProjectManager("Faty", "Proyecto2"); + + // Crear Programadores + Programmer programmer1 = new Programmer("Adolfo", "Python"); + Programmer programmer2 = new Programmer("Naty", "C#"); + Programmer programmer3 = new Programmer("Ruben", "Kotlin"); + Programmer programmer4 = new Programmer("Axel", "JavaScript"); + + // Agregar empleados a cargo del gerente + gerente.agregarEmpleado(gerenteProyecto1); + gerente.agregarEmpleado(gerenteProyecto2); + gerente.agregarEmpleado(programmer1); + gerente.agregarEmpleado(programmer2); + gerente.agregarEmpleado(programmer3); + gerente.agregarEmpleado(programmer4); + + // Mostrar detalle de los empleados + gerente.showDetails(); + gerenteProyecto1.showDetails(); + gerenteProyecto2.showDetails(); + programmer1.showDetails(); + programmer2.showDetails(); + programmer3.showDetails(); + programmer4.showDetails(); } //---EJERCIÓ--- @@ -81,7 +112,108 @@ public static void imprimirSonido(Animal animal){ /**-----DIFICULTAD EXTRA-----*/ - // Pendientes + + // Clase empleado + public static abstract class Employ { + private String id; + private String nombre; + + // Constructor + public Employ(String nombre){ + this.id = generarIdentificador(); + this.nombre = nombre; + } + + // Método para generar un identificador único + private String generarIdentificador() { + return UUID.randomUUID().toString(); + } + + public String getId(){ + return id; + } + + public String getNombre(){ + return nombre; + } + + // Método abstracto que debe ser implementado por las subclases + public abstract void showDetails(); + } + + // Clase Gerente + public static class Manager extends Employ { + private List empleadosACargo; + + // Constructor + public Manager(String nombre){ + super(nombre); + this.empleadosACargo = new ArrayList<>(); + } + + // Añadir empleados a cargo + public void agregarEmpleado(Employ empleado) { + empleadosACargo.add(empleado); + } + + // Método especifico para mostrar los empleados a cargo + public void showEmployToPosition(){ + System.out.println("\nGerente: " + getNombre() + " tiene a cargo los siguientes empleados:"); + for (Employ e : empleadosACargo) { + System.out.println("- " + e.getNombre()); + } + } + + @Override + public void showDetails() { + System.out.println("\nGerente: " + getNombre() + " (ID: " + getId() + ")"); + showEmployToPosition(); + } + } + + // Clase Gerente de Proyecto + public static class ProjectManager extends Employ { + private String currentProject; + + // Constructor + public ProjectManager(String nombre, String currentProject){ + super(nombre); + this.currentProject = currentProject; + } + + // Método específico para mostrar el proyecto actual + public void showProject() { + System.out.println("\nGerente de Proyecto: " + getNombre() + " está gestionando el proyecto: " + currentProject); + } + + @Override + public void showDetails() { + System.out.println("\nGerente de Proyecto: " + getNombre() + " (ID: " + getId() + ")"); + showProject(); + } + } + + // Clase Programador + public static class Programmer extends Employ { + private String lenguajeDominante; + + // Constructor + public Programmer(String nombre, String lenguajeDominante){ + super(nombre); + this.lenguajeDominante = lenguajeDominante; + } + + // Método específico para mostrar el lenguaje dominante del programador + public void showLenguaje() { + System.out.println("\nProgramador: " + getNombre() + " domina el lenguaje: " + lenguajeDominante); + } + + @Override + public void showDetails() { + System.out.println("\nGerente: " + getNombre() + " (ID: " + getId() + ")"); + showLenguaje(); + } + } /**-----DIFICULTAD EXTRA-----*/ } \ No newline at end of file diff --git a/Roadmap/09 - HERENCIA/python/JesusAntonioEEscamilla.py b/Roadmap/09 - HERENCIA/python/JesusAntonioEEscamilla.py index 2c24ee2c73..9c67341384 100644 --- a/Roadmap/09 - HERENCIA/python/JesusAntonioEEscamilla.py +++ b/Roadmap/09 - HERENCIA/python/JesusAntonioEEscamilla.py @@ -41,4 +41,79 @@ def imprimir_sonido(animal): """ EXTRA """ -# Pendientes \ No newline at end of file +# Creando la superclase +class Employ: + _contador_id = 1 # Contador de ID estático + + def __init__(self, nombre): + self.id = Employ._contador_id + Employ._contador_id += 1 + self.nombre = nombre + + def show_details(self): + print(f"\nID: {self.id}, Nombre: {self.nombre}") + +# Creando la clase Gerente +class Manager(Employ): + def __init__(self, nombre): + super().__init__(nombre) + self.empleados_a_cargo = [] + + def add_employ(self, empleados): + self.empleados_a_cargo.append(empleados) + + def show_details(self): + super().show_details() + print("\nEmpleados a cargo:") + for empleado in self.empleados_a_cargo: + empleado.show_details() + +# Creando la clase Gerente de Proyecto +class ProjectManager(Employ): + def __init__(self, nombre, proyectos): + super().__init__(nombre) + self.proyectos = proyectos + + def show_details(self): + super().show_details() + print(f"Proyectos: {', '.join(self.proyectos)}") + +# Creando la clase Programador +class Programmer(Employ): + def __init__(self, nombre, lenguaje): + super().__init__(nombre) + self.lenguaje = lenguaje + + def show_details(self): + super().show_details() + print(f"Lenguaje: {self.lenguaje}") + +# Ejecutar +# Crear Gerente +gerente = Manager("Jesus") + +# Crear Gerentes de Proyecto +gerente_proyecto1 = ProjectManager("Antonio", ["Proyecto 1"]) +gerente_proyecto2 = ProjectManager("Faty", ["Proyecto 2"]) + +# Crear Programadores +programmer1 = Programmer("Adolfo", "Python") +programmer2 = Programmer("Naty", "C#") +programmer3 = Programmer("Ruben", "Kotlin") +programmer4 = Programmer("Axel", "JavaScript") + +# Agregar empleados a cargo del gerente +gerente.add_employ(gerente_proyecto1) +gerente.add_employ(gerente_proyecto2) +gerente.add_employ(programmer1) +gerente.add_employ(programmer2) +gerente.add_employ(programmer3) +gerente.add_employ(programmer4) + +# Mostrar detalle de los empleados +gerente.show_details() +gerente_proyecto1.show_details() +gerente_proyecto2.show_details() +programmer1.show_details() +programmer2.show_details() +programmer3.show_details() \ No newline at end of file