SlideShare una empresa de Scribd logo
1 de 14
Descargar para leer sin conexión
Principio Abierto-Cerrado 
AUTENTIA.COM 
Samuel Martín Gómez-Calcerrada 
Madrid, 04 de Agosto de 2014
Principio Abierto-Cerrado(Open-Closed-Principle) 
Bertrand Meyer es el responsable de acuñar el término 
open/closed principle en su libro “Object Oriented 
Software Construction” - 1988 
Martin Fowler ha sido el responsable de popularizarlo 
junto con el resto de principios S.O.L.I.D (first five 
principles) en “Refactoring: Improving the Design of 
Existing Code” - 1999
S.O.L.I.D - ¿Cuáles son? 
Acrónimo introducido por Michael Feathers 
S: Single Responsibility Principle (SRP) - Principio de 
responsabilidad única 
O: Open-Closed Principle (OCP) - Principio Abierto 
Cerrado 
L: Liskov Substitution Principle(LSP) - Principio de 
sustitución de Liskov 
I: Interface Segregation Principle(ISP) - Principio de 
segregación de la interfaz 
D: Dependency Inversion Principle(DIP) - Principio de 
Inversión de la dependencia
Principio Abierto-Cerrado(Open-Closed-Principle) 
Principio Abierto-Cerrado (Open-Closed- 
Principle) 
Definición: 
Software entities (classes, modules, functions, etc.) 
should be open for extension, but closed for 
modification.
OCP - Introducción 
En un mal diseño, cuando se modifica una funcionalidad 
durante el ciclo de vida, suele conllevar una cadena de 
cambios en módulos dependientes unos de otros. 
Fuente: http://appraisaltodayblog.files.wordpress.com/2013/01/stress-hitting-head-on-keyboard.jpg?w=400&h=267
OCP - Introducción 
Para evitar esto, debemos usar el principio OC. 
Las clases deben ser capaces de extenderse sin 
modificar su contenido.
OCP - Introducción 
¿Cómo se consigue esto? 
La forma más común es a través de interfaces o clases 
abstractas de las que depende una implementación 
concreta. 
Cuando cambie la funcionalidad la interfaz se mantiene 
y sólo cambia la implementación.
Ejemplo - Mal diseño 
Nuestra empresa se ha dedicado desde sus inicios a vender agua 
embotellada 
Ahora se plantea vender botellas de NesTea 
Fuente: http://2.bp.blogspot.com/_DIPF2NH_r-w/TEzHMqABkhI/AAAAAAAAAlc/qRzfe7-mTuE/s1600/water_bottles_caps.jpg
OCP Mal diseño - Original
OCP Mal diseño - Añadiendo funcionalidad
OCP Buen diseño - Uso de herencia
En caso de estar ante una modificación demasiado 
drástica normalmente tendremos que modificar la 
interfaz o agregar otra, como en el caso de que la 
empresa empiece a comercializar latas de aluminio. 
Pero esto deben ser casos excepcionales. 
Fuente: 
http://s01.s3c.es/imag/_v0/640x419/6/8/0/latas.jpg 
OCP - Caso extremo
OCP - Conclusiones 
Seguir este principio ayudará a que nuestros sistemas 
sean más mantenibles en el tiempo y soporten mejor los 
cambios. 
Seguir este principio demasiado a rajatabla puede ser 
perjudicial para el proyecto, ya que el abuso de 
interfaces reducirá la productividad y la legibilidad. 
Debemos usar el sentido común en base a nuestro 
conocimiento del proyecto.
Fuente: 
¿Preguntas? 
http://blog.themsls.org/wp-content/uploads/2014/04/Shutterstock_Questions_Image.jpg

Más contenido relacionado

La actualidad más candente

Programación Orientada a Objetos - herencia y polimorfismo
Programación Orientada a Objetos - herencia y polimorfismoProgramación Orientada a Objetos - herencia y polimorfismo
Programación Orientada a Objetos - herencia y polimorfismoAlvaro Enrique Ruano
 
Clase4: Transformación desde Expresión regular a Autómata finito determinista
Clase4: Transformación desde Expresión regular a Autómata finito deterministaClase4: Transformación desde Expresión regular a Autómata finito determinista
Clase4: Transformación desde Expresión regular a Autómata finito deterministamvagila
 
Estructura de datos_Listas encadenadas presentacion
Estructura de datos_Listas encadenadas  presentacionEstructura de datos_Listas encadenadas  presentacion
Estructura de datos_Listas encadenadas presentacionGabriely Peña
 
