Principio de Sustitución de Liskov en Desarrollo de Software
Clase 7 de 27 • Curso de Patrones de Diseño y SOLID en Python
Contenido del curso
- 2

Principio de Responsabilidad Única en Desarrollo de Software
05:59 - 3

Procesador de Pagos con Principios SOLID y Stripe
11:14 - 4

Aplicación del Principio de Responsabilidad Única en Procesador de Pagos
25:30 - 5

Principio Abierto-Cerrado en Desarrollo de Software
02:39 - 6

Implementación del Principio Abierto-Cerrado en Procesadores de Pago y Notificadores
14:46 - 7

Principio de Sustitución de Liskov en Desarrollo de Software
03:18 - 8

Aplicación del Principio de Sustitución de Liskov en Python
06:44 - 9

Principio de Segregación de Interfaces en Software
02:33 - 10

Implementación del Principio de Segregación de Interfaces en Procesadores de Pago
09:06 - 11

Principio de Inversión de Dependencias en Software
04:23 - 12

Aplicación del Principio de Inversión de Dependencias en Python
05:56
- 14

Introducción a los Patrones de Diseño de Software
03:54 - 15

Patrón Strategy en Diseño de Software con Python
01:55 - 16

Implementación del Strategy Pattern en Procesador de Pagos en Python
10:58 - 17

Patrón Factory Pattern en Python: Creación de Objetos Dinámicos
03:05 - 18

Patrón Factory en Procesadores de Pago en Python
11:06 - 19

Patrón Decorador: Añadir Responsabilidades Dinámicas a Objetos
03:06 - 20

Aplicación del Patrón Decorador en Servicios de Pago
12:57 - 21

Patrón de Diseño Builder: Construcción de Objetos Complejos
01:28 - 22

Builder Pattern para Servicio de Pagos en Python
18:55 - 23

Patrón Observer: Gestión de Eventos y Notificaciones Automáticas
01:48 - 24

Patrón Observer en Sistemas de Pago: Implementación y Notificaciones
11:12 - 25

Patrón Chain of Responsibility en Validación de Pagos
02:04 - 26

Implementación del patrón Chain of Responsibility en validaciones de pago
16:27 - 27

Principios SOLID y Patrones de Diseño en Procesadores de Pago
03:19
El principio de sustitución de Liskov (LSP) es clave para garantizar la coherencia y la interoperabilidad en sistemas orientados a objetos. Propone que las subclases deben ser intercambiables con sus clases base sin alterar el comportamiento esperado. Esto evita problemas inesperados y asegura que las clases que implementen una interfaz o hereden de otra puedan utilizarse de manera consistente, facilitando la reutilización del código y reduciendo errores en tiempo de ejecución.
¿Qué establece el principio de sustitución de Liskov?
Este principio, propuesto por Barbara Liskov, establece que las subclases deben ser sustituibles por sus clases base sin afectar el comportamiento del programa. Es esencial para asegurar que el sistema se mantenga coherente y funcione correctamente cuando se emplean clases derivadas.
¿Cómo se aplican las subclases en LSP?
Las subclases deben respetar el contrato de la clase base. Esto significa que:
- No se puede cambiar la firma de los métodos.
- No se deben agregar nuevos atributos que afecten la funcionalidad de los métodos existentes.
- La interfaz y los tipos deben mantenerse compatibles.
¿Qué errores evita el principio de sustitución?
El LSP ayuda a evitar errores como:
- Excepciones inesperadas cuando se requieren parámetros adicionales no previstos en la clase base.
- Cambios en el tipo de retorno de los métodos que interrumpen la compatibilidad entre clases.
¿Cuáles son los beneficios del principio de sustitución?
- Reutilización del código: Las clases que cumplen con LSP pueden ser utilizadas en diferentes contextos sin modificaciones.
- Compatibilidad de interfaces: Facilita que las clases puedan interactuar de forma coherente sin errores inesperados.
- Reducción de errores en tiempo de ejecución: El código se mantiene predecible y coherente, disminuyendo la posibilidad de fallos imprevistos.
¿Cuándo aplicar el principio de sustitución de Liskov?
Es necesario aplicarlo cuando:
- Hay violación de precondiciones o poscondiciones, es decir, cuando los parámetros o el tipo de retorno de los métodos cambian.
- Se presentan excepciones inesperadas al usar subclases, lo que indica que no se puede hacer una sustitución sencilla entre ellas.