SlideShare a Scribd company logo
1 of 31
Download to read offline
SOLID design principles
En el inicio...
El software
cambia
Rigido
cambios en cascada
Fragil
elementos no
relacionados se
rompen al hacer
un cambio
Inamovible
poca reutilización
copy-paste
Pringoso
es dificil entender
el diseño inicial
abres, cierras y
bye
SOLID no todo son principios
SOLID = gestión dependencias
las dependencias te matan
diseño te salva
Que son dependencias?
framework
var cutomer = new Customer()
web services
BD
Hipótesis
http://martinfowler.com/bliki/DesignStaminaHypothesis.html
€
Si el proyecto sigue vivo,
te costará más dinero
SOLID
Michael Feathers for the
"First five principles"
Robert C Martin SOLID
http://social.technet.microsoft.com/wiki/contents/articles/18033.software-design-principles.aspx
Single responsability
Open/closed
Liskov substitution
Interface segregation
Dependency Inversion
Single Responsability
"A class should have only one reason to change. "
http://social.technet.microsoft.com/wiki/contents/articles/18061.single-responsibility-principle.aspx
Open - Closed
"Open for extension, closed for modification"
Liskov substitution
"Derived classes must be able to substitute for their base classes"
Child class must not remove base class behavior
Interface segregation
"many client-specific interfaces are better than one general-purpose interface."
http://social.technet.microsoft.com/wiki/contents/articles/18061.single-responsibility-principle.aspx
Dependency Inversion
"High level modules should not depend upon low level modules,
rather both should depend upon abstractions"
http://social.technet.microsoft.com/wiki/contents/articles/18061.single-responsibility-principle.aspx
OCP = Objetivo
SRP + DIP = estrategias de código
LSP= formula confusa
ISP = No parece tener aplicación
Al final todo va de gestión de dependencias
El diseño va de dependencias
Si haces referencia a algo ----> dependes de
ello
Si tu dependencia cambia ----> tu debes cambiar
para evitar dependencias
loosely coupled - DIP
highly cohesive - SRP
easily composable - dependencias
context independent - dependencias
http://www.growing-object-oriented-software.com/
código independencia
Single responsability
Dependency Inversion
Open/closed
Liskov substitution - > subclases
Interface segregation -> static languages
http://www.growing-object-oriented-software.com/
código!
Inversion de dependencias
UI
Business Logic
Data access
Inversion de dependencias
UI
Business Logic
Data access
Resistencia
code smell
abraza el problema, y arreglalo
test depende de ---> tu código
TDD se hace complicado si no hay diseño
autoexamen
existe repetición?
tiene una responsabilidad?
cambia todo al mismo ritmo?
depende de cosas que cambian poco?
Fin

More Related Content

Similar to Principios SOLID para el diseño orientado a objetos

Presentación open closed principle
Presentación open closed principlePresentación open closed principle
Presentación open closed principleAutentia
 
Arquitectura software.taxonomias.modularidad.001
Arquitectura software.taxonomias.modularidad.001Arquitectura software.taxonomias.modularidad.001
Arquitectura software.taxonomias.modularidad.001Jose Emilio Labra Gayo
 
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring -  Junta General del MexALN 28/06/2012Retos en la Adopción del Refactoring -  Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012Alfredo Chavez
 
Experiencia de Deuda Tecnica en Google.en.es.pdf
Experiencia de Deuda Tecnica en Google.en.es.pdfExperiencia de Deuda Tecnica en Google.en.es.pdf
Experiencia de Deuda Tecnica en Google.en.es.pdfNicanor Sachahuaman
 
Conociendo Y Aplicando Floss Ene 09
Conociendo Y Aplicando Floss Ene 09Conociendo Y Aplicando Floss Ene 09
Conociendo Y Aplicando Floss Ene 09Eduardo Llaguno
 
