Dudas de Programacion » Java » Java Básico

[DUDA] Clase "Fecha"

(5 posts)

Tags:

No tags yet.

  1. Hola, quiero que me ayuden a verificar si mi código está bien hecho;
    es un ejercicio donde se pide diseñar una clase llamada "Fecha" cuyos
    objetos deben gestionar información tipo dd/mm/aaaa. Los atributos han
    de ser inaccesibles desde el exterior (private), debe facilitar métodos
    constructores de objetos Fecha, debe facilitar un método que devuelva un
    String de la forma dd/mm/aaaa, debe facilitar la comparación de fechas
    (si son iguales o si una es mayor que otra) y debe facilitar un método
    que permita redefinir el valor de la fecha gestionada por un objeto Fecha.

    Mi code es:

    public class Fecha {
     
    private int dia;
    private int mes;
    private int año;
     
    private int dd/mm/aa;
     
    public int fecha() {
    return fecha;
    }
     
    public Fecha(int dia, int mes, int año) {  // Inicio del método constructor
    dia=dd;mes=mm;año=aaaa;
     
    if dia>0 {
    if dia<=31 {
    dia=dd;
     
    return(true);
     }
    }
     
    else {
    return(false);
    }
     
    if mes>0 {
    if mes<=12 {
    mes=mm;
     return(true);
     }
    }
     
    else {
    return(false);
    }
     
    if año>=1910 {
    if año<=2010 {
    año=aaaa
    return(true);
     }
    }
     
    else {
    return(false);
    }
     
    } // Fin del método constructor
     
    public int consultarDia() {
    return dia;
    }
     
    public int consultarMes() {
    return mes;
    }
     
    public int consultarAño() {
    return año;
    }
     
    public Fecha1(dia1,mes1,año1) {
    dia1=dd;mes1=mm;año1=aaaa
    }
     
    public Fecha2(dia2,mes2,año2) {
    dia2=dd;mes2=mm;año2=aaaa
    }
     
    Fecha Fecha1 = newFecha(dia1,mes1,año1),
          Fecha2 = newFecha(dia2,mes2,año2);
     
    /*
    * Comparar si Fecha1 es mayor que Fecha2
    */
     
    if (año1>año2) {
    return(true);
    }
     
    else {
    if(año1==año2) {
    if(mes1>mes2) {
    return(true);
      }
     }
    }
     
    if(mes1==mes2) {
    if(año1==año2) {
    if(dia1>dia2) {
    return(true);
      }
     }
    }
     
    else {
    return(false);
    }
     
    /*
    * Comparar si Fecha1 es igual a la Fecha2
    */
     
    if(año1==año2) {
    if(mes1==mes2) {
    if(dia1==dia2) {
    return(true);
      }
     }
    }
     
    else {
    return(false);
    }
    Posted 1 year ago #


  2. Buenas,

    Para empezar no se si en el ejercicio os permiten usar la clase Date de Java, si os permiten deberías de reutilizar muchos de esos métodos. after, before, etc.

    http://download.oracle.com/javase/1.6/docs/api/java/util/Date.html#after(java.util.Date)

    También podrías utilizar un parseador para darle el formato dd/MM/yyyy

    http://download.oracle.com/javase/1.6/docs/api/java/text/SimpleDateFormat.html

    En caso de no puedas usar la clase Date, vas bien encaminado, pero hay alguna cosa que tienes que controlar, por ejemplo no todos los meses tienen 31 días, por lo tanto no puedes aceptar el día 31 en todos los casos, tendrían que validar ese valor en función del mes.

    Para comprobar si dos fechas son iguales, deberías implementar el método equals(Object obj) que tienen todas las clases por defecto y adaptarlo a tus necesidades.

    Espero que te sirva,

    Un saludo

    Saludos
    Posted 1 year ago #
  3. Buenas otra vez,

    Hay bastantes fallos en ese código, no lo has compilado nunca? que usas para desarrollar? un IDE como Eclipse o un programa de texto?

    Cosas como:

    private int dd/mm/aa; (eso no es un entero válido)
     
    public int fecha() { (no existe el campo fecha en ningun sitio)
    return fecha;
    }

    Te las detectaría automáticamente un entorno de desarrollo como Eclipse o Netbeans, te recomiendo que uses alguna para empezar.

    Un saludo

    Posted 1 year ago #
  4. Si, en casa usaremos según nos dijeron Eclipse, en el Centro de Ingeniería usamos como un cmd (simbolo del sistema) donde poner todos los comandos.

    Y no nos dejan usar Date :(

    Posted 1 year ago #


  5. ¿Esto estaría bien? Mirad:

    public class Fecha {

    private int dia;
    private int mes;
    private int anio;

    public Fecha(int _dia, int _mes, _anio) {
    dia=_dia;
    mes=_mes;
    año=_anio;
    }

    public int consultaDia() {
    return dia;
    }

    public int consultaMes() {
    return mes;
    }

    public int consultaAnio() {
    return anio;
    }

    public void modificaDia(int _dia) {
    dia=_dia;
    }

    public void modificaMes(int _mes) {
    mes=_mes;
    }

    public void modificaAnio(int _anio) {
    anio=_anio;
    }

    public Fecha consultarFecha() {
    return this;
    }

    public FormatoFecha() {
    return ( dia + " / " + mes + " / " + anio );
    }

    public int comparararFecha( Fecha fecha ) {

    int resultado = 0;

    if ( anio < fecha.consultaAnio() ) {
    resultado = -1;
    }
    else if ( anio > fecha.consultaAnio() ) {
    resultado = 1;
    }
    else {

    if ( mes < fecha.consultaMes() ) {
    resultado = -1;
    }
    else if ( mes > fecha.consultaMes() ) {
    resultado = 1;
    }
    else {

    if ( dia < fecha.consultaDia() ) {
    resultado = -1;
    }
    else if ( dia > fecha.consultaDia() ) {
    resultado = 1;
    }
    else {
    resultado = 0;
    }
    }
    }

    return resultado;
    }

    /** En el método compararFecha, hay 3 resultados posibles
    * Que una fecha sea menor que otra, en cuyo caso el resultado
    * es -1, que sean iguales, donde el resultado es 0, o que
    * una fecha sea mayor que otra, y tiene como resultado 1.
    */

    private boolean esBisiesto( int anio ) {
    return (( ((anio % 4) == 0) && ((anio % 100) != 0) )
    || ((anio % 400) == 0) );
    }

    /** Los años divisibles por 4 son bisiestos,
    * excluyendo los años que se dividen por 100,
    * y los que se dividen por 400 también lo son.
    */

    private int obtenerDiasMes( int mes ) {
    int diasMes = 0;
    switch( mes ) { // Esta instrucción sirve para encontrar el valor de la variable "mes" en varios casos.
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
    diasMes = 31;

    case 4:
    case 6:
    case 9:
    case 11:
    diasMes = 30;

    case 2:
    if (esBisiesto( anio ))
    diasMes = 29;
    else
    diasMes = 28;

    }

    return diasMes;

    }

    private int obtenerDiasMes( int mes ) {
    return obtenerDiasMes( obtenerMes(mes) );
    }

    Posted 1 year ago #

Reply

You must log in to post.

1,070 posts in 437 topics over 40 months by 388 of 892 members. Latest: lalala, nijh1, jasu

Acerca de...

Dudas de Programación es una Web, dentro del proyecto aulambra.com que nace con la idea de propocionar un foro de consultas sobre diferentes temas de programación. Orientado a ayudar a los internautas hispano-hablantes en Internet.

Ir al Blog de Linea de Código

Otras Webs