You are on page 1of 4

Clase Fecha en Java

Crear una Clase Fecha en Java. La clase tendr tres atributos privados dia, mes y
ao de tipo int. La clase contendr los siguientes mtodos:
Constructor por defecto.
Constructor con tres parmetros para crear objetos con valores iniciales.
Mtodos set y get para asignar y obtener los valores de los atributos de la clase.
Mtodo fechaCorrecta() que comprueba si la fecha es correcta. Devuelve un valor de
tipo boolean indicando si la fecha es correcta o no. Este mtodo a su vez utilizar un
mtodo privado de la clase llamado esBisiesto que calcula si el ao es o no bisiesto.
El mtodo esBisiesto devuelve true si el ao es bisiesto y false si no lo es.
Mtodo diaSiguiente() que cambia la fecha actual por la del da siguiente. El objeto
de la clase Fecha al que se le aplique este mtodo deber quedar siempre en un
estado consistente, es decir, la nueva fecha deber ser correcta.
Modificar el mtodo toString() heredado de Object para mostrar las fechas de la
forma dd-mm-aaaa. El da y el mes se deben mostrar con dos cifras. Si el dia o el
mes tienen solo una cifra se escribir un cero delante. Por ejemplo si la fecha es
dia=1, mes=6, ao= 2015 la fecha que se mostrar ser: 01-06-2015
Escribe un programa para probar la clase Fecha. El mtodo diaSiguiete() prubalo
dentro de un bucle que imprima la fecha durante cada iteracin del bucle.
Solucin:
//Clase Fecha Java
public class Fecha {

private int dia;


private int mes;
private int ao;

//Constructor por defecto


public Fecha() {
}

//Constructor con parmetros


public Fecha(int dia, int mes, int ao) {
this.dia = dia;
this.mes = mes;
this.ao = ao;
}

//setters y getters
public void setDia(int d) {
dia = d;
}
public void setMes(int m) {
mes = m;
}
public void setAo(int a) {
ao = a;
}
public int getDia() {
return dia;
}
public int getMes() {
return mes;
}
public int getAo() {
return ao;
}

//Mtodo para comprobar si la fecha es correcta


public boolean fechaCorrecta() {
boolean diaCorrecto, mesCorrecto, aoCorrecto;
aoCorrecto = ao > 0;
mesCorrecto = mes >= 1 && mes <= 12;
switch (mes) {
case 2:
if (esBisiesto()) {
diaCorrecto = dia >= 1 && dia <= 29;
} else {
diaCorrecto = dia >= 1 && dia <= 28;
}
break;
case 4:
case 6:
case 9:
case 11:
diaCorrecto = dia >= 1 && dia <= 30;
break;
default:
diaCorrecto = dia >= 1 && dia <= 31;
}
return diaCorrecto && mesCorrecto && aoCorrecto;
}

//Mtodo privado para comprobar si el ao es bisiesto


//Este mtodo lo utiliza el mtodo fechaCorrecta
private boolean esBisiesto() {
return (ao % 4 == 0 && ao % 100 != 0 || ao % 400 == 0);
}

//Mtodo que modifica la fecha cambindola por la del da siguiente


public void diaSiguiente() {
dia++;
if (!fechaCorrecta()) {
dia = 1;
mes++;
if (!fechaCorrecta()) {
mes = 1;
ao++;
}

}
}

//Mtodo toString para mostrar la fecha


@Override
public String toString() {
StringBuilder sb = new StringBuilder();
if (dia < 10) {
sb.append("0");
}
sb.append(dia);
sb.append("-");
if (mes < 10) {
sb.append("0");
}
sb.append(mes);
sb.append("-");
sb.append(ao);
return sb.toString();
}
} //Fin de la clase Fecha

Un programa para probar la clase Fecha podra ser este:

public class ProyectoFecha {

public static void main(String[] args) {


Scanner sc = new Scanner(System.in);
int d, m, a;

//Se pide por teclado el dia, mes y ao


System.out.println("Introduce fecha: ");
System.out.print("dia: ");
d = sc.nextInt();
System.out.print("mes: ");
m = sc.nextInt();
System.out.print("ao: ");
a = sc.nextInt();

//Se crea un objeto Fecha utilizando el consructor con parmetros


Fecha fecha = new Fecha(d,m,a);

if (fecha.fechaCorrecta()) { //si la fecha es correcta

//Se muestra utilizando el mtodo toString()


System.out.println("Fecha introducida: " + fecha);

//Se muestran los 10 das siguientes utilizando el mtodo diaSiguiente()


System.out.println("Los 10 das siguientes son:");
for (int i = 1; i <= 10; i++) {
fecha.diaSiguiente();
System.out.println(fecha);
}

} else { //Si la fecha no es correcta


System.out.println("Fecha no valida");
}
}
}

Ejemplo de ejecucin del programa:

Introduce fecha:
dia: 28
mes: 12
ao: 2015
Fecha introducida: 28-12-2015
Los 10 das siguientes son:
29-12-2015
30-12-2015
31-12-2015
01-01-2016
02-01-2016
03-01-2016
04-01-2016
05-01-2016
06-01-2016
07-01-2016

You might also like