Artículo 1 sobre la plataforma ECLIPSE
Artículo 1 sobre la plataforma ECLIPSEArtículo 1 sobre la plataforma ECLIPSE
Artículo 1 sobre la plataforma ECLIPSEtorrubia
 
Anexo 11 actividad 3 sistemas operativos en red
Anexo 11 actividad 3 sistemas operativos en redAnexo 11 actividad 3 sistemas operativos en red
Anexo 11 actividad 3 sistemas operativos en redEdgar Mtz
 
Zend Framework - MVC - 2008
Zend Framework - MVC - 2008Zend Framework - MVC - 2008
Zend Framework - MVC - 2008Juan Carbajal
 
Metodologia De Desarrollo Sl Rompiendo Paradigmas Final
Metodologia De Desarrollo Sl   Rompiendo Paradigmas   FinalMetodologia De Desarrollo Sl   Rompiendo Paradigmas   Final
Metodologia De Desarrollo Sl Rompiendo Paradigmas FinalLa Red DBAccess
 
Principios de Diseño de Componentes Web
Principios de Diseño de Componentes WebPrincipios de Diseño de Componentes Web
Principios de Diseño de Componentes WebJavier Vélez Reyes
 
IBM Lotus Domino/Notes 9 - Español
IBM Lotus Domino/Notes 9 - EspañolIBM Lotus Domino/Notes 9 - Español
IBM Lotus Domino/Notes 9 - Españollufegato1464
 
BIML para automatizar patrones de ETL
BIML para automatizar patrones de ETLBIML para automatizar patrones de ETL
BIML para automatizar patrones de ETLSpanishPASSVC
 

Similar to Principios SOLID para el diseño orientado a objetos (20)

Presentación open closed principle
Presentación open closed principlePresentación open closed principle
Presentación open closed principle
 
Principios de diseño oo
Principios de diseño ooPrincipios de diseño oo
Principios de diseño oo
 
Arquitectura software.taxonomias.modularidad.001
Arquitectura software.taxonomias.modularidad.001Arquitectura software.taxonomias.modularidad.001
Arquitectura software.taxonomias.modularidad.001
 
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring -  Junta General del MexALN 28/06/2012Retos en la Adopción del Refactoring -  Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
 
Experiencia de Deuda Tecnica en Google.en.es.pdf
Experiencia de Deuda Tecnica en Google.en.es.pdfExperiencia de Deuda Tecnica en Google.en.es.pdf
Experiencia de Deuda Tecnica en Google.en.es.pdf
 
Conociendo Y Aplicando Floss Ene 09
Conociendo Y Aplicando Floss Ene 09Conociendo Y Aplicando Floss Ene 09
Conociendo Y Aplicando Floss Ene 09
 
Artículo 1 sobre la plataforma ECLIPSE
Artículo 1 sobre la plataforma ECLIPSEArtículo 1 sobre la plataforma ECLIPSE
Artículo 1 sobre la plataforma ECLIPSE
 
Emprendiendo Negocios con Software Libre
Emprendiendo Negocios con Software LibreEmprendiendo Negocios con Software Libre
Emprendiendo Negocios con Software Libre
 
Anexo 11 actividad 3 sistemas operativos en red
Anexo 11 actividad 3 sistemas operativos en redAnexo 11 actividad 3 sistemas operativos en red
Anexo 11 actividad 3 sistemas operativos en red
 
Expo web 2. 0
Expo web 2. 0Expo web 2. 0
Expo web 2. 0
 
Mvc
MvcMvc
Mvc
 
Zend Framework - MVC - 2008
Zend Framework - MVC - 2008Zend Framework - MVC - 2008
Zend Framework - MVC - 2008
 
Metodologia SL
Metodologia SLMetodologia SL
Metodologia SL
 
Metodologia De Desarrollo Sl Rompiendo Paradigmas Final
Metodologia De Desarrollo Sl   Rompiendo Paradigmas   FinalMetodologia De Desarrollo Sl   Rompiendo Paradigmas   Final
Metodologia De Desarrollo Sl Rompiendo Paradigmas Final
 
