SlideShare a Scribd company logo
1 of 26
SOLID
Principios básicos del DOO
¿Qué es?
Acrónimo de un acrónimo
• S: SRP
• O: OCP
• L: LSP
• I: ISP
• D: DIP
¿Qué es?
• Introducido por Robert Cecil Martin
• Son 5 principios básicos de la POO y DOO
• Guías para el desarrollo
• GRASP
• Principios  Patrones
SRP: Single Responsibility Principle
Una clase jamás debería tener más de una razón para cambiar.
• Introducido por Robert Cecil Martin
• Responsabilidad = Razón para cambiar
• Todo componente debe tener una única responsabilidad
• Si una clase asume más de una responsabilidad, entonces
tendrá más de una razón para cambiar
• Ir encontra del ‘God Object’
SRP: Single Responsibility Principle
SRP: Single Responsibility Principle
OCP: Open Closed Principle
El código debe estar abierto para la extensión y cerrado
para la modificación.
• Introducido por Bertrand Meyer
• Diseñar módulos que nunca cambien
• Bug fixing  modificación
• Nueva funcionalidad  extensión
OCP: Open Closed Principle
OCP: Open Closed Principle
LSP: Liskov Substitution Principle
Las clases hijas deben ser tratadas como las clases padre.
• Introducido por Barbara Liskov
• Las clases especializadas no deben realizar ninguna acción
que invalide los supuestos establecidos por la clase base
• En criollo  Extender! No modificar!
• Tener cuidado con el “es un”
• Usar “es sustituible por”
LSP: Liskov Substitution Principle
LSP: Liskov Substitution Principle
LSP: Liskov Substitution Principle
ISP: Interface Segregation Principle
Los clientes no deben ser forzados a depender de interfaces
que no van a utilizar.
• Introducido por Robert Cecil Martin
• Es preferible muchas interfaces con pocos métodos
• Evitar interfaces generales
• Hacer interfaces específicas!
ISP: Interface Segregation Principle
ISP: Interface Segregation Principle
DIP: Dependency Inversion Principle
Los componentes deben depender de abstracciones, no de
implementaciones.
• Introducido por Robert Cecil Martin
• Abstracciones no deben depender de detalles. Los detalles
deben depender de abstracciones
• Principio de Howllywood
• Puede implementarse con:
• IoC
• Inyección de dependencias
DIP: Dependency Inversion Principle
DIP: Dependency Inversion Principle
¿Preguntas?

More Related Content

Similar to SOLID

Similar to SOLID (11)

Clean code javascript
Clean code javascriptClean code javascript
Clean code javascript
 
[Xamarin] Principio Open/Closed (O)
[Xamarin] Principio Open/Closed (O)[Xamarin] Principio Open/Closed (O)
[Xamarin] Principio Open/Closed (O)
 
SOLID - ¿Cómo lo aplico a mi código?
SOLID - ¿Cómo lo aplico a mi código?SOLID - ¿Cómo lo aplico a mi código?
SOLID - ¿Cómo lo aplico a mi código?
 
¿A qué huele tu código? Afinando nuestro olfato
¿A qué huele tu código? Afinando nuestro olfato¿A qué huele tu código? Afinando nuestro olfato
¿A qué huele tu código? Afinando nuestro olfato
 
Principios de diseño oo
Principios de diseño ooPrincipios de diseño oo
Principios de diseño oo
 
SOLID para CatDotNet
SOLID   para CatDotNetSOLID   para CatDotNet
SOLID para CatDotNet
 
Trabajando con código heredado y ser feliz
Trabajando con código heredado y ser felizTrabajando con código heredado y ser feliz
Trabajando con código heredado y ser feliz
 
Functional programming Vol. 2
Functional programming Vol. 2Functional programming Vol. 2
Functional programming Vol. 2
 
Clean code 10-11
Clean code 10-11Clean code 10-11
Clean code 10-11
 
Presentación open closed principle
Presentación open closed principlePresentación open closed principle
Presentación open closed principle
 
Buenas practicas desarrollando software
Buenas practicas desarrollando softwareBuenas practicas desarrollando software
Buenas practicas desarrollando software
 

More from Andrés Grosso (10)

Engee IT - Institucional
Engee IT - InstitucionalEngee IT - Institucional
Engee IT - Institucional
 
software testing
software testingsoftware testing
software testing
 
Esemap
EsemapEsemap
Esemap
 
Introducción al análisis y relevamiento
Introducción al análisis y relevamientoIntroducción al análisis y relevamiento
Introducción al análisis y relevamiento
 
CQRS
CQRSCQRS
CQRS
 
Patrón de diseño Criteria
Patrón de diseño CriteriaPatrón de diseño Criteria
Patrón de diseño Criteria
 
Transicionkanban
TransicionkanbanTransicionkanban
Transicionkanban
 
Taller definición bugs
Taller definición bugsTaller definición bugs
Taller definición bugs
 
Taller casos de prueba
Taller casos de pruebaTaller casos de prueba
Taller casos de prueba
 
Scrum
ScrumScrum
Scrum
 

Recently uploaded

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 

Recently uploaded (15)

Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
presentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxpresentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptx
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Presentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilPresentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmeril
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 

SOLID