Sei sulla pagina 1di 22

Manual de

Actividades 08

Autor: Ral Oramas Bustillos


Curso: PJ100 Curso Programador Java
Versin: 1.0.0
Fecha: 2011

Descargo de responsabilidad
La informacin contenida en este documento se encuentra bajo una licencia Creative Commons Atribucin-No
Comercial 3.0 Unported. Este documento contiene las actividades de apoyo para el curso PJ100 Curso
Programador Java.

Titulo

Manual de actividades 08

Autor

Ral Oramas Bustillos

Email

r_oramas@hotmail.com

Versin

1.0.0

Fecha

2011

Tabla de contenidos
Clases y objetos..................................................................................................................................................... 4
La clase Tiempo................................................................................................................................................. 5
Control de acceso a los miembros, versin 1.0................................................................................................. 6
Control de acceso a los miembros, versin 1.1................................................................................................. 7
Referencias a los miembros del objeto actual mediante this.............................................................................8
Constructores sobrecargados............................................................................................................................ 9
Composicin.................................................................................................................................................... 12
Enumeraciones................................................................................................................................................ 15
Miembros de clase static................................................................................................................................. 16
Declaracin import static................................................................................................................................. 18
Variables de instancia final.............................................................................................................................. 19
Creacin de paquetes...................................................................................................................................... 20
Acceso a paquetes.......................................................................................................................................... 21

Clases y objetos
Contenido:
La clase Tiempo...................................................................................................................................................... 5
Control de acceso a los miembros, versin 1.0...................................................................................................... 6
Control de acceso a los miembros, versin 1.1...................................................................................................... 7
Referencias a los miembros del objeto actual mediante this..................................................................................8
Constructores sobrecargados................................................................................................................................. 9
Composicin......................................................................................................................................................... 12
Enumeraciones..................................................................................................................................................... 15
Miembros de clase static...................................................................................................................................... 16
Declaracin import static....................................................................................................................................... 18
Variables de instancia final................................................................................................................................... 19
Creacin de paquetes........................................................................................................................................... 20
Acceso a paquetes............................................................................................................................................... 21

PJ100, Manual de actividades 08 Clases y objetos

La clase Tiempo
La clase Tiempo1 representa la hora del da. Cuenta con tres variables de instancia y tres mtodos.

