Encapsulamiento

Iniciado por m@o_614, 4 Diciembre 2014, 16:08 PM

0 Miembros y 1 Visitante están viendo este tema.

m@o_614

Saludos

Tengo el siguiente código que es una práctica que trata de la implementación de una clase MiFecha, la cual siempre mantenga una fecha válida en sus atributos. El código que tengo es el siguiente:

Código (java) [Seleccionar]
class MiFecha{
final int CERO = 0;
final int ENERO = 1;
final int FEBRERO = 2;
final int MARZO = 3;
final int ABRIL = 4;
final int MAYO = 5;
final int JUNIO = 6;
final int JULIO = 7;
final int AGOSTO = 8;
final int SEPTIEMBRE = 9;
final int OCTUBRE = 10;
final int NOVIEMBRE = 11;
final int DICIEMBRE = 12;

private int dia;
private int mes;
private int año;

MiFecha()
{
dia =;
mes =;
año =;
}

private boolean esBisiesto(int año)
{
boolean bisiesto = false;
if(((año % 4) == CERO &&((año % 100) != CERO)) && ((año % 400) == CERO))
       bisiesto = true;
return bisiesto;
}

private boolean verificaDia(int dia)
{
boolean fechaValida = false;
switch(mes)
{
    case ENERO:
    case MARZO:
    case MAYO:
    case JULIO:
    case AGOSTO:
    case OCTUBRE:
    case DICIEMBRE:
       if(dia >= 1 && dia <= 31)
          fechaValida = true;
       break;
    case ABRIL:
    case JUNIO:
    case SEPTIEMBRE:
    case NOVIEMBRE:
       if(dia >= 1 && dia <= 30)
          fechaValida = true;
       break;
    case FEBRERO:
       if(esBisiesto(año))
       {
       if(dia >= 1 && dia <= 29)
          fechaValida = true;
       }
       else
       {
       if(dia >= 1 && dia <= 28)
          fechaValida = true;
       }
       break;
}
return fechaValida;
}

public int dameDia()
{
return dia;
}

public int dameMes()
{
return mes;
}

public int dameAnio()
{
return año;
}

public boolean fijaDia(int diax)
{
dia = diax;
return true;
}

public boolean fijaMes(int mesx)
{
mes = mesx;
return true;
}

public boolean fijaAnio(int aniox)
{
año = aniox;
return true;
}
}

public class Encapsulamiento {

public static void main(String[] args) {
MiFecha fecha = new MiFecha();
fecha.fijaDia(31);
fecha.fijaMes(11);
fecha.fijaAnio(2014);
System.out.println("DIA: "+fecha.dameDia());
System.out.println("MES: "+fecha.dameMes());
System.out.println("año: "+fecha.dameAnio());
}
}


en el código utilizo los métodos fijaDia, fijaMes y fijaAnio para asignar el número de día, de mes y de año. El problema es que el código tiene algunos requerimientos un poco extraños y que no comprendo como por ejemplo me dice:

Inicializar todos los atributos(dia,mes,año) con datos válidos por medio de un constructor sin parámetros. Y después me dice:

Codificar en el ámbito del método main lo siguiente:

a) Declaración de la variable de instancia de tipo MiFecha e instanciación.
b) Definición de todos los atributos del objeto instanciado mediante sus tres métodos de interfaz.

Entonces no se cómo declarar el constructor, si en los métodos fija ya estoy inicializando los atributos

de antemano gracias

Chuidiang

Imagínate que en el main() no llamas a los métodos fija y quieres que los campos de MiFecha tengan un valor válido.

Se bueno.