Skip to content

Commit 22339c7

Browse files
#9 - Python
1 parent 561f421 commit 22339c7

File tree

1 file changed

+100
-0
lines changed

1 file changed

+100
-0
lines changed
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
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

Comments
 (0)