1
+ # clase padre
2
+ class Animal :
3
+
4
+ # contructor de la clase padre
5
+ def __init__ (self , nombre , tamaño ):
6
+ self .nombre = nombre
7
+ self .tamaño = tamaño
8
+
9
+ # metodos comunes
10
+
11
+ def mostrar (self ):
12
+ print (f"Soy un { self .nombre } { self .tamaño } " )
13
+
14
+ def comer (self ):
15
+ print (f"{ self .nombre } está comiendo" )
16
+
17
+ # clase perro que hereda de animal
18
+ class Perro (Animal ):
19
+
20
+ # constructor para la clase perro (similar al constructor de la clase padre)
21
+ def __init__ (self , nombre , tamaño , raza ):
22
+ super ().__init__ (nombre , tamaño ) # super hace referencia al padre o a la super clase
23
+ self .raza = raza # atributo de la clase perro
24
+
25
+ # metodos propios
26
+
27
+ def sonido (self ):
28
+ print ("Guau!" )
29
+
30
+ def mostrar_raza (self ):
31
+ print (f"Soy un { self .raza } " )
32
+
33
+ # clase gato que hereda de animal (diferente a perro)
34
+ class Gato (Animal ):
35
+
36
+ # constructor para la clase gato (similar al constructor de la clase padre )
37
+ def __init__ (self , nombre , tamaño , pelaje ):
38
+ super ().__init__ (nombre , tamaño ) # heredando las mismas propiedades de animal
39
+ self .pelaje = pelaje # atributo propio de la clase gato
40
+
41
+ def sonido (self ):
42
+ print ("Miau" )
43
+
44
+ def tocar_pelaje (self ):
45
+ print (f"{ self .nombre } tiene un pelaje { self .pelaje } " )
46
+
47
+ # instanciar objetos de cada clase
48
+ freddy = Animal ("oso" , "grande" )
49
+ firulais = Perro ("Firulais" , "mediano" , "Shiba Inu" )
50
+ michi = Gato ("micchi" , "pequeño" , "suave" )
51
+
52
+ # metodo mostrar
53
+ freddy .mostrar ()
54
+ firulais .mostrar ()
55
+ michi .mostrar ()
56
+
57
+ # metodo comer
58
+ freddy .comer ()
59
+ firulais .comer ()
60
+ michi .comer ()
61
+
62
+ # metodo sonido
63
+ #freddy.sonido() # Animal no puede porque no esta definido el metodo sonido
64
+ firulais .sonido () # Perro.sonido() => Guau
65
+ michi .sonido () # Gato.sonido() => Miau
66
+
67
+ # metodo mostrar_raza
68
+ firulais .mostrar_raza () # Animal y Gato no poseen dicho metodo
69
+
70
+ # metetodo tocar_pelaje
71
+ michi .tocar_pelaje () # Animal y Perro no poseen dicho metodo
72
+
73
+ """
74
+ ---- DIFICULTAD EXTRA ----
75
+ """
76
+
77
+ from abc import ABC , abstractmethod
78
+
79
+ class Empleado (ABC ): # clase abstracta
80
+ def __init__ (self , nombre , edad , matricula ):
81
+ self .nombre = nombre
82
+ self .edad = edad
83
+ self .matricula = matricula
84
+
85
+ # metodo comun
86
+ def presentarse (self ):
87
+ print (f"Me llamo { self .nombre } , tengo { self .edad } . Mi matricula es { self .matricula } " )
88
+
89
+ # metodo abstracto
90
+ @abstractmethod
91
+ def trabajar (self ):
92
+ pass
93
+
94
+
95
+ class Programador (Empleado ):
96
+ def __init__ (self , nombre , edad , matricula , lenguaje ):
97
+ super ().__init__ (nombre , edad , matricula )
98
+ self .lenguaje = lenguaje
99
+
100
+ def trabajar (self ):
101
+ print (f"{ self .nombre } esta trabajando en { self .lenguaje } " )
102
+
103
+ class Gerente (Empleado ):
104
+ def __init__ (self , nombre , edad , matricula ):
105
+ super ().__init__ (nombre , edad , matricula )
106
+ self .programadores = []
107
+
108
+ def trabajar (self ):
109
+ if len (self .empleados_matricula ) > 0 :
110
+ print (f"El gerente { self .nombre } esta trabajando con los programadores: { self .programadores } " )
111
+ else :
112
+ print (f"El gerente { self .nombre } no tiene empleados a cargo" )
113
+
114
+ def agregar_programador (self , programador ):
115
+ self .programadores .append (programador )
116
+
117
+ def quitar_programador (self , index = - 1 ):
118
+ if len (self .programadores ) > 0 :
119
+ self .programadores .pop (index )
120
+ else :
121
+ print ("No hay programadores por remover" )
122
+
123
+ class Gerente_P (Empleado ):
124
+ def __init__ (self , nombre , edad , matricula , proyecto ):
125
+ super ().__init__ (nombre , edad , matricula )
126
+ self .proyecto = proyecto
127
+
128
+ def trabajar (self ):
129
+ print (f"El gerente { self .nombre } está trabajando en el proyecto { self .proyecto } " )
130
+
131
+ def dormir (self ):
132
+ print (f"{ self .nombre } se durmió xd" )
0 commit comments