Trucos y Soluciones - Primeros pasos en Java

Indice del artículo
Introducción a Java
Requisitos de desarrollo
Estructura del Proyecto

Estructura del Proyecto Java. Clausulas Package e Import

Todo proyecto Java se compone de un conjunto de ficheros que contienen el código fuente de la aplicación, recursos y librerías previamente compiladas. Estos ficheros deben ser almacenados siguiendo una estructura jerarquica que permita clasificar elementos que cooperan en del proyecto, desde un determinado punto de vista. Para definir la relación lógica entre distintos ficheros disponemos de las clausulas package e import:

Claúsula package

Un "package" es una agrupación de clases afines. Equivale al concepto de librería existente en otros lenguajes o sistemas. Los packages delimitan el espacio de nombres (space name). Una clase puede definirse como perteneciente a un package y dispone de acceso al resto de clases definidas dentro del mismo package. El nombre de una clase debe ser único dentro del package donde se define, pero puede tener el mismo nombre que otra clase de un package distinto aunque pertenezca al mismo proyecto. Una clase se declara perteneciente a un package incluyendo en la primera línea del código la clausula package, cuya sintaxis es:

package [miPackage];
. . .
class [miClase] {
. . .

En el ejemplo anterior, la clase miClase pertenece al package miPackage. La claúsula package es opcional. Si no se utiliza, las clases declaradas en el archivo fuente no pertenecen a ningún package concreto, sino que pertenecen a un package por defecto sin nombre.

Los packages se pueden nombrar usando nombres compuestos separados por puntos, de forma similar a como se componen las direcciones URL de Internet. Por ejemplo se puede tener un package de nombre miOrganizacion.miAplicacion. Cuando se utiliza esta estructura se habla de packages y subpackages. En el ejemplo miOrganizacion es el Package base y mi Aplicacion es un subpackage de miOrganizacion. De esta forma se pueden tener los packages ordenados según una jerarquía equivalente a un sistema de archivos jerárquico.

Además del significado lógico descrito hasta ahora, los packages también tienen un significado físico que sirve para almacenar los módulos ejecutables (ficheros con extensión .class) en el sistema de archivos del ordenador. En el ejemplo anterior el fichero .class deberá estar incluido en el directorio miOrganizacion/miAplicacion del proyecto. Para que una clase pueda ser usada fuera del package donde se definió debe ser declarada con el modificador de acceso public, de la siguiente forma:

package [miOrganizacion.miAplicacion];
public class Dni {
String valor;
}

 

Claúsula import

Cuando se referencia cualquier clase dentro de otra se asume, si no se indica otra cosa, que ésta otra está declarada en el mismo package. Por ejemplo:

package miAplicacion;
. . . 
class  Persona{ 
Dni dni; 
. . .
}

En esta declaración definimos la clase Persona perteneciente al package miAplicacion, que usa la clase Dni definida en el mismo paquete. El compilador y la JVM asumen que Dni pertenece también al package miAplicacion, y tal como está hecha la definición, para que la clase Dni sea accesible (conocida) por el compilador, es necesario que esté definida en el mismo package. Si esto no es así, es necesario hacer accesible el espacio de nombres donde está definida la clase Dni a nuestra nueva clase. Esto se hace con la clausula import. Supongamos que la clase Dni estuviera definida de esta forma:

package otraAplicacion; 
class Dni {
String valor;
}

Entonces, para usar la clase Dni en nuestra clase Persona deberíamos poner:

package miAplicacion; 
import otraAplicacion.Dni; 
class Persona { 
Dni dni; 
. . . 
}

Con la claúsula import se hacen accesible clases declaradas en otros packages. Si sólo se quisiera disponer de acceso a todas las clases de otro package se puede usar el simbolo *, pero esto no se acoseja por motivos de eficiencia y control. En una clase puede haber tantas sentencias import como sean necesarias. Las cláusulas import se colocan después de la cláusula package (si es que existe) y antes de las definiciones de las clases.

 




Share Link: Bookmark Google Yahoo MyWeb Del.icio.us Digg Facebook Myspace Reddit Ma.gnolia Technorati Stumble Upon
Recuerda: Si te resulta util este artículo compártelo en tus redes sociales favoritas

Publicidad

Perfil

F·T
Ing. Informático

Univ. de Málaga

  • Ingeniería del Software
  • Proyectos Web 2.0
  • Aplicaciones Open Source
  • Consultoría SEO / SEM
  • Aplicaciones B2C / B2B
  • Redes Sociales
facebook twitter linkedin Delicious google-plus2
Skype Google Talk Gmail email rss
· Email: correo@ftorres.es
· Google+: Francisco Torres
· Facebook: FTorres
· Twitter: @ftorres.es
· Linkedin: ftorres_web
Contáctame

Funcionando con joomla! gracias a 10·cero