356

Capítulo 8 Clases y objetos: un análisis más detallado

package

, las declaraciones 

import

 y los comentarios pueden aparecer fuera de las llaves de una declaración 

de clase. Un archivo de código fuente de Java debe tener el siguiente orden:

 1. 

Una declaración 

package

 (si la hay).

 2. 

Declaraciones 

import

 (si las hay).

 3. 

Declaraciones de clases.

Sólo una de las declaraciones de las clases en un archivo específi co pueden ser 

public

; las demás se colocan en el 

paquete, y sólo las pueden utilizar las otras clases en el mismo paquete. Las clases que no son 

public

 están en 

un paquete, para dar soporte a las clases reutilizables.

En un esfuerzo por proporcionar nombres únicos para cada paquete, Sun Microsystems especifi ca una con-

vención para nombrar paquetes, que todos los programadores de Java deben seguir. Cada nombre de paquete 
debe empezar con un nombre de dominio de Internet en orden inverso. Por ejemplo, nuestro nombre de domi-
nio es 

deitel.com

, por lo que los nombres de nuestros paquetes empiezan con 

com.deitel

. Para el nombre 

de dominio 

suescuela

.edu

, el nombre del paquete debe empezar con 

edu.

suescuela. Una vez que se invierte el 

nombre del dominio, podemos elegir cualquier otro nombre que deseemos para nuestro paquete. Si usted forma 
parte de una empresa con muchas divisiones, o de una universidad con muchas escuelas, tal vez sea conveniente 
que utilice el nombre de su división o escuela como el siguiente nombre en el paquete. Nosotros optamos por usar 

jhtp7

 como el siguiente nombre en nuestro paquete, para indicar que esta clase es del libro en inglés 

Java How To 

Program, Séptima edición. El último nombre en nuestro paquete especifi ca que es para el capítulo 8 (

cap08

).

 1 

// Fig. 8.18: Tiempo1.java

 2 

// La declaración de la clase Tiempo1 mantiene la hora en formato de 24 horas.

 3 

package

 com.deitel.jhtp7.cap08;

 4
 5 

public class

 Tiempo1

 6 

{

 7  

private int

 hora;

    // 0 - 23

 8  

private int

 minuto;

// 0 - 59

 9  

private int

 segundo; 

// 0 - 59

 10 
 11  

// establece un nuevo valor de tiempo, usando la hora universal; asegura que 

 12  

// los datos sean consistentes, al establecer los valores inválidos a cero

 13  

public void

 establecerTiempo( 

int

 h, 

int

 m, 

int

 s )

 14  

{

 15  

 

hora = ( ( h >= 

0

 && h < 

24

 ) ? h : 

0

 );

// valida la hora

 16  

 

minuto = ( ( m >= 

0

 && m <

 60

 ) ? m :

 0

 );

// valida el minuto

 17  

 

segundo = ( ( s >= 

0

 && s < 

60

 ) ? s : 

0

 );

 // valida el segundo

 18  

}

// fin del método establecerTiempo

 19
 20  

// convierte a objeto String en formato de hora universal (HH:MM:SS)

 21  

public

 String aStringUniversal()

 22  

{

 23  

 

return

 String.format( 

"%02d:%02d:%02d"

, hora, minuto, segundo );

 24  

}

// fin del método aStringUniversal

 25
 26  

// convierte a objeto String en formato de hora estándar (H:MM:SS AM or PM)

 27  

public

 String toString()

 28  

{

 29  

 

return

 String.format( 

"%d:%02d:%02d %s"

,

 

30    

( ( hora == 

0

 || hora ==

 12 

) ? 

12

 : hora % 

12

 ),

 

31    

minuto, segundo, ( hora < 

12

?

"AM"

 : 

"PM"

 ) );

 32  

}

// fin del método toString

 33 

}

// fin de la clase Tiempo1

Figura 8.18

  |  Empaquetamiento de la clase 

Tiempo1

 para reutilizarla.

08_MAQ_CAP_08.indd356

4/19/081:23:57AM