Otro de los tipos de datos abstractos que veremos es una 

cola

, similar a una “línea de espera”. Los sistemas 

computacionales utilizan muchas colas internamente. Una cola ofrece un comportamiento bien defi nido a sus 
clientes: éstos colocan elementos en una cola, uno a la vez, mediante una operación conocida como 

enfi lar, y 

luego recuperan esos elementos, uno a la vez, mediante una operación conocida como 

retirar. Una cola devuelve 

los elementos en el orden 

primero en entrar, primero en salir (PEPS)

, lo cual signifi ca que el primer elemento 

insertado en una cola es el primer elemento que se remueve. Conceptualmente, una cola puede volverse infi nita-
mente larga, pero las colas reales son fi nitas.

La cola oculta una representación interna de datos que lleva el registro de los elementos que esperan actual-

mente en la línea, y ofrece operaciones a sus clientes (

enfi lar y retirar). A los clientes no les preocupa la im-

plementación de la cola; simplemente dependen de que ésta opere “como se indicó”. Cuando un cliente enfi la a 
un elemento, la cola debe aceptarlo y colocarlo en algún tipo de estructura de datos PEPS interna. De manera 
similar, cuando el cliente desea el siguiente elemento de la parte frontal de la cola, ésta debe remover el elemento 
de su representación interna y entregarlo en orden PEPS (es decir, el elemento que haya estado más tiempo en la 
cola debe ser el siguiente que se devuelva mediante la siguiente operación de retiro).

El ADT tipo cola garantiza la integridad de su estructura de datos interna. Los clientes no pueden manipular 

esta estructura de datos directamente; sólo el ADT tipo cola tiene acceso a sus datos internos. Los clientes pueden 
realizar solamente las operaciones permitidas en la representación de datos; el ADT rechaza las operaciones que 
su interfaz pública no proporciona.

8.16 Ejemplo práctico de la clase 

Tiempo

: creación de paquetes

En casi todos los ejemplos de este libro hemos visto que las clases de bibliotecas preexistentes, como la API de 
Java, pueden importarse en un programa en Java. Cada clase en la API pertenece a un paquete que contiene un 
grupo de clases relacionadas. A medida que las aplicaciones se vuelven más complejas, los paquetes ayudan a los 
programadores a administrar la complejidad de los componentes de una aplicación. Los paquetes también facili-
tan la reutilización de software, al permitir que los programas importen clases de otros paquetes (como lo hemos 
hecho en la mayoría de los ejemplos). Otro benefi cio de los paquetes es que proporcionan una convención para 
los nombres de clases únicos, lo cual ayuda a evitar los confl ictos de nombres de clases (que veremos más adelan-
te). En esta sección veremos cómo crear sus propios paquetes.

Pasos para declarar una clase reutilizable

Antes de poder importar una clase en varias aplicaciones, ésta debe colocarse en un paquete para que sea reutiliza-
ble. La fi gura 8.18 muestra cómo especifi car el paquete en el que debe colocarse una clase. La fi gura 8.19 muestra 
cómo importar nuestra clase empaquetada, para poder usarla en una aplicación. Los pasos para crear una clase 
reutilizable son:

 1. 

Declare una clase 

public

; ya quede lo contrario, sólo la podrán usar otras clases en el mismo paquete.

 2. 

Seleccione un nombre único para el paquete y agregue una 

declaración

package

 al archivo de código 

fuente para la declaración de la clase reutilizable. Sólo puede haber una declaración 

package

 en cada 

archivo de código fuente de Java, y debe ir antes que todas las demás declaraciones e instrucciones en 
el archivo. Observe que los comentarios no son instrucciones, por lo que pueden colocarse antes de una 
instrucción 

package

 en un archivo.

 3. 

Compile la clase de manera que se coloque en la estructura de directorio del paquete apropiada.

 4. 

Importe la clase reutilizable en un programa, y utilícela.

Pasos 1 y 2: crear una clase 

public

 y agregar la instrucción 

package

Para el 

paso 1, modifi caremos la clase 

public Tiempo1

 que declaramos en la fi gura 8.1. La nueva versión se mues-

tra en la fi gura 8.18. No se han hecho modifi caciones a la implementación de la clase, por lo que no hablaremos 
otra vez aquí sobre sus detalles de implementación.

Para el 

paso 2 agregamos una declaración 

package

 (línea 3), la cual declara a un paquete llamado 

com.

deitel.jhtp7.cap08.

 Al colocar una declaración 

package

al principio de un archivo de código fuente de 

Java, indicamos que la clase declarada en el archivo forma parte del paquete especifi cado. Sólo las declaraciones 

8.16 Ejemplo práctico de la clase 

Tiempo

: creación de paquetes 

355

08_MAQ_CAP_08.indd355

4/19/081:23:56AM