Principios de Diseño de Componentes Web
Principios de Diseño de Componentes WebPrincipios de Diseño de Componentes Web
Principios de Diseño de Componentes Web
 
IBM Lotus Domino/Notes 9 - Español
IBM Lotus Domino/Notes 9 - EspañolIBM Lotus Domino/Notes 9 - Español
IBM Lotus Domino/Notes 9 - Español
 
Developing for Android (The movie)
Developing for Android (The movie)Developing for Android (The movie)
Developing for Android (The movie)
 
3.creacion de componentes visuales
3.creacion de componentes visuales3.creacion de componentes visuales
3.creacion de componentes visuales
 
BIML para automatizar patrones de ETL
BIML para automatizar patrones de ETLBIML para automatizar patrones de ETL
BIML para automatizar patrones de ETL
 
Web 2
Web 2Web 2
Web 2
 

More from netmind

Kanban Method Lean Kanban University
Kanban Method Lean Kanban UniversityKanban Method Lean Kanban University
Kanban Method Lean Kanban Universitynetmind
 
DSDM Frameworks for Agile Project Management Offices
DSDM Frameworks for Agile Project Management OfficesDSDM Frameworks for Agile Project Management Offices
DSDM Frameworks for Agile Project Management Officesnetmind
 
Team Kanban Practitioner
Team Kanban PractitionerTeam Kanban Practitioner
Team Kanban Practitionernetmind
 
KMP I: Kanban System Design
KMP I: Kanban System DesignKMP I: Kanban System Design
KMP I: Kanban System Designnetmind
 
DASA Meetup Madrid 2018
DASA Meetup Madrid 2018DASA Meetup Madrid 2018
DASA Meetup Madrid 2018netmind
 
Escape from Earth en PMI ® EMEA 2018
Escape from Earth en PMI ® EMEA 2018Escape from Earth en PMI ® EMEA 2018
Escape from Earth en PMI ® EMEA 2018netmind
 
Las 5 claves de la gamificación en el aprendizaje de COBIT®
Las 5 claves de la gamificación en el aprendizaje de COBIT®Las 5 claves de la gamificación en el aprendizaje de COBIT®
Las 5 claves de la gamificación en el aprendizaje de COBIT®netmind
 
DevOps - Certificación oficial DASA
DevOps - Certificación oficial DASADevOps - Certificación oficial DASA
DevOps - Certificación oficial DASAnetmind
 
Comunidades de Práctica
Comunidades de PrácticaComunidades de Práctica
Comunidades de Prácticanetmind
 
PMBOK® 6ª edición NOVEDADES
PMBOK® 6ª edición NOVEDADESPMBOK® 6ª edición NOVEDADES
PMBOK® 6ª edición NOVEDADESnetmind
 
CERTIFICACIONES PMI®
CERTIFICACIONES PMI®CERTIFICACIONES PMI®
CERTIFICACIONES PMI®netmind
 
Seminario Tendencias en Gestión de Proyectos
Seminario Tendencias en Gestión de ProyectosSeminario Tendencias en Gestión de Proyectos
Seminario Tendencias en Gestión de Proyectosnetmind
 
MSP Managing Successful Programmes
MSP Managing Successful ProgrammesMSP Managing Successful Programmes
MSP Managing Successful Programmesnetmind
 
MoP - Management of Portfolios
MoP - Management of PortfoliosMoP - Management of Portfolios
MoP - Management of Portfoliosnetmind
 
Foundations of the Scaled Agile Framework® (SAFe® ) 4.5
Foundations of the Scaled Agile Framework® (SAFe® ) 4.5Foundations of the Scaled Agile Framework® (SAFe® ) 4.5
Foundations of the Scaled Agile Framework® (SAFe® ) 4.5netmind
 
Management 3.0
Management 3.0Management 3.0
Management 3.0netmind
 