Tiempo1.java
//Mantiene la hora en formato de 24 horas.
public class Tiempo1
{
//variables de instancia
private int hora;
//0-23
private int minuto; //0-59
private int segundo;
//0-59
//establece un nuevo valor de tiempo, usando la hora universal;
//asegura que los datos sean consistentes, al establecer ,los
//valores invlidos a cero
public void setTiempo( int h, int m, int s )
{
hora = ( ( h >= 0 && h < 24 ) ? h : 0 ); //valida la hora
minuto = ( ( m >= 0 && m < 60 ) ? m : 0 ); //valida el minuto
segundo = ( ( s >= 0 && s < 60 ) ? s : 0 ); //valida el segundo
}
//fin del mtodo setTiempo
//convierte a objeto String en formato de hora universal (HH:MM:SS)
public String aStringUniversal() {
return String.format( "%02d:%02d:%02d", hora, minuto, segundo );
}
//fin del mtodo aStringUniversal

//convierte a objeto String un formato de


//hora estndar (H:MM:SS AM/PM)
public String toString() {
return String.format( "%d:%02d:%02d %s",
( ( hora == 0 || hora == 12 ) ? 12 : hora % 12 ),
minuto , segundo,
( hora < 12 ? "AM" : "PM" )
);
}
//fin del mtodo toString
//fin de la clase Tiempo1

La clase de la aplicacin PruebaTiempo1 utiliza la clase Tiempo1.

PruebaTiempo1.java
//Objeto Tiempo1 utilizado en una aplicacin
public class PruebaTiempo1
{
public static void main( String[] args )
{

ProfesorJava 2011

PJ100, Manual de actividades 08 Clases y objetos

//Crea e inicializa un objeto Tiempo1


Tiempo1 tiempo = new Tiempo1();
//invoca al constructor default
//imprime representaciones de cadena del tiempo
System.out.print( "La hora universal inicial es: " );
System.out.println( tiempo.aStringUniversal() );
System.out.print( "La hora estndar inicial es: " );
System.out.println( tiempo.toString() );
System.out.println();
//imprime una lnea en blanco
//modifica los valores iniciales
tiempo.setTiempo( 13, 27, 6 );
System.out.print( "La hora universal ahora es: " );
System.out.println( tiempo.aStringUniversal() );
System.out.print( "La hora estndar ahora es: " );
System.out.println( tiempo.toString() );
System.out.println();
//imprime una lnea en blanco

//establece el tiempo con valores invlidos: imprime


//el tiempo actualizado
tiempo.setTiempo( 99, 99, 99 );
System.out.println( "Despus de intentar ajustes invlidos:" );
System.out.print( "La hora universal: " );
System.out.println( tiempo.aStringUniversal() );
System.out.print( "La hora estndar: " );
System.out.println( tiempo.toString() );
}
//fin del mtodo main
//fin de la clase PruebaTiempo1

Control de acceso a los miembros, versin 1.0


Los modificadores de acceso public y private controlan el acceso a las variables y mtodos de una clase.

Perro.java
//Ilustra el control de acceso a los miembros de la clase
public class Perro
{
public int tamao;
public String nombre;
public void ladrar()
{
if( tamao > 60 )
System.out.println( "Woof!! Woof!!" );
else if( tamao > 14 )
System.out.println( "Ruff!! Ruff!!" );
else
System.out.println( "Yip!! Yip!!" );

ProfesorJava 2011

PJ100, Manual de actividades 08 Clases y objetos

}
//fin del mtodo ladrar
//fin de la clase Perro

La aplicacin PruebaPerro utiliza a la clase Perro y accede directamente a las variables de instancia tamao y
nombre.

PruebaPerro.java
public class PruebaPerro
{
public static void main( String[] args )
{
Perro uno = new Perro();
uno.tamao = 70;
Perro dos = new Perro();
dos.tamao = 8;
Perro tres = new Perro();
dos.tamao = 35;

uno.ladrar();
dos.ladrar();
tres.ladrar();
}
//fin del mtodo main
//fin de la clase PruebaPerro

Control de acceso a los miembros, versin 1.1


Los modificadores de acceso public y private controlan el acceso a las variables y mtodos de una clase.

Perro.java
//Ilustra el control de acceso a los miembros de la clase
public class Perro
{
private int tamao;
private String nombre;

public void ladrar()


{
if( tamao > 60 )
System.out.println( "Woof!! Woof!!" );
else if( tamao > 14 )
System.out.println( "Ruff!! Ruff!!" );
else
System.out.println( "Yip!! Yip!!" );
}
//fin del mtodo ladrar
//fin de la clase Perro

La aplicacin PruebaPerro utiliza a la clase Perro y accede directamente a las variables de instancia tamao y
nombre. Pero como estas variables son privadas no son accesibles a la clase PruebaPerro.

ProfesorJava 2011

PJ100, Manual de actividades 08 Clases y objetos

PruebaPerro.java
//Los miembros private de la clase Perro no son accesibles
public class PruebaPerro
{
public static void main( String[] args )
{
Perro uno = new Perro();
uno.tamao = 70;
Perro dos = new Perro();
dos.tamao = 8;
Perro tres = new Perro();
dos.tamao = 35;

uno.ladrar();
dos.ladrar();
tres.ladrar();
}
//fin del mtodo main
//fin de la clase PruebaPerro

Referencias a los miembros del objeto actual mediante this


Uso implcito y explcito de this para hacer referencia a los miembros de un objeto.

PruebaThis.java
//Uso implcito y explcito de this para hacer referencia a los miembros
//de un objeto.
public class PruebaThis
{
public static void main( String[] args )
{
TiempoSimple tiempo = new TiempoSimple( 15, 30, 19 );
System.out.println( tiempo.crearString() );
}
//fin del mtodo main
}
//fin de la clase PruebaThis
//la clase TiempoSimple demuestra la referencia "this"
class TiempoSimple
{
private int hora;
//0-23
private int minuto; //0-59
private int segundo;
//0-59
//si el constructor utiliza nombres de parmetros idnticos a
//los nombres de las variables de instancia, se requiere la
//referencia "this" para diferenciar unos nombres de otros
public TiempoSimple( int hora, int minuto, int segundo )
{
this.hora = hora;
//establece la hora del objeto "this"

ProfesorJava 2011

PJ100, Manual de actividades 08 Clases y objetos

this.minuto = minuto;
//establece el minuto del objeto "this"
this.segundo = segundo; //establece el segundo del objeto "this"
//fin del constructor TiempoSimple

//usa la referencia "this" explcita e implcita para


//llamar aStringUniversal
public String crearString()
{
return String.format( "%24s: %s\n%24s: %s",
"this.aStringUniversal()", this.aStringUniversal(),
"aStringUniversal()", aStringUniversal());
}
//fin del mtodo crearString

public String aStringUniversal()


{
//"this" no se requiere aqu para acceder a las
//variables de instancia,
//ya que el mtodo no tiene variables locales con los mismos
//nombres que las variables de instancia
return String.format( "%02d:%02d:%02d",
this.hora, this.minuto, this.segundo );
}
//fin del mtodo aStringUniversal
//fin de la clase TiempoSimple

Constructores sobrecargados
La clase Tiempo2 con constructores sobrecargados.

Tiempo2.java
//Declaracin de la clase Tiempo2 con constructores sobrecargados
public class Tiempo2
{
private int hora;
//0-23
private int minuto; //0-59
private int segundo;
//0-59
//Constructor de Tiempo2 sin argumentos: inicializa cada
//variable de instancia a cero; asegura que los
//objetos Tiempo2 empiecen en un estado consistente
public Tiempo2()
{
this( 0, 0, 0 );
//invoca al constructor de
//Tiempo2 con tres argumentos
}
//fin del constructor con cero argumentos
//Constructor de Tiempo2: se suministran hora y minuto,
//segundo con valor predeterminado de 0
public Tiempo2( int h )

ProfesorJava 2011

PJ100, Manual de actividades 08 Clases y objetos

{
this( h, 0, 0 );
}

//invoca al constructor de Tiempo2


//con tres argumentos
//fin del constructor de Tiempo2 con un argumento

//Constructor de Tiempo2: se suministran hora y minuto,


//segundo con valor predeterminado de 0
public Tiempo2( int h, int m )
{
this( h, m, 0 );
//invoca al constructor de Tiempo2
//con tres argumentos
}
//fin del constructor de Tiempo2 con dos argumentos
//Constructor de Tiempo2: se suministran hora, minuto y segundo
public Tiempo2( int h, int m, int s )
{
setTiempo( h, m, s );
//invoca a setTiempo para
//validar el tiempo
}
//fin del constructor Tiempo2 con tres argumentos
//Constructor de Tiempo2; se suministra otro objeto Tiempo2
public Tiempo2( Tiempo2 tiempo )
{
//invoca el constructor Tiempo2 con tres argumentos
this( tiempo.getHora(), tiempo.getMinuto(), tiempo.getSegundo() );
}
//fin del constructor Tiempo2 con un objeto Tiempo2 como argumento
//establece un nuevo valor de tiempo usando la hora universal;
//asegura que los datos sean consistentes, estableciendo
//los valores invlidos en cero
public void setTiempo( int h, int m, int s )
{
setHora( h );
//establece la hora
setMinuto( m ); //establece el minuto
setSegundo( s );
//estable el segundo
}
//fin del mtodo setTiempo
//valida y establecer la hora
public void setHora( int h )
{
hora = ( ( h >= 0 && h < 24) ? h : 0 );
}
//fin del mtodo setHora
//valida y establece el minuto
public void setMinuto( int m )
{
minuto = ( ( m >= 0 && m < 60) ? m : 0 );
}
//fin del mtodo setHora
//valida y establece el segundo
public void setSegundo( int s )

ProfesorJava 2011

10

PJ100, Manual de actividades 08 Clases y objetos

{
}

segundo = ( ( s >= 0 && s < 60) ? s : 0 );


//fin del mtodo setHora

//obtiene el valor de la hora


public int getHora()
{
return hora;
}
//fin del mtodo getHora
//obtiene el valor del minuto
public int getMinuto()
{
return minuto;
}
//fin del mtodo getMinuto
//obtiene el valor del segundo
public int getSegundo()
{
return segundo;
}
//fin del mtodo getSegundo
//convierte a String en formato de hora universal (HH:MM:SS)
public String aStringUniversal()
{
//format es equivalente a printf
return String.format(
"%02d:%02d:%02d", getHora(), getMinuto(), getSegundo()
);
}
//fin del mtodo aStringUniversal

//convierte a String en formato de hora estndar (H:MM:SS AM/PM)


public String toString()
{
return String.format( "%d:%02d:%02d %s",
( ( getHora() == 0 || getHora() == 12 ) ?
12 : getHora() % 12 ),
getMinuto(), getSegundo(), ( getHora() < 12 ? "AM" : "PM" )
);
}
//fin del mtodo toString
//fin de la clase Tiempo2

Uso de constructores sobrecargados para inicializar objetos Tiempo2.

PruebaTiempo2.java
//Uso de constructores sobrecargados para inicializar objetos Tiempo2
public class PruebaTiempo2
{
public static void main( String args[] )
{

ProfesorJava 2011

11

PJ100, Manual de actividades 08 Clases y objetos

Tiempo2
Tiempo2
Tiempo2
Tiempo2
Tiempo2
Tiempo2

t1
t2
t3
t4
t5
t6

=
=
=
=
=
=

new
new
new
new
new
new

12

Tiempo2();
//00:00:00
Tiempo2( 2 );
//02:00:00
Tiempo2( 21, 34 );
//21:34:00
Tiempo2( 12, 25, 42 ); //12:25:42
Tiempo2( 27, 74, 99 ); //00:00:00
Tiempo2( t4 );
//12:25:42

System.out.println( "Se construyo con:" );


System.out.println( "t1 con argumento predeterminados" );
System.out.printf( "*** %s\n", t1.aStringUniversal() );
System.out.printf( "*** %s\n", t1.toString() );
System.out.println(
"t2: se especifco hora; minuto y segundo predeterminados" );
System.out.printf( "*** %s\n", t2.aStringUniversal() );
System.out.printf( "*** %s\n", t2.toString() );
System.out.println(
"t3: se especificaron hora y minuto; segundo
predeterminados" );
System.out.printf( "*** %s\n", t3.aStringUniversal() );
System.out.printf( "*** %s\n", t3.toString() );
System.out.println(
"t4: se especificaron hora, minuto y segundo" );
System.out.printf( "*** %s\n", t4.aStringUniversal() );
System.out.printf( "*** %s\n", t4.toString() );
System.out.println(
"t5: se especificaron todos los valores invlidos" );
System.out.printf( "*** %s\n", t5.aStringUniversal() );
System.out.printf( "*** %s\n", t5.toString() );

System.out.println(
"t6: se especifico el objeto t4 de Tiempo2" );
System.out.printf( "*** %s\n", t6.aStringUniversal() );
System.out.printf( "*** %s\n", t6.toString() );
}
//fin del mtodo main
//fin de la clase PruebaTiempo2

Composicin
Una clase puede tener referencias a objetos de otras clases como miembros. A dicha capacidad se le conoce
como composicin y algunas veces como relacin tiene un.

Fecha.java
//Declaracin de la clase Fecha
public class Fecha
{

ProfesorJava 2011

PJ100, Manual de actividades 08 Clases y objetos

private int mes;


private int dia;
private int ao;

//1-12
//1-31 con base en el mes
//cualquier ao

//constructor: llama a comprobarMes para confirmar el valor apropiado


//para el mes; llama a comprobarDia para confirmar el valor apropiado
//para el da
public Fecha( int elMes, int elDia, int elAo )
{
mes = comprobarMes( elMes );
//valida el mes
ao = elAo;
//pudo validar el ao
dia = comprobarDia( elDia );
//valida el da

System.out.printf(
"Constructor de objeto Fecha para la fecha %s\n", this );
//fin del constructor Fecha

//mtodo utilitario para confirmar el valor apropiado del mes


private int comprobarMes( int mesPrueba )
{
if( mesPrueba > 0 && mesPrueba <=12 )
//valida el mes
return mesPrueba;
else
//mes invlido
{
System.out.printf
( "Mes invalido (%d) se estableci en 1.", mesPrueba );
return 1;
//mantiene el objeto en estado consistente
}
//fin del else
}
//fin del mtodo comprobarMes
//mtodo utilitario para confirmar el valor apropiado del da,
//con base en el mes y el ao
private int comprobarDia( int diaPrueba )
{
int diasPorMes[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
//comprueba si el da est dentro del rango para el mes
if( diaPrueba > 0 && diaPrueba <= diasPorMes[mes] )
return diaPrueba;
//comprueba si es ao bisiesto
if( mes == 2 && diaPrueba == 29 && ( ao % 400 == 0 ) ||
( ao % 4 == 0 && ao % 100 != 0 ) )
return diaPrueba;

System.out.printf( "Da invalido (%d) se estableci en 1.",


diaPrueba );
return 1;
//mantiene el objeto en un estado consistente
//fin del mtodo comprobarDia

//devuelve un objeto String de la forma mes/dia/ao

ProfesorJava 2011

13

PJ100, Manual de actividades 08 Clases y objetos

public String toString()


{
return String.format( "%d/%d/%d", mes, dia, ao );
}
//fin del mtodo toString
//fin de la clase Fecha

Clase Empleado con referencias a otros objetos.

Empleado.java
//Clase Empleado con referencias a otros objetos.
public class Empleado
{
private String primerNombre;
private String apellidoPaterno;
private Fecha fechaNacimiento;
private Fecha fechaContratacion;
//constructor para inicializar nombre, fecha de nacimiento y
//fecha de contratacin
public Empleado( String nombre, String apellido,
Fecha fechaDeNacimiento, Fecha fechaDeContratacion )
{
primerNombre = nombre;
apellidoPaterno = apellido;
fechaNacimiento = fechaDeNacimiento;
fechaContratacion = fechaDeContratacion;
}
//fin del constructor Empleado

//convierte Empleado a formato String


public String toString()
{
return String.format( "%s, %s Contratado: %s Cumpleaos: %s",
apellidoPaterno, primerNombre,
fechaContratacion, fechaNacimiento );
}
//fin del mtodo toString
//fin de la clase Empleado

Demostracin de la composicin.

PruebaEmpleado.java
//Demostracin de la composicin
public class PruebaEmpleado
{
public static void main( String[] args )
{
Fecha nacimiento = new Fecha( 7, 24, 1989 );
Fecha contratacion = new Fecha( 2, 12, 2008 );

ProfesorJava 2011

14

PJ100, Manual de actividades 08 Clases y objetos

Empleado empleado = new Empleado( "Profesor", "Java", nacimiento,


contratacion );

System.out.println( empleado );
}
//fin del mtodo main
//fin de la clase PruebaEmpleado

Enumeraciones
Declaracin del tipo enum con campos de instancia, constructor y mtodos.

Libro.java
//Declara un tipo enum con constructor y campos de instancia explcitos,
//junto con mtodos de acceso para estos campos
public enum Libro
{
//declara constantes de tipo enum
JAVA( "Aprenda a programar con Java", "2011" ),
NET( "Aprenda a programar con NET", "2011" ),
HTML( "Aprenda HTML", "2008" ),
PYTHON( "Aprenda Python", "2010" ),
PASCAL( "Aprenda Pascal", "1996" ),
PHP( "Aprende PHP", "2007" );
//campos de instancia
private final String titulo;
//titulo del libro
private final String aoCopyright; //ao de copyright
//constructor de enum
Libro( String tituloLibro, String ao )
{
titulo = tituloLibro;
aoCopyright = ao;
}
//fin del constructor Libro
//mtodo de acceso para el campo titulo
public String getTitulo()
{
return titulo;
}
//fin del mtodo getTitulo

//mtodo de acceso para el campo aoCopyright


public String getAoCopyright()
{
return aoCopyright;
}
//fin del mtodo getAoCopyRight
//fin de enum Libro

Prueba de un tipo enum.

ProfesorJava 2011

15

PJ100, Manual de actividades 08 Clases y objetos

PruebaEnum.java
//Prueba del tipo enum Libro
import java.util.EnumSet;
public class PruebaEnum
{
public static void main( String[] args )
{
System.out.println( "Todos los libros:\n" );
//imprime todos los libros en un enum Libro
for( Libro libro : Libro.values() )
System.out.printf( "%-10s%-45s%s\n", libro,
libro.getTitulo(), libro.getAoCopyright() );
System.out.println( "\nMostrar un rango de constantes enum:\n" );

//imprime los primeros cuatro libros


for( Libro libro : EnumSet.range( Libro.JAVA, Libro.PYTHON ) )
System.out.printf( "%-10s%-45s%s\n", libro,
libro.getTitulo(), libro.getAoCopyright() );
}
//fin del mtodo main
//fin de la clase PruebaEnum

Miembros de clase static


Variable static que se utiliza para mantener cuenta del nmero de objetos Empleados en la memoria.

Empleado.java
//Variable static que se utiliza para mantener una cuenta del
//nmero de objetos Empleado en la memoria
public class Empleado
{
private String primerNombre;
private String apellidoPaterno;
private static int cuenta = 0; //nmero de objetos en memoria
//inicializa empleado, suma 1 a la variable static cuenta e
//imprime objeto String que indica que se llam al constructor
public Empleado( String nombre, String apellido )
{
primerNombre = nombre;
apellidoPaterno = apellido;
cuenta++;
System.out.printf(
"Constructor de empleado: %s %s; cuenta = %d\n",
primerNombre, apellidoPaterno, cuenta );
}
//fin constructor Empleado

ProfesorJava 2011

16

PJ100, Manual de actividades 08 Clases y objetos

//resta 1 a la variable static cuando el recolector


//de basura llama a finalize para borrar el objeto;
//confirma que se llam a finalize
protected void finalize()
{
cuenta--;
//decrementa la variable static cuenta de empleados
System.out.printf(
"Finalizador de Empleado: %s %s; cuenta = %d\n",
primerNombre, apellidoPaterno, cuenta );
}
//fin del mtodo finalize
//obtiene el primer nombre
public String getPrimerNombre()
{
return primerNombre;
}
//fin del mtodo getPrimerNombre
//obtiene el apellido paterno
public String getApellidoPaterno()
{
return apellidoPaterno;
}
//fin del mtodo getApellidoPaterno

//mtodo static para obtener el valor de la variable static cuenta


public static int getCuenta()
{
return cuenta;
}
//fin del mtodo getCuenta
//fin de la clase Empleado

Demostracin de miembros static.

PruebaEmpleado.java
//Demostracin de miembros static
public class PruebaEmpleado
{
public static void main( String[] args )
{
//muestra que la cuenta es 0 antes de crear Empleados
System.out.printf( "Empleados antes de instanciar: %d\n",
Empleado.getCuenta() );
//crea dos empleados; la cuenta debe ser 2
Empleado e1 = new Empleado( "Juan", "Prez" );
Empleado e2 = new Empleado( "Juanita", "Rmirez" );
//muestra que la cuenta es 2 despus de crear dos Empleados
System.out.println( "\nEmpleados despus de instanciar:" );
System.out.printf( "mediante e1.getCuenta(): %d\n",
e1.getCuenta() );

ProfesorJava 2011

17

PJ100, Manual de actividades 08 Clases y objetos

System.out.printf( "mediante e2.getCuenta(): %d\n",


e2.getCuenta() );
System.out.printf( "mediante Empleado.getCuenta(): %d\n",
Empleado2.getCuenta() );
//obtiene los nombres de los Empleados
System.out.printf( "\nEmpleado 1: %s %s\nEmpleado 2: %s %s\n",
e1.getPrimerNombre(), e1.getApellidoPaterno(),
e2.getPrimerNombre(), e2.getApellidoPaterno() );
//en este ejemplo, slo hay una referencia a cada Empleado,
//por lo que las siguientes dos instrucciones hacen que la JVM
//marque a cada objeto Empleado mediante la recoleccin de basura
e1 = null;
e2 = null;
System.gc();

//pide que la recoleccin de


//basura se realice ahora

//muestra la cuenta de Empleados despus de llamar al recolector


//de basura; la cuenta a mostrar puede ser 0, 1, o 2 dependiendo
//de si el recolector de basura se ejecuta de inmediato, y
//del nmero de objetos Empleado recolectados
System.out.printf( "\nEmpleados despues de System.gc(): %d\n",
Empleado.getCuenta() );
}
//fin del mtodo main
//fin de la clase PruebaEmpleado

Declaracin import static


Importacin static de mtodos de Math.

PruebaStaticImport.java
//Uso de static import para importar mtodos static de la clase Math
import static java.lang.Math.*;
public class PruebaStaticImport
{
public static void main( String[] args )
{
System.out.printf( "sqrt( 900.0 ) = %.1f\n", sqrt( 900 ) );
System.out.printf( "ceil( -9.8 ) = %.1f\n", ceil( -9.8 ) );
System.out.printf( "log( E ) = %.1f\n", log( E ) );
System.out.printf( "cos( 0.0 ) = %.1f\n", cos( 0.0 ) );
}
//fin del mtodo main
}
//fin de la clase PruebaStaticImport

ProfesorJava 2011

18

PJ100, Manual de actividades 08 Clases y objetos

Variables de instancia final


Variable de instancia final en una clase.

Incremento.java
//Variable de instancia final en una clase.
public class Incremento
{
private int total = 0; //el total de todos los incrementos
private final int INCREMENTO;
//variable constante (sin inicializar)
//el constructor inicializa la variable de instancia final INCREMENTO
public Incremento( int valorIncremento )
{
INCREMENTO = valorIncremento;
}
//fin del constructor Incremento
//suma INCREMENTO al total
public void sumarIncrementoTotal()
{
total += INCREMENTO;
}
//fin del mtodo sumarIncrementoTotal

//devuelve la representacin String de los datos de


//un objeto Incremento
public String toString()
{
return String.format( "total = %d", total );
}
//fin del mtodo toString
//fin de la clase Incremento

Variable final inicializada con el argumento de un constructor

PruebaIncremento.java
//variable final inicializada en el argumento del constructor
public class PruebaIncremento
{
public static void main( String[] args )
{
Incremento valor = new Incremento( 5 );
System.out.printf( "Antes de incrementar: %s\n\n", valor );
for( int i = 1; i <=3; i++ )
{
valor.sumarIncrementoTotal();
System.out.printf( "Despus de incrementar %d: %s\n",
i, valor );

ProfesorJava 2011

19

PJ100, Manual de actividades 08 Clases y objetos

}
//fin de for
}
//fin del mtodo main
//fin de la clase PruebaIncremento

Creacin de paquetes
Empaquetamiento de la clase Tiempo1 para reutilizarla

Tiempo1.java
package com.simple;
//Mantiene la hora en formato de 24 horas.
public class Tiempo1
{
//variables de instancia
private int hora;
//0-23
private int minuto; //0-59
private int segundo;
//0-59
//establece un nuevo valor de tiempo, usando la hora universal;
//asegura que los datos sean consistentes, al establecer ,los
//valores invlidos a cero
public void setTiempo( int h, int m, int s )
{
hora = ( ( h >= 0 && h < 24 ) ? h : 0 ); //valida la hora
minuto = ( ( m >= 0 && m < 60 ) ? m : 0 ); //valida el minuto
segundo = ( ( s >= 0 && s < 60 ) ? s : 0 ); //valida el segundo
}
//fin del mtodo setTiempo
//convierte a objeto String en formato de hora universal (HH:MM:SS)
public String aStringUniversal() {
return String.format( "%02d:%02d:%02d", hora, minuto, segundo );
}
//fin del mtodo aStringUniversal

//convierte a objeto String un formato de


//hora estndar (H:MM:SS AM/PM)
public String toString() {
return String.format( "%d:%02d:%02d %s",
( ( hora == 0 || hora == 12 ) ? 12 : hora % 12 ),
minuto , segundo,
( hora < 12 ? "AM" : "PM" )
);
}
//fin del mtodo toString
//fin de la clase Tiempo1

Uso de un objeto Tiempo1 en una aplicacin.

ProfesorJava 2011

20

PJ100, Manual de actividades 08 Clases y objetos

21

PruebaTiempo1.java
//Objeto Tiempo1 utilizado en una aplicacin
import simple.com.Tiempo1; //importa la clase Tiempo1
public class PruebaTiempo1
{
public static void main( String[] args )
{
//Crea e inicializa un objeto Tiempo1
Tiempo1 tiempo = new Tiempo1();
//invoca al constructor default
//imprime representaciones de cadena del tiempo
System.out.print( "La hora universal inicial es: " );
System.out.println( tiempo.aStringUniversal() );
System.out.print( "La hora estndar inicial es: " );
System.out.println( tiempo.toString() );
System.out.println();
//imprime una lnea en blanco
//modifica los valores iniciales
tiempo.setTiempo( 13, 27, 6 );
System.out.print( "La hora universal ahora es: " );
System.out.println( tiempo.aStringUniversal() );
System.out.print( "La hora estndar ahora es: " );
System.out.println( tiempo.toString() );
System.out.println();
//imprime una lnea en blanco

//establece el tiempo con valores invlidos: imprime


//el tiempo actualizado
tiempo.setTiempo( 99, 99, 99 );
System.out.println( "Despus de intentar ajustes invlidos:" );
System.out.print( "La hora universal: " );
System.out.println( tiempo.aStringUniversal() );
System.out.print( "La hora estndar: " );
System.out.println( tiempo.toString() );
}
//fin del mtodo main
//fin de la clase PruebaTiempo1

Acceso a paquetes
Los miembros con acceso a nivel de paquete de una clase son accesibles para las dems clases en el mismo
paquete. Los miembros con acceso a nivel de paquete de una clase son accesibles para las dems clases en
el mismo paquete.

PruebaDatosPaquete.java
//Los miembros con acceso a nivel de paquete de una clase son accesibles
//para las dems clases en el mismo paquete.
public class PruebaDatosPaquete
{
public static void main( String[] args )

ProfesorJava 2011

PJ100, Manual de actividades 08 Clases y objetos

{
DatosPaquete datosPaquete = new DatosPaquete();
//imprime la representacin String de datosPaquete
System.out.printf( "Despus de instanciar:\n%s\n",
datosPaquete );
//modifica los datos con acceso a nivel de paquete en
//el objeto datosPaquete
datosPaquete.numero = 77;
datosPaquete.cadena = "Adis";

//imprime la representacin String de datosPaquete


System.out.printf( "Despus de modificar valores:\n%s\n",
datosPaquete );
}
//fin del mtodo main
//fin de la clase PruebaDatosPaquete

class DatosPaquete
{
int numero; //variable de instancia con acceso a nivel de paquete
String cadena; //variable de instancia con acceso a nivel de paquete
//constructor
public DatosPaquete()
{
numero = 0;
cadena = "Hola";
}
//fin del constructor DatosPaquete

//devuelve la representacin String del objeto DatosPaquete


public String toString()
{
return String.format( "nmero: %d; cadena: %s", numero, cadena );
}
//fin del mtodo toString
//fin de la clase DatosPaquete

ProfesorJava 2011

22

Potrebbero piacerti anche