Sunteți pe pagina 1din 8

FISI UNMSM Ingeniera de Software Algortmica II Programacin II 2017 2 1

Prctica de Laboratorio 03

ACTIVIDAD 01

Complete lo desarrollado en la clase de teora para agregarle las funcionalidades faltantes al resto de botones del
proyecto Operaciones Racionales. Recuerde que se implement el cdigo del botn sumar, que suma dos nmeros
racionales y lo muestra.

ACTIVIDAD 02

Crea el proyecto ManejoDePersonal.

En el proyecto crea la clase Fecha.java:

//*********************************************************************************************
// Declaracin de la clase Fecha.

public class Fecha


{
private int mes; // 1-12
private int dia; // 1-31 con base en el mes
private int anio; // cualquier ao

private static final int[] diasPorMes = // das en cada mes


{ 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

// 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 elDia, int elMes, int elAnio )
{
mes = comprobarMes( elMes ); // valida el mes
anio = elAnio; // pudo validar el ao
dia = comprobarDia( elDia ); // valida el da
} // fin del constructor de 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 es invlido
throw new IllegalArgumentException ( "el mes debe ser 1 a 12");
} // 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 )
{
// 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 && ( anio % 400 == 0 ||
( anio % 4 == 0 && anio % 100 != 0 ) ) )
return diaPrueba;

throw new IllegalArgumentException(


"dia fuera de rango para el mes y anio especificados" );
} // fin del mtodo comprobarDia

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


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

Profesor: Juan Gamarra Moreno


FISI UNMSM Ingeniera de Software Algortmica II Programacin II 2017 2 2

//*********************************************************************************************

En el proyecto crea la clase Empleado.java donde hace referencia a objetos de la clase Fecha:

//*********************************************************************************************
// 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 de Empleado

// convierte Empleado a formato String


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

En el proyecto crea la clase PruebaEmpleado.java, aqu se demuestra la composicin:

//*********************************************************************************************
public class PruebaEmpleado
{
public static void main( String[] args )
{
Empleado[] Personal = new Empleado[10];

Fecha nacimiento00 = new Fecha( 24, 7, 1980 );


Fecha contratacion00 = new Fecha( 12, 3, 2009 );
Empleado empleado00 = new Empleado( "Jos", "Fernandez",
nacimiento00, contratacion00 );
Personal[0] = empleado00;

Fecha nacimiento01 = new Fecha( 14, 2, 1975 );


Fecha contratacion01 = new Fecha( 15, 2, 2000 );
Empleado empleado01 = new Empleado( "Carlos", "Castro",
nacimiento01, contratacion01 );
Personal[1] = empleado01;

for(int i=0; i < 2; i++)


System.out.println( Personal[i] );
} // fin de main
} // fin de la clase PruebaEmpleado
//*********************************************************************************************

Crea la clase IngresoPersonalJFrame (recuerda que sirve para crear una ventana GUI) que debe permitir el ingreso de
10 empleados como mximo, cada vez que se ingrese un Empleado debe actualizar la totalidad de lo ingresado en un
objeto de la clase JTextArea (rea de Texto).

Ejemplo despus de crear el primer Empleado:

Profesor: Juan Gamarra Moreno


FISI UNMSM Ingeniera de Software Algortmica II Programacin II 2017 2 3

Luego de crear el segundo empleado:

Profesor: Juan Gamarra Moreno


FISI UNMSM Ingeniera de Software Algortmica II Programacin II 2017 2 4

ACTIVIDAD 03

Crea el proyecto: RelojMarcador.

En el proyecto implementar la clase Tiempo con el cdigo que se muestra a continuacin:

//*********************************************************************************************
// Tiempo.java
// Declaracin de la clase Tiempo con constructores sobrecargados.

public class Tiempo