Arquitectura de Empresa TOGAF
Arquitectura de Empresa TOGAFArquitectura de Empresa TOGAF
Arquitectura de Empresa TOGAFnetmind
 
CAS 2017 Miquel Rodríguez - Taller Training from the BACK of the Room
CAS 2017 Miquel Rodríguez - Taller Training from the BACK of the Room CAS 2017 Miquel Rodríguez - Taller Training from the BACK of the Room
CAS 2017 Miquel Rodríguez - Taller Training from the BACK of the Room netmind
 
CAS 2017 Aleix Palau - Peer Learning Universities. Aprendiendo de los desafío...
CAS 2017 Aleix Palau - Peer Learning Universities. Aprendiendo de los desafío...CAS 2017 Aleix Palau - Peer Learning Universities. Aprendiendo de los desafío...
CAS 2017 Aleix Palau - Peer Learning Universities. Aprendiendo de los desafío...netmind
 
CAS 2017 Alfred Maeso - Business Analysis: Superpoderes para el Product Owner
CAS 2017 Alfred Maeso - Business Analysis: Superpoderes para el Product OwnerCAS 2017 Alfred Maeso - Business Analysis: Superpoderes para el Product Owner
CAS 2017 Alfred Maeso - Business Analysis: Superpoderes para el Product Ownernetmind
 

More from netmind (20)

Kanban Method Lean Kanban University
Kanban Method Lean Kanban UniversityKanban Method Lean Kanban University
Kanban Method Lean Kanban University
 
DSDM Frameworks for Agile Project Management Offices
DSDM Frameworks for Agile Project Management OfficesDSDM Frameworks for Agile Project Management Offices
DSDM Frameworks for Agile Project Management Offices
 
Team Kanban Practitioner
Team Kanban PractitionerTeam Kanban Practitioner
Team Kanban Practitioner
 
KMP I: Kanban System Design
KMP I: Kanban System DesignKMP I: Kanban System Design
KMP I: Kanban System Design
 
DASA Meetup Madrid 2018
DASA Meetup Madrid 2018DASA Meetup Madrid 2018
DASA Meetup Madrid 2018
 
Escape from Earth en PMI ® EMEA 2018
Escape from Earth en PMI ® EMEA 2018Escape from Earth en PMI ® EMEA 2018
Escape from Earth en PMI ® EMEA 2018
 
Las 5 claves de la gamificación en el aprendizaje de COBIT®
Las 5 claves de la gamificación en el aprendizaje de COBIT®Las 5 claves de la gamificación en el aprendizaje de COBIT®
Las 5 claves de la gamificación en el aprendizaje de COBIT®
 
DevOps - Certificación oficial DASA
DevOps - Certificación oficial DASADevOps - Certificación oficial DASA
DevOps - Certificación oficial DASA
 
Comunidades de Práctica
Comunidades de PrácticaComunidades de Práctica
Comunidades de Práctica
 
PMBOK® 6ª edición NOVEDADES
PMBOK® 6ª edición NOVEDADESPMBOK® 6ª edición NOVEDADES
PMBOK® 6ª edición NOVEDADES
 
CERTIFICACIONES PMI®
CERTIFICACIONES PMI®CERTIFICACIONES PMI®
CERTIFICACIONES PMI®
 
Seminario Tendencias en Gestión de Proyectos
Seminario Tendencias en Gestión de ProyectosSeminario Tendencias en Gestión de Proyectos
Seminario Tendencias en Gestión de Proyectos
 
MSP Managing Successful Programmes
MSP Managing Successful ProgrammesMSP Managing Successful Programmes
MSP Managing Successful Programmes
 
MoP - Management of Portfolios
MoP - Management of PortfoliosMoP - Management of Portfolios
MoP - Management of Portfolios
 