Remote Procedure Call (RPC)
Remote Procedure Call (RPC)Remote Procedure Call (RPC)
Remote Procedure Call (RPC)Taty Millan
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Giancarlo Aguilar
 
3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento interno3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento internoFernando Solis
 
POO con PHP
POO con PHPPOO con PHP
POO con PHPvinceq
 
Ordenamiento burbuja
Ordenamiento burbuja Ordenamiento burbuja
Ordenamiento burbuja luis cedeño
 
Método de Ordenamiento Sort Shell
Método de Ordenamiento Sort ShellMétodo de Ordenamiento Sort Shell
Método de Ordenamiento Sort ShellAntonio Huertas
 
Planificacion windows
Planificacion windowsPlanificacion windows
Planificacion windowsisack_500
 
Estructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de OrdenamientoEstructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de OrdenamientoJosé Antonio Sandoval Acosta
 
Make static instrumentation great again, High performance fuzzing for Windows...
Make static instrumentation great again, High performance fuzzing for Windows...Make static instrumentation great again, High performance fuzzing for Windows...
Make static instrumentation great again, High performance fuzzing for Windows...Lucas Leong
 

La actualidad más candente (20)

Programación Orientada a Objetos - herencia y polimorfismo
Programación Orientada a Objetos - herencia y polimorfismoProgramación Orientada a Objetos - herencia y polimorfismo
Programación Orientada a Objetos - herencia y polimorfismo
 
4.asll1
4.asll14.asll1
4.asll1
 
Clase4: Transformación desde Expresión regular a Autómata finito determinista
Clase4: Transformación desde Expresión regular a Autómata finito deterministaClase4: Transformación desde Expresión regular a Autómata finito determinista
Clase4: Transformación desde Expresión regular a Autómata finito determinista
 
Estructura de datos_Listas encadenadas presentacion
Estructura de datos_Listas encadenadas  presentacionEstructura de datos_Listas encadenadas  presentacion
Estructura de datos_Listas encadenadas presentacion
 
SOLID Principles
SOLID PrinciplesSOLID Principles
SOLID Principles
 
Pilas estáticas. IESIT
Pilas estáticas. IESITPilas estáticas. IESIT
Pilas estáticas. IESIT
 
Tipos de listas en estructura de datos
Tipos de listas en estructura de datosTipos de listas en estructura de datos
Tipos de listas en estructura de datos
 
Remote Procedure Call (RPC)
Remote Procedure Call (RPC)Remote Procedure Call (RPC)
Remote Procedure Call (RPC)
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.
 
3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento interno3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento interno
 
POO con PHP
POO con PHPPOO con PHP
POO con PHP
 
Ordenamiento burbuja
Ordenamiento burbuja Ordenamiento burbuja
Ordenamiento burbuja
 
Quicksort
QuicksortQuicksort
Quicksort
 
Alice 8
Alice 8Alice 8
Alice 8
 
Método de Ordenamiento Sort Shell
Método de Ordenamiento Sort ShellMétodo de Ordenamiento Sort Shell
Método de Ordenamiento Sort Shell
 
Solid Prensipleri
Solid PrensipleriSolid Prensipleri
Solid Prensipleri
 
Planificacion windows
Planificacion windowsPlanificacion windows
Planificacion windows
 
Greenfoot 10
Greenfoot 10Greenfoot 10
Greenfoot 10
 
Estructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de OrdenamientoEstructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de Ordenamiento
 
Make static instrumentation great again, High performance fuzzing for Windows...
Make static instrumentation great again, High performance fuzzing for Windows...Make static instrumentation great again, High performance fuzzing for Windows...
Make static instrumentation great again, High performance fuzzing for Windows...
 

Destacado

Patrón Decorator
Patrón DecoratorPatrón Decorator
Patrón DecoratorAutentia
 
Patrón Façade
Patrón FaçadePatrón Façade
Patrón FaçadeAutentia
 
Patrones estructurales
Patrones estructuralesPatrones estructurales
Patrones estructuralesAutentia
 
Design Patterns / Patrones de Diseño
Design Patterns / Patrones de DiseñoDesign Patterns / Patrones de Diseño
Design Patterns / Patrones de DiseñoAutentia
 
Measuring code quality:WTF/min by @dgomezg
Measuring code quality:WTF/min by @dgomezgMeasuring code quality:WTF/min by @dgomezg
Measuring code quality:WTF/min by @dgomezgAutentia
 
Patrón Observer
Patrón ObserverPatrón Observer
Patrón ObserverAutentia
 
Nativescript
NativescriptNativescript
NativescriptAutentia
 
