1
+ from abc import ABC , abstractmethod
2
+
3
+
4
+ # El principio Solid de Segregacion de Interfaces comprende que una interfaz es un contrato que se debe cumplir por lo que una clase que herede de la interfaz no puede omitir sus metodos
5
+ # o levantar excepciones/errores en su implementacion
6
+
7
+ #Implementacion incorrecta
8
+ class AnimalesWrong (ABC ):
9
+
10
+ @abstractmethod
11
+ def caminar (self ):
12
+ pass
13
+ @abstractmethod
14
+ def comer (self ):
15
+ pass
16
+
17
+ class PerroWrong (AnimalesWrong ):
18
+ def __init__ (self , name ):
19
+ self .name = name
20
+
21
+ def caminar (self ):
22
+ print (f"{ self .name } esta Caminando" )
23
+
24
+ def comer (self ):
25
+ print (f"{ self .name } esta Comiendo" )
26
+
27
+ class PezWrong (AnimalesWrong ):
28
+
29
+ def __init__ (self , especie ):
30
+ self .especie = especie
31
+
32
+ def caminar (self ):
33
+ raise Exception ('Los Peces no caminan' )
34
+
35
+ def comer (self ):
36
+ print (f"{ self .especie } esta Comiendo" )
37
+
38
+ def nadar (self ):
39
+ print (f"{ self .especie } esta Nadando" )
40
+
41
+
42
+ #Implementacion correcta
43
+
44
+ class funcionesGenerales (ABC ):
45
+
46
+ @abstractmethod
47
+ def alimentarse ():
48
+ pass
49
+
50
+ class funcionesTerrestres (ABC ):
51
+
52
+ @abstractmethod
53
+ def caminar (self ):
54
+ pass
55
+
56
+ class funcionesAcuaticas (ABC ):
57
+
58
+ @abstractmethod
59
+ def nadar (self ):
60
+ pass
61
+
62
+ class Perro (funcionesGenerales ,funcionesTerrestres ):
63
+ def __init__ (self , name ):
64
+ self .name = name
65
+
66
+ def caminar (self ):
67
+ print (f"{ self .name } esta Caminando" )
68
+
69
+ def alimentarse (self ):
70
+ print (f"{ self .name } esta Comiendo" )
71
+
72
+ class Pez (funcionesGenerales ,funcionesAcuaticas ):
73
+
74
+ def __init__ (self , especie ):
75
+ self .especie = especie
76
+
77
+ def nadar (self ):
78
+ print (f"{ self .especie } esta Nadando" )
79
+
80
+ def alimentarse (self ):
81
+ print (f"{ self .especie } esta Comiendo" )
82
+
83
+ class Cocodrilo (funcionesGenerales ,funcionesAcuaticas ,funcionesTerrestres ):
84
+
85
+ def __init__ (self , especie ):
86
+ self .especie = especie
87
+
88
+ def nadar (self ):
89
+ print (f"{ self .especie } esta Nadando" )
90
+
91
+ def alimentarse (self ):
92
+ print (f"{ self .especie } esta Comiendo" )
93
+
94
+ def caminar (self ):
95
+ print (f"{ self .especie } esta Caminando" )
96
+
97
+
98
+ # Ejercicio Extra Gestor de Impresoras
99
+
100
+
101
+ class funcionesBasicas (ABC ):
102
+
103
+ def imprimirBYN (self ):
104
+ pass
105
+
106
+ class funcionesAvanzadas (ABC ):
107
+
108
+ def imprimirAColor (self ):
109
+ pass
110
+
111
+
112
+ class funcionesExtra (ABC ):
113
+
114
+ def enviarFax (self ):
115
+ pass
116
+
117
+ def escanearDocumento (self ):
118
+ pass
119
+
120
+
121
+ class impresoraBasica (funcionesBasicas ):
122
+
123
+ def __init__ (self , marca , modelo ):
124
+ self .marca = marca
125
+ self .modelo = modelo
126
+
127
+ def imprimirBYN (self ,documento ):
128
+ print (f'Marca: { self .marca } Modelo: { self .modelo } ' )
129
+ print (f"Imprimiendo { documento } a Blanco y Negro" )
130
+
131
+ class impresoraModerna (funcionesAvanzadas ):
132
+
133
+ def __init__ (self , marca , modelo ):
134
+ self .marca = marca
135
+ self .modelo = modelo
136
+
137
+ def imprimirAColor (self ,documento ):
138
+ print (f'Marca: { self .marca } Modelo: { self .modelo } ' )
139
+ print (f"Imprimiendo { documento } a Color" )
140
+
141
+ class impresoraMultifuncional (funcionesBasicas ,funcionesAvanzadas ,funcionesExtra ):
142
+
143
+ def __init__ (self , marca , modelo ):
144
+ self .marca = marca
145
+ self .modelo = modelo
146
+
147
+ def imprimirBYN (self ,documento ):
148
+ print (f'Marca: { self .marca } Modelo: { self .modelo } ' )
149
+ print (f"Imprimiendo { documento } a Blanco y Negro" )
150
+
151
+ def imprimirAColor (self ,documento ):
152
+ print (f'Marca: { self .marca } Modelo: { self .modelo } ' )
153
+ print (f"Imprimiendo { documento } a Color" )
154
+
155
+ def escanearDocumento (self , path ):
156
+ print (f'Marca: { self .marca } Modelo: { self .modelo } ' )
157
+ print (f"Escaneando documento hacia { path } " )
158
+
159
+ def enviarFax (self , documento ):
160
+ print (f'Marca: { self .marca } Modelo: { self .modelo } ' )
161
+ print (f"Enviando { documento } en Fax" )
162
+
163
+
164
+
165
+ print ('\n ' )
166
+ impresora1 = impresoraBasica ('Epson' , 'Ecotank M1120' )
167
+ impresora1 .imprimirBYN ('HOLA MUNDO.docx' )
168
+
169
+
170
+ print ('\n ' )
171
+ impresora2 = impresoraModerna ('Epson' , 'Ecotank L121' )
172
+ impresora2 .imprimirAColor ('HOLA MUNDO.docx' )
173
+
174
+
175
+ print ('\n ' )
176
+ impresora3 = impresoraMultifuncional ('Epson' , 'Ecotank L3560' )
177
+ impresora3 .imprimirBYN ('HOLA MUNDO.docx' )
178
+ impresora3 .imprimirAColor ('HOLA MUNDO.docx' )
179
+ impresora3 .escanearDocumento ('C:/users/usuario/documents/HOLA_MUNDO.txt' )
180
+ impresora3 .enviarFax ('HOLA MUNDO.docx' )
0 commit comments