Foundations of the Scaled Agile Framework® (SAFe® ) 4.5
Foundations of the Scaled Agile Framework® (SAFe® ) 4.5Foundations of the Scaled Agile Framework® (SAFe® ) 4.5
Foundations of the Scaled Agile Framework® (SAFe® ) 4.5
 
Management 3.0
Management 3.0Management 3.0
Management 3.0
 
Arquitectura de Empresa TOGAF
Arquitectura de Empresa TOGAFArquitectura de Empresa TOGAF
Arquitectura de Empresa TOGAF
 
CAS 2017 Miquel Rodríguez - Taller Training from the BACK of the Room
CAS 2017 Miquel Rodríguez - Taller Training from the BACK of the Room CAS 2017 Miquel Rodríguez - Taller Training from the BACK of the Room
CAS 2017 Miquel Rodríguez - Taller Training from the BACK of the Room
 
CAS 2017 Aleix Palau - Peer Learning Universities. Aprendiendo de los desafío...
CAS 2017 Aleix Palau - Peer Learning Universities. Aprendiendo de los desafío...CAS 2017 Aleix Palau - Peer Learning Universities. Aprendiendo de los desafío...
CAS 2017 Aleix Palau - Peer Learning Universities. Aprendiendo de los desafío...
 
CAS 2017 Alfred Maeso - Business Analysis: Superpoderes para el Product Owner
CAS 2017 Alfred Maeso - Business Analysis: Superpoderes para el Product OwnerCAS 2017 Alfred Maeso - Business Analysis: Superpoderes para el Product Owner
CAS 2017 Alfred Maeso - Business Analysis: Superpoderes para el Product Owner
 

Recently uploaded

Actividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdfActividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdfalejandrogomezescoto
 
Inteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidadInteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidaddanik1023m
 
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdfInmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdfOBr.global
 
Hazte partner: Club Festibity 2024 - 2025
Hazte partner: Club Festibity 2024 - 2025Hazte partner: Club Festibity 2024 - 2025
Hazte partner: Club Festibity 2024 - 2025Festibity
 
Matriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docxMatriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docxPaolaCarolinaCarvaja
 
De Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NETDe Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NETGermán Küber
 
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdfPresentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdfymiranda2
 
VIDEOS DE APOYO.docx E
VIDEOS DE APOYO.docx                                  EVIDEOS DE APOYO.docx                                  E
VIDEOS DE APOYO.docx Emialexsolar
 
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...RaymondCode
 
Los mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdfLos mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdfodalistar77
 
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdfTENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdfJoseAlejandroPerezBa
 
El diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimosEl diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimosLCristinaForchue
 

Recently uploaded (14)

Actividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdfActividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdf
 
Inteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidadInteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidad
 
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdfInmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdf
 
Hazte partner: Club Festibity 2024 - 2025
Hazte partner: Club Festibity 2024 - 2025Hazte partner: Club Festibity 2024 - 2025
Hazte partner: Club Festibity 2024 - 2025
 
Matriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docxMatriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docx
 
De Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NETDe Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NET
 
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdfPresentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
 
VIDEOS DE APOYO.docx E
VIDEOS DE APOYO.docx                                  EVIDEOS DE APOYO.docx                                  E
VIDEOS DE APOYO.docx E
 
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
 
BEDEC Sostenibilidad, novedades 2024 - Laura Silva
BEDEC Sostenibilidad, novedades 2024 - Laura SilvaBEDEC Sostenibilidad, novedades 2024 - Laura Silva
BEDEC Sostenibilidad, novedades 2024 - Laura Silva
 
Los mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdfLos mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdf
 
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdfTENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
 
El diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimosEl diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimos
 
BEDEC Proyecto y obra , novedades 2024 - Xavier Folch
BEDEC Proyecto y obra , novedades 2024 - Xavier FolchBEDEC Proyecto y obra , novedades 2024 - Xavier Folch
BEDEC Proyecto y obra , novedades 2024 - Xavier Folch
 

Principios SOLID para el diseño orientado a objetos