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 ("\n Gerente: " + 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 ("\n Gerente: " + 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 ("\n Gerente de Proyecto: " + getNombre () + " está gestionando el proyecto: " + currentProject );
187+ }
188+
189+ @ Override
190+ public void showDetails () {
191+ System .out .println ("\n Gerente 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 ("\n Programador: " + getNombre () + " domina el lenguaje: " + lenguajeDominante );
209+ }
210+
211+ @ Override
212+ public void showDetails () {
213+ System .out .println ("\n Gerente: " + getNombre () + " (ID: " + getId () + ")" );
214+ showLenguaje ();
215+ }
216+ }
85217
86218 /**-----DIFICULTAD EXTRA-----*/
87219}
0 commit comments