Skip to content

Commit

Permalink
Merge pull request mouredev#6370 from JesusAntonioEEscamilla/JesusAEE
Browse files Browse the repository at this point in the history
#9 Java & Python
  • Loading branch information
Roswell468 authored Sep 30, 2024
2 parents 9964d01 + 0151871 commit d3ff9f1
Show file tree
Hide file tree
Showing 2 changed files with 211 additions and 4 deletions.
138 changes: 135 additions & 3 deletions Roadmap/09 - HERENCIA/java/JesusAntonioEEscamilla.java
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@

import java.util.UUID;
import java.util.ArrayList;
import java.util.List;

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

Expand All @@ -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Ó---
Expand Down Expand Up @@ -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<Employ> 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-----*/
}
77 changes: 76 additions & 1 deletion Roadmap/09 - HERENCIA/python/JesusAntonioEEscamilla.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,79 @@ def imprimir_sonido(animal):
"""
EXTRA
"""
# Pendientes
# 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()

0 comments on commit d3ff9f1

Please sign in to comment.