"La encapsulaci贸n es importante. Pero la raz贸n por la cual es importante es a煤n m谩s importante. La encapsulaci贸n nos ayuda a razonar sobre nuestro c贸digo." 鉁嶐煆 Michael C. Feathers

Otra frase dura, aunque en este caso lo dif铆cil es entenderla bien para luego aplicarla. Nos habla de l贸gica de negocio y usa el t茅rmino encapsular. Supongo que todo ello unido es lo que genera incomprensi贸n. Vayamos por partes.

L贸gica de negocio

Hemos visto c贸mo expresar la l贸gica de negocio de nuestra aplicaci贸n en funciones, o procedimientos o rutinas; da igual, eso es cosa del lenguaje. Pero es en esos bloques en donde reside la inteligencia. Donde escribimos los algoritmos con sus condiciones y repeticiones.

Si lo hacemos bien acabaremos teniendo muchas funciones peque帽as bien nombradas. Y nuestro siguiente reto consiste en agrupar esas funciones en m贸dulos con alg煤n criterio.

Clases

En programaci贸n orientada a objetos a esos m贸dulos les llamamos clases. En otros paradigmas pueden ser name spaces, paquetes, librer铆as o simplemente m贸dulos. De nuevo esto no es lo transcendental.

Lo importante es el criterio que usas para agrupar las funciones. Y aqu铆 ya no hay recetas m谩gicas. Hay que conocer el negocio y aprender de la experiencia para ir ajustando el reparto de responsabilidades en clases. Esta es la raz贸n por la cual la encapsulaci贸n es importante: porque te obliga a razonar sobre tu desarrollo.

Encapsulaci贸n

En esos m贸dulos viven encerradas las funciones. Y en esos m贸dulos viven a煤n mas encerrados los datos con los que operan las funciones. Esos son los objetos y esa es la otra clave de la encapsulaci贸n: exponer l贸gica y proteger datos.

SOLID

Veremos algunas claves para organizar toda esta l贸gica. Bajo el acr贸nimo SOLID se esconden una serie de principios que permiten flexibilizar el mantenimiento de los sistemas de objetos complejos.

Pero por ahora la clave de estos objetos nos la resume Uncle Bob en la segunda de sus dos m谩ximas:

"Los objetos protegen sus datos detr谩s de abstracciones y exponen las funciones que operan con esos datos."

-- 鉁嶏笍 Robert C. Martin