You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Explora el "Principio SOLID de Responsabilidad Única (Single Responsibility
5
+
* Principle, SRP)" y crea un ejemplo simple donde se muestre su funcionamiento
6
+
* de forma correcta e incorrecta.
7
+
*
8
+
* DIFICULTAD EXTRA (opcional):
9
+
* Desarrolla un sistema de gestión para una biblioteca. El sistema necesita
10
+
* manejar diferentes aspectos como el registro de libros, la gestión de usuarios
11
+
* y el procesamiento de préstamos de libros.
12
+
* Requisitos:
13
+
* 1. Registrar libros: El sistema debe permitir agregar nuevos libros con
14
+
* información básica como título, autor y número de copias disponibles.
15
+
* 2. Registrar usuarios: El sistema debe permitir agregar nuevos usuarios con
16
+
* información básica como nombre, número de identificación y correo electrónico.
17
+
* 3. Procesar préstamos de libros: El sistema debe permitir a los usuarios
18
+
* tomar prestados y devolver libros.
19
+
* Instrucciones:
20
+
* 1. Diseña una clase que no cumple el SRP: Crea una clase Library que maneje
21
+
* los tres aspectos mencionados anteriormente (registro de libros, registro de
22
+
* usuarios y procesamiento de préstamos).
23
+
* 2. Refactoriza el código: Separa las responsabilidades en diferentes clases
24
+
* siguiendo el Principio de Responsabilidad Única.
25
+
*/
26
+
'''
27
+
28
+
#El principio de SRP consiste en que una clase debe tener una única responsabilidad, es decir, una clase debe tener una única razón para cambiar. Si una clase tiene más de una responsabilidad, entonces la clase debe ser dividida en clases más pequeñas, cada una con una única responsabilidad.
29
+
30
+
#Ejemplo incorrecto
31
+
classRectangulo:
32
+
def__init__(self, ancho, alto):
33
+
self.ancho=ancho
34
+
self.alto=alto
35
+
36
+
defcalcular_area(self):
37
+
returnself.ancho*self.alto
38
+
39
+
defdibujar(self):
40
+
foriinrange(self.alto):
41
+
print('*'*self.ancho)
42
+
#Es incorrecto porque la clase Rectangulo tiene dos responsabilidades: calcular el área y dibujar el rectángulo, por lo que no cumple con el principio SRP.
43
+
44
+
#Ejemplo correcto
45
+
46
+
classRectangulo:
47
+
def__init__(self, ancho, alto):
48
+
self.ancho=ancho
49
+
self.alto=alto
50
+
51
+
defcalcular_area(self):
52
+
returnself.ancho*self.alto
53
+
54
+
classDibujarRectangulo:
55
+
def__init__(self, rectangulo):
56
+
self.rectangulo=rectangulo
57
+
58
+
defdibujar(self):
59
+
foriinrange(self.rectangulo.alto):
60
+
print('*'*self.rectangulo.ancho)
61
+
62
+
#En este ejemplo, la clase Rectangulo tiene la responsabilidad de calcular el área, mientras que la clase DibujarRectangulo tiene la responsabilidad de dibujar el rectángulo. Cada clase tiene una única responsabilidad, por lo que cumple con el principio SRP.
63
+
64
+
#Ejemplo de sistema de gestión de biblioteca incorrecto
#Es incorrecto porque la clase Library tiene tres responsabilidades: registrar libros, registrar usuarios y procesar préstamos de libros, por lo que no cumple con el principio SRP.
86
+
87
+
#Ejemplo de sistema de gestión de biblioteca corecto
#En este ejemplo, se han creado diferentes clases para manejar las responsabilidades de registrar libros, registrar usuarios y procesar préstamos de libros. Cada clase tiene una única responsabilidad, por lo que cumple con el principio SRP.
0 commit comments