Factory method
Factory methodFactory method
Factory methodAutentia
 
Patrones de creación
Patrones de creaciónPatrones de creación
Patrones de creaciónAutentia
 
Patrones de diseño: Polimorfismo
Patrones de diseño: PolimorfismoPatrones de diseño: Polimorfismo
Patrones de diseño: PolimorfismoAutentia
 

Destacado (13)

Patrón Decorator
Patrón DecoratorPatrón Decorator
Patrón Decorator
 
Patrón Façade
Patrón FaçadePatrón Façade
Patrón Façade
 
Patrones estructurales
Patrones estructuralesPatrones estructurales
Patrones estructurales
 
Design Patterns / Patrones de Diseño
Design Patterns / Patrones de DiseñoDesign Patterns / Patrones de Diseño
Design Patterns / Patrones de Diseño
 
Measuring code quality:WTF/min by @dgomezg
Measuring code quality:WTF/min by @dgomezgMeasuring code quality:WTF/min by @dgomezg
Measuring code quality:WTF/min by @dgomezg
 
Patrón Observer
Patrón ObserverPatrón Observer
Patrón Observer
 
Patrones Creacionales
Patrones CreacionalesPatrones Creacionales
Patrones Creacionales
 
Nativescript
NativescriptNativescript
Nativescript
 
Factory method
Factory methodFactory method
Factory method
 
Singleton
SingletonSingleton
Singleton
 
Patrones de creación
Patrones de creaciónPatrones de creación
Patrones de creación
 
Patrones de diseño: Polimorfismo
Patrones de diseño: PolimorfismoPatrones de diseño: Polimorfismo
Patrones de diseño: Polimorfismo
 
Presentacion Patrones Creacionales
Presentacion Patrones CreacionalesPresentacion Patrones Creacionales
Presentacion Patrones Creacionales
 

Similar a Presentación open closed principle

Principios SOLID para el diseño orientado a objetos
Principios SOLID para el diseño orientado a objetosPrincipios SOLID para el diseño orientado a objetos
Principios SOLID para el diseño orientado a objetosnetmind
 
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...Miguel Ángel Sánchez Chordi
 
Frases Motivadoras GLD (engargolado)
Frases Motivadoras GLD (engargolado)Frases Motivadoras GLD (engargolado)
Frases Motivadoras GLD (engargolado)DianaMorales3296
 
Prototipos
PrototiposPrototipos
Prototiposjoserd
 
Integración de una plataforma de servicios con OpenStack: retos y oportunidades
Integración de una plataforma de servicios con OpenStack: retos y oportunidadesIntegración de una plataforma de servicios con OpenStack: retos y oportunidades
Integración de una plataforma de servicios con OpenStack: retos y oportunidadesLibreCon
 
Principios de diseño SOLID
Principios de diseño SOLIDPrincipios de diseño SOLID
Principios de diseño SOLIDManuel Zapata
 
Clean code 10-11
Clean code 10-11Clean code 10-11
Clean code 10-11540deg
 
Primeros pasos con java 9
Primeros pasos con java 9Primeros pasos con java 9
Primeros pasos con java 9Eudris Cabrera
 
SOLID - Open/Close Principle
SOLID - Open/Close PrincipleSOLID - Open/Close Principle
SOLID - Open/Close PrincipleKevin Robayna
 

Similar a Presentación open closed principle (17)

Principios SOLID para el diseño orientado a objetos
Principios SOLID para el diseño orientado a objetosPrincipios SOLID para el diseño orientado a objetos
Principios SOLID para el diseño orientado a objetos
 
[Xamarin] Principio Open/Closed (O)
[Xamarin] Principio Open/Closed (O)[Xamarin] Principio Open/Closed (O)
[Xamarin] Principio Open/Closed (O)
 
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
 
Frases Motivadoras GLD (engargolado)
Frases Motivadoras GLD (engargolado)Frases Motivadoras GLD (engargolado)
Frases Motivadoras GLD (engargolado)
 
Scorm
ScormScorm
Scorm
 
Prototipos
PrototiposPrototipos
Prototipos
 
2017-1POO.pdf
2017-1POO.pdf2017-1POO.pdf
2017-1POO.pdf
 
Integración de una plataforma de servicios con OpenStack: retos y oportunidades
Integración de una plataforma de servicios con OpenStack: retos y oportunidadesIntegración de una plataforma de servicios con OpenStack: retos y oportunidades
Integración de una plataforma de servicios con OpenStack: retos y oportunidades
 
