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