Entendiendo los Paquetes
En las clases de Java, incluso en cursos avanzados, muchas veces me preguntan: ¿Para que sirve un paquete? ¿Cómo defino un paquete? ¿Cómo debo definir la estructura de los paquetes?; y aunque para muchos la respuesta parece obvia, para otros no lo es tanto. Quiero empezar con este post sobre los paquetes Java; pues, si bien son un elemento sencillo, el definirlos en forma adecuada nos ayuda con la arquitectura de nuestros sistemas y proporciona un orden de trabajo en el equipo.
Los Paquetes se utilizan para organizar clases e interfaces que tengan un funcionamiento relativo. El código más reutilizable son los paquetes.
Diseño de Paquetes
Los paquetes son pensados para contener clases, pero también define donde las clases se localizan en la estructura jerárquica del directorio. Los paquetes son promovidos por los estándares de programación Java para disminuir la probabilidad de colisión de las clases. Agrupar en paquetes las clases también promueve el rehusó, la facilidad de mantenimiento del código, y el principio de encapsulamiento y modularidad del Paradigma de Orientación a Objetos (POO).Cuando diseña los paquetes Java, como un grupo de clases, se debe tener en cuenta lo siguiente:
- Tamaño del paquete: típicamente, paquetes con muchas clases ayuda al rehusó, por el contrario paquetes pequeños ayudan al fácil mantenimiento de paquetes.
- Mantenimiento: generalmente, los cambios de software están limitados a un simple paquete cuando los paquetes se enfocan en la funcionalidad.
- Nombre: considera el uso de convenciones al nombrar los paquetes. Utilice la estructura de nombres de dominios reversos para la estructura de paquetes. Utilice letras minúsculas para el nombre.
Ejemplo:
Tenemos un equipo de trabajo con dos desarrolladores, asumimos que tenemos que desarrollar dos conjuntos de clases con una funcionalidad similar para el mismo producto. Asigna las tareas a cada uno de los programadores. No define el nombre de las clases, pero define el propósito del paquete y lo que debe contener. El desarrollador A, crea las clases relacionadas a los aspectos geométricos incluyendo las clases: Point, Polygon y Plane. El desarrollador B desarrolla las clases utilizadas para simulación incluyendo Globos de aire caliente, helicópteros y Aeroplanos.
Cuando los programadores entregan las clases, ambos tienen una clase denominada Plane.java – una para representar al Plano y otra para representar al Aeroplano. Ahora tenemos un problema, porque ambas clases no pueden coexistir en un mismo directorio. La solución es agruparlas en paquetes. Si ha designado el nombre de los paquetes a los desarrolladores, este conflicto no hubiera sucedido. La lección es, siempre define los paquetes del proyecto aunque su proyecto sea sencillo.
En consideración al post, ¿Que otras consideraciones debemos tener al trabajar con Paquetes? ¿Que experiencia ha tenido trabajando con paquetes en Java? ¿En que otros lenguajes de programación hay un concepto similar?