Principios de diseño SOLID
Principios de diseño SOLIDPrincipios de diseño SOLID
Principios de diseño SOLID
 
Clean code 10-11
Clean code 10-11Clean code 10-11
Clean code 10-11
 
Opensource un concepto_inacabado
Opensource un concepto_inacabadoOpensource un concepto_inacabado
Opensource un concepto_inacabado
 
Primeros pasos con java 9
Primeros pasos con java 9Primeros pasos con java 9
Primeros pasos con java 9
 
SOLID - Open/Close Principle
SOLID - Open/Close PrincipleSOLID - Open/Close Principle
SOLID - Open/Close Principle
 
uControl Nº _ 03-.pdf
uControl Nº _ 03-.pdfuControl Nº _ 03-.pdf
uControl Nº _ 03-.pdf
 
SOLID
SOLIDSOLID
SOLID
 
LEAN STARTUP
LEAN STARTUPLEAN STARTUP
LEAN STARTUP
 
Solid Principles
Solid PrinciplesSolid Principles
Solid Principles
 

Último

Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosAlbanyMartinez7
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1ivanapaterninar
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesEdomar AR
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificialcynserafini89
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersIván López Martín
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfFernandoOblitasVivan
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzzAlexandergo5
 

Último (20)

Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos Juridicos
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, Aplicaciones
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificial
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 Testcontainers
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdf
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzz
 

Presentación open closed principle

  • 1. Principio Abierto-Cerrado AUTENTIA.COM Samuel Martín Gómez-Calcerrada Madrid, 04 de Agosto de 2014
  • 2. Principio Abierto-Cerrado(Open-Closed-Principle) Bertrand Meyer es el responsable de acuñar el término open/closed principle en su libro “Object Oriented Software Construction” - 1988 Martin Fowler ha sido el responsable de popularizarlo junto con el resto de principios S.O.L.I.D (first five principles) en “Refactoring: Improving the Design of Existing Code” - 1999
  • 3. S.O.L.I.D - ¿Cuáles son? Acrónimo introducido por Michael Feathers S: Single Responsibility Principle (SRP) - Principio de responsabilidad única O: Open-Closed Principle (OCP) - Principio Abierto Cerrado L: Liskov Substitution Principle(LSP) - Principio de sustitución de Liskov I: Interface Segregation Principle(ISP) - Principio de segregación de la interfaz D: Dependency Inversion Principle(DIP) - Principio de Inversión de la dependencia
  • 4. Principio Abierto-Cerrado(Open-Closed-Principle) Principio Abierto-Cerrado (Open-Closed- Principle) Definición: Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification.
  • 5. OCP - Introducción En un mal diseño, cuando se modifica una funcionalidad durante el ciclo de vida, suele conllevar una cadena de cambios en módulos dependientes unos de otros. Fuente: http://appraisaltodayblog.files.wordpress.com/2013/01/stress-hitting-head-on-keyboard.jpg?w=400&h=267
  • 6. OCP - Introducción Para evitar esto, debemos usar el principio OC. Las clases deben ser capaces de extenderse sin modificar su contenido.
  • 7. OCP - Introducción ¿Cómo se consigue esto? La forma más común es a través de interfaces o clases abstractas de las que depende una implementación concreta. Cuando cambie la funcionalidad la interfaz se mantiene y sólo cambia la implementación.
  • 8. Ejemplo - Mal diseño Nuestra empresa se ha dedicado desde sus inicios a vender agua embotellada Ahora se plantea vender botellas de NesTea Fuente: http://2.bp.blogspot.com/_DIPF2NH_r-w/TEzHMqABkhI/AAAAAAAAAlc/qRzfe7-mTuE/s1600/water_bottles_caps.jpg
  • 9. OCP Mal diseño - Original
  • 10. OCP Mal diseño - Añadiendo funcionalidad
  • 11. OCP Buen diseño - Uso de herencia
  • 12. En caso de estar ante una modificación demasiado drástica normalmente tendremos que modificar la interfaz o agregar otra, como en el caso de que la empresa empiece a comercializar latas de aluminio. Pero esto deben ser casos excepcionales. Fuente: http://s01.s3c.es/imag/_v0/640x419/6/8/0/latas.jpg OCP - Caso extremo
  • 13. OCP - Conclusiones Seguir este principio ayudará a que nuestros sistemas sean más mantenibles en el tiempo y soporten mejor los cambios. Seguir este principio demasiado a rajatabla puede ser perjudicial para el proyecto, ya que el abuso de interfaces reducirá la productividad y la legibilidad. Debemos usar el sentido común en base a nuestro conocimiento del proyecto.