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