{
private int hora; // 0 - 23
private int minuto; // 0 - 59
private int segundo; // 0 - 59

// Constructor de Tiempo sin argumentos:


// inicializa cada variable de instancia a cero
public Tiempo()
{
this( 0, 0, 0 ); // invoca al constructor de Tiempo con tres argumentos
} // fin del constructor de Tiempo sin argumentos

// Constructor de Tiempo: se suministra hora, minuto y segundo con valor predeterminado de 0


public Tiempo( int h )
{
this( h, 0, 0 ); // invoca al constructor de Tiempo con tres argumentos
} // fin del constructor de Tiempo con un argumento

// Constructor de Tiempo: se suministran hora y minuto, segundo con valor predeterminado de 0


public Tiempo( int h, int m )
{
this( h, m, 0 ); // invoca al constructor de Tiempo con tres argumentos
} // fin del constructor de Tiempo con dos argumentos

// Constructor de Tiempo: se suministran hora, minuto y segundo


public Tiempo( int h, int m, int s )
{
establecerTiempo( h, m, s ); // invoca a establecerTiempo para validar el tiempo
} // fin del constructor de Tiempo con tres argumentos

// Constructor de Tiempo: se suministra otro objeto Tiempo


public Tiempo( Tiempo tiempo )
{
// invoca al constructor de Tiempo con tres argumentos
this( tiempo.obtenerHora(), tiempo.obtenerMinuto(), tiempo.obtenerSegundo() );
} // fin del constructor de Tiempo con un objeto Tiempo como argumento

// Mtodos "establecer"
// establece un nuevo valor de tiempo usando la hora universal;
// valida los datos
public void establecerTiempo( int h, int m, int s )
{
establecerHora( h ); // establece la hora
establecerMinuto( m ); // establece el minuto
establecerSegundo( s ); // establece el segundo
} // fin del mtodo establecerTiempo

// valida y establece la hora


public void establecerHora( int h )
{
if ( h >= 0 && h < 24 )
hora = h;
else
throw new IllegalArgumentException( "hora debe ser de 0 a 23" );
} // fin del mtodo establecerHora

// valida y establece el minuto


public void establecerMinuto( int m )
{
Profesor: Juan Gamarra Moreno
FISI UNMSM Ingeniera de Software Algortmica II Programacin II 2017 2 5

if ( m >= 0 && m < 60 )


minuto = m;
else
throw new IllegalArgumentException( "minuto debe ser de 0 a 59");
} // fin del mtodo establecerMinuto

// valida y establece el segundo


public void establecerSegundo( int s )
{
if ( s >= 0 && s < 60 )
segundo = ( ( s >= 0 && s < 60 ) ? s : 0 );
else
throw new IllegalArgumentException( "segundo debe ser de 0 a 59");
} // fin del mtodo establecerSegundo

// Mtodos "obtener"
// obtiene el valor de la hora
public int obtenerHora()
{
return hora;
} // fin del mtodo obtenerHora

// obtiene el valor del minuto


public int obtenerMinuto()
{
return minuto;
} // fin del mtodo obtenerMinuto

// obtiene el valor del segundo


public int obtenerSegundo()
{
return segundo;
} // fin del mtodo obtenerSegundo

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


public String aStringUniversal()
{
return String.format(
"%02d:%02d:%02d", obtenerHora(), obtenerMinuto(), obtenerSegundo() );
} // fin del mtodo aStringUniversal

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


public String toString()
{
return String.format( "%d:%02d:%02d %s",
( (obtenerHora() == 0 || obtenerHora() == 12) ? 12 : obtenerHora() % 12 ),
obtenerMinuto(), obtenerSegundo(), ( obtenerHora() < 12 ? "AM" : "PM" ) );
} // fin del mtodo toString
} // fin de la clase Tiempo
//*********************************************************************************************

A continuacin lea el siguiente artculo:

Obtener la hora en Java

Para obtener la hora del sistema, Java nos proporciona la clase Calendar. Mediante dicha clase podremos obtener
de una forma separada cada uno de los valores que componen una hora. Entendiendo como hora los segundos,
minutos y hora.

Lo primero que tendremos que hacer ser instanciar la clase Java (java.util.Calendar);. Para ello podemos hacerlo de
dos formas. La primera consiste en obtener una instancia directamente de Calendar:

Calendar calendario = Calendar.getInstance();

La otra es instanciar la clase GregorianCalendar. Lo cual se hara mediante la siguiente lnea de cdigo:

Profesor: Juan Gamarra Moreno


FISI UNMSM Ingeniera de Software Algortmica II Programacin II 2017 2 6

Calendar calendario = new GregorianCalendar();

GregorianCalendar es el formato de calendario soportado por una gran parte del mundo. El cual es una mezcla del
calendario Juliano y Gregoriano. Dicho calendario fue instituido el 15 de octubre de 1582.

Veamos, que en ambos casos vamos a trabajar con el mismo calendario.

Lo siguiente ser declarar las variables que van a almacenar la hora y fecha. Consecuentemente tendremos las
siguientes variables:

int hora, minutos, segundos, dia, mes, anio;

Ahora calcularemos su valor. En la clase Calendar existe un mtodo get(int valor). Dicho mtodo recibe un entero, el
cual refleja el valor del calendario que queremos obtener: la hora, el da, los minutos,....

Como la idea es que no sepamos que entero est asociado a que valor, la clase Calendar nos proporciona una serie
de constantes que nos ayudarn a encontrar dichos valores. As tendremos las siguientes asociaciones:

Calendar.HOUR_OF_DAY, es la hora del da en formato 24 horas


Calendar.HOUR, el la hora en formato 12 horas
Calendar.MINUTE, representa a los minutos
Calendar.SECOND, sern los segundos
Calendar.DAY_OF_MONTH, ser el da
Calendar.MONTH, ser el mes donde a Enero le corresponde 0. Febrero a 1. Etc.
Calendar.YEAR, ser el ao

Una vez que conocemos esto, solo nos queda aplicar dichos valores al mtodo get y asociarlos a las variables.
Veamos el cdigo:

hora =calendario.get(Calendar.HOUR_OF_DAY);
minutos = calendario.get(Calendar.MINUTE);
segundos = calendario.get(Calendar.SECOND);
dia = calendario.get(Calendar.DAY_OF_MONTH);//Enero es 0
mes = calendario.get(Calendar.MONTH);
anio = calendario.get(Calendar.YEAR);

Solo nos quedar volcar los datos por pantalla.


System.out.println("hora " + hora);
System.out.println("minutos " + minutos);
System.out.println("segundos " + segundos);
System.out.println("da " + dia);
System.out.println("mes " + mes+1);
System.out.println("ao " + anio);

Ahora crea la clase Empleado que debe tener los siguientes atributos:

private String codigo;


private String primerNombre;
private String apellidoPaterno;
private Fecha fechaNacimiento;
private Fecha fechaContratacion;

Profesor: Juan Gamarra Moreno


FISI UNMSM Ingeniera de Software Algortmica II Programacin II 2017 2 7

Note que los dos ltimos atributos son de la clase Fecha desarrollada en la actividad anterior.

Crea la clase RegistroDeEntrada.java que debe tener los siguientes atributos

private String codigoEmpleado;


private Fecha fechaRegistro;
private Tiempo tiempoRegistro;//hora, minuto y segundo

Para la interfaz grfica de usuario (GUI) debe crear la clase MarcarEntradaJFrame, que debe tener la siguiente forma:

El botn Cargar Empleados debe crear y guardar los datos de 10 objetos (empleados) de la clase Empleado que
creo en esta actividad, luego de cargar el botn se debe desactivar (revise en la ventana de propiedades el atributo
enabled). El cdigo de empleado debe tener el formato: 001, 002,..

Para registrar la entrada (hora de la computadora) el usuario debe escribir el cdigo en el campo correspondiente y
hacer clic en el botn Registrar Entrada, luego de registrar la entrada se debe limpiar el campo automticamente
para poder ingresar otro cdigo.

Se debe almacenar en un ArrayList todos los objetos registros de entrada de la clase RegistroDeEntrada.

Profesor: Juan Gamarra Moreno


FISI UNMSM Ingeniera de Software Algortmica II Programacin II 2017 2 8

Cada vez que se ingrese un nuevo registro, el rea de texto de la parte inferior debe quedar actualizada con la
visualizacin de todos los registros.

INSTRUCCIONES FINALES

Comprima los tres proyectos en slo archivo y sbalo a la plataforma de tareas.

Profesor: Juan Gamarra Moreno

S-ar putea să vă placă și