Beruflich Dokumente
Kultur Dokumente
Actividades 08
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
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
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
PruebaTiempo1.java
//Objeto Tiempo1 utilizado en una aplicacin
public class PruebaTiempo1
{
public static void main( String[] args )
{
ProfesorJava 2011
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
}
//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
Perro.java
//Ilustra el control de acceso a los miembros de la clase
public class Perro
{
private int tamao;
private String nombre;
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
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
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
this.minuto = minuto;
//establece el minuto del objeto "this"
this.segundo = segundo; //establece el segundo del objeto "this"
//fin del constructor 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
{
this( h, 0, 0 );
}
ProfesorJava 2011
10
{
}
PruebaTiempo2.java
//Uso de constructores sobrecargados para inicializar objetos Tiempo2
public class PruebaTiempo2
{
public static void main( String args[] )
{
ProfesorJava 2011
11
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(
"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
//1-12
//1-31 con base en el mes
//cualquier ao
System.out.printf(
"Constructor de objeto Fecha para la fecha %s\n", this );
//fin del constructor Fecha
ProfesorJava 2011
13
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
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
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
ProfesorJava 2011
15
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" );
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
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
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
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
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
}
//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
ProfesorJava 2011
20
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
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
{
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";
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
ProfesorJava 2011
22