1
+ '''EJERCICIO:
2
+ Explora el concepto de herencia según tu lenguaje. Crea un ejemplo que
3
+ implemente una superclase Animal y un par de subclases Perro y Gato,
4
+ junto con una función que sirva para imprimir el sonido que emite cada Animal.
5
+ DIFICULTAD EXTRA (opcional):
6
+ Implementa la jerarquía de una empresa de desarrollo formada por Empleados que
7
+ pueden ser Gerentes, Gerentes de Proyectos o Programadores.
8
+ Cada empleado tiene un identificador y un nombre.
9
+ Dependiendo de su labor, tienen propiedades y funciones exclusivas de su
10
+ actividad, y almacenan los empleados a su cargo.'''
11
+
12
+ # Superclase: una superclase es una clase de la que se heredan otras clases.
13
+ class Animal :
14
+ def __init__ (self , nombre ):
15
+ self .nombre = nombre
16
+
17
+ def sonido (self ): # Método que se hereda a las subclases
18
+ pass # Este método se define en las subclases. Pass es una palabra clave que no hace nada.
19
+
20
+ # Subclases: una subclase es una clase que hereda de una superclase.
21
+ class Dog (Animal ):
22
+ def sonido (self ):
23
+ print ('Guau' )
24
+
25
+ class Cat (Animal ):
26
+ def sonido (self ):
27
+ print ('Miau' )
28
+
29
+ def sonido_animal (animal : Animal ):
30
+ animal .sonido () # Llama al método sonido de la clase animal
31
+
32
+ mi_animal = Animal ('Animal' )
33
+ sonido_animal (mi_animal )
34
+ mi_perro = Dog ('Perro' )
35
+ sonido_animal (mi_perro )
36
+ mi_gato = Cat ('Gato' )
37
+ sonido_animal (mi_gato )
38
+
39
+ # EXTRA
40
+ class Empleado :
41
+ def __init__ (self , id :int , nombre :str ):
42
+ self .id = id
43
+ self .nombre = nombre
44
+ self .employees = []
45
+
46
+ def add_employee (self , employee ):
47
+ self .employees .append (employee )
48
+
49
+ def print_employees (self ):
50
+ for employee in self .employees :
51
+ print (employee .nombre )
52
+
53
+ class Gerente (Empleado ):
54
+ def coordinate_projects (self ):
55
+ print (f"{ self .nombre } está coordinando todos los proyectos de la empresa." )
56
+
57
+ class GerenteProyecto (Empleado ):
58
+ def __init__ (self , id :int , nombre :str , project :str ):
59
+ super ().__init__ (id , nombre )
60
+ self .project = project
61
+
62
+ def coordinate_project (self ):
63
+ print (f"{ self .nombre } está coordinando el proyecto { self .project } ." )
64
+
65
+ class Programador (Empleado ):
66
+ def __init__ (self , id :int , nombre :str , lenguaje :str ):
67
+ super ().__init__ (id , nombre )
68
+ self .lenguaje = lenguaje
69
+
70
+ def code (self ):
71
+ print (f"{ self .nombre } está programando en { self .lenguaje } ." )
72
+
73
+ def add (self , employee :Empleado ):
74
+ print (f"Un programador no tiene empleados a su cargo. { employee .nombre } no se añadirá." )
75
+
76
+ # Crear empleados
77
+ mi_gerente = Gerente (1 , 'Santiago Bailleres' )
78
+ mi_project_manager = GerenteProyecto (2 , 'Juan Perez' , 'Proyecto 1' )
79
+ mi_project_manager2 = GerenteProyecto (3 , 'Pedro Lopez' , 'Proyecto 2' )
80
+ mi_programador = Programador (4 , 'Maria Garcia' , 'Python' )
81
+ mi_programador2 = Programador (5 , 'Ana Martinez' , 'Java' )
82
+ mi_programador3 = Programador (6 , 'Luis Ramirez' , 'C++' )
83
+ mi_programador4 = Programador (7 , 'Carlos Sanchez' , 'JavaScript' )
84
+
85
+ mi_gerente .add_employee (mi_project_manager )
86
+ mi_gerente .add_employee (mi_project_manager2 )
87
+
88
+ mi_project_manager .add_employee (mi_programador )
89
+ mi_project_manager .add_employee (mi_programador2 )
90
+ mi_project_manager2 .add_employee (mi_programador3 )
91
+ mi_project_manager2 .add_employee (mi_programador4 )
92
+
93
+ mi_programador .add (mi_programador4 )
94
+
95
+ mi_programador .code ()
96
+ mi_project_manager .coordinate_project ()
97
+ mi_gerente .coordinate_projects ()
98
+ mi_gerente .print_employees ()
99
+ mi_project_manager .print_employees ()
100
+ mi_programador .print_employees ()
0 commit comments