presentación open closed principle

14
Principio Abierto-Cerrado Samuel Martín Gómez-Calcerrada AUTENTIA.COM Madrid, 04 de Agosto de 2014

Upload: autentia

Post on 11-Jul-2015

345 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Presentación open closed principle

Principio Abierto-Cerrado

Samuel Martín Gómez-Calcerrada

AUTENTIA.COM

Madrid, 04 de Agosto de 2014

Page 2: Presentación 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

Principio Abierto-Cerrado(Open-Closed-Principle)

Page 3: Presentación open closed principle

Acrónimo introducido por Michael Feathers

S: Single Responsibility Principle (SRP) - Principio de responsabilidad únicaO: Open-Closed Principle (OCP) - Principio Abierto CerradoL: Liskov Substitution Principle(LSP) - Principio de sustitución de LiskovI: Interface Segregation Principle(ISP) - Principio de segregación de la interfazD: Dependency Inversion Principle(DIP) - Principio de Inversión de la dependencia

S.O.L.I.D - ¿Cuáles son?

Page 4: Presentación 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.

Principio Abierto-Cerrado(Open-Closed-Principle)

Page 5: Presentación open closed principle

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

Page 6: Presentación open closed principle

Para evitar esto, debemos usar el principio OC.

Las clases deben ser capaces de extenderse sin modificar su contenido.

OCP - Introducción

Page 7: Presentación open closed principle

¿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.

OCP - Introducción

Page 8: Presentación open closed principle

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

Ejemplo - Mal diseño

Page 9: Presentación open closed principle

OCP Mal diseño - Original

Page 10: Presentación open closed principle

OCP Mal diseño - Añadiendo funcionalidad

Page 11: Presentación open closed principle

OCP Buen diseño - Uso de herencia

Page 12: Presentación open closed principle

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

Page 13: Presentación open closed principle

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.

OCP - Conclusiones

Page 14: Presentación open closed principle

Fuente:

http://blog.themsls.org/wp-content/uploads/2014/04/Shutterstock_Questions_Image.jpg

¿Preguntas?