Class Fecha In Java POO

package PracticasUnidad2; import java.util.Scanner; public class Fecha { //Atributos private int dia,mes,año; //final significa que es constante no se puede cambiar su valor //static significa que es atributo de la clase //no de los objetos;hay una sola copia para todos los objetos //private static int contadordeobjetosfecha =0; private final static int []DIAS_MES= {0,31,28,31,30,31,30,31,31,30,31,30,31}; //constructores public static int [] getDIAS_MES(){ return DIAS_MES; } public Fecha(){ dia = 1; mes= 1; año=1900; } public Fecha(int dia,int mes,int año){ this.dia=dia; this.mes=mes; this.año=año; } public Fecha(Fecha otra){ this.año = otra.año; this.mes = otra.mes; this.dia = otra.dia; } //metodos miembros de preIncremento y postIncremento public Fecha preIncremento(){ //incrementar la fecha de este (this) objeto dia++; int diasMes = DIAS_MES[mes]; if(mes ==2 && isBisiesto()) diasMes = 29; if(dia >diasMes){ dia = 1; mes ++; if(mes == 13){ mes = 1; año ++; } } return new Fecha(dia,mes,año); } public Fecha postIncremento(){ Fecha fechaRetorno = new Fecha(this.dia,this.mes,this.año); //incrementar la fecha de este (this) objeto this.dia++; int diasMes = DIAS_MES[this.mes]; //int diaMes = Fecha.getDIAS_MES() [f.mes]; if(this.mes ==2 && this.isBisiesto()) diasMes = 29; if(this.dia > diasMes){ this.dia = 1; this.mes ++; if(this.mes ==13){ this.mes = 1; this.año ++; } } return fechaRetorno; } //metodos estaticos de preIncremento y postIncremento public static Fecha preIncremento(Fecha f){ f.dia++; int diasMes = Fecha.getDIAS_MES()[f.mes]; if(f.mes ==2 && f.isBisiesto()) diasMes = 29; if(f.dia >diasMes){ f.dia = 1; f.mes ++; if(f.mes == 13){ f.mes = 1; f.año ++; } } return new Fecha (); } public static Fecha postIncremento(Fecha f){ return new Fecha(); } //metodoas //geters public int getDia(){ this.dia=dia; return 0; } public int getMes(){ this.mes=mes; return 0; } public int getAño(){ this.año=año; return 0; } //setters public void setDia(int dia){ int diasmes=DIAS_MES[mes]; if (mes==2&& isBisiesto()){ diasmes=29; } if(dia >= 1 && dia <= diasmes){ this.dia=dia; }else this.dia=1; } public boolean isBisiesto(){ // if{ // return true; // }else // return false; return ((año%4==0 && año%100!=0) || año%400==0); } public void setMes(int mes){ this.mes=(mes>=1&&mes<=12)?mes:1; } public void setAño(int año){ this.año=año; } public static void main5(String[] args) { Fecha primeroMarzo =new Fecha(01,3,2016); Fecha visitahp = new Fecha(25,2,2016); Fecha navidad = new Fecha(25,12,16); Fecha Vacaciones = new Fecha(18,03,16); Fecha f = new Fecha(); System.out.println("primeroMarzo = "+ primeroMarzo); System.out.println("Visita HP = "+visitahp); System.out.println("Final = "+f); System.out.println("Vacaciones!!! = "+ Vacaciones); System.out.println("Navidad = "+navidad); } @Override public String toString(){ return ((dia<10)?"0"+ dia:dia) + "/" + ((mes<10)?"0"+mes:mes)+ "/"+año; } //definir sobrecarga para operadores public Fecha suma(int numeroDias){ Fecha f = new Fecha(this.dia,this.mes,this.año); for (int i = 1; i <= numeroDias; i++){ f.preIncremento(); } return f; } public Fecha suma(Fecha f, int numeroDias){ //Aqui es una manera pero puedes ingresarle la fecha return new Fecha(); } public static void main(String[] args) { Fecha f1 = new Fecha(25,2,2016); Fecha f2 = new Fecha (31,12,2016); Fecha f3 = f1.suma(14); Fecha f4 = f2.suma(60); // Fecha f6 = f1.preIncremento(); // Fecha f4 = preIncremento (f1); //f4 = ++f1; // f5 = 11/03/2016, f2 = 12/03/2016 // System.out.println("f1 = "+f1); // System.out.println("f6 = "+f6); // Fecha f5 = f2.postIncremento(f2); // System.out.println("f2 = "+f2); // System.out.println("f5 = "+f5); System.out.println("F3 = "+f3); System.out.println("F4 = "+f4); } }

1 Response

Hey man, I did like a refactor with some practices that in my opinion are good (specially for a Date class).
Hope you like and generate further discussions :)
https://codepad.co/snippet/hlafQFMg
Best Regards

Write a comment

You can use [html][/html], [css][/css], [php][/php] and more to embed the code. Urls are automatically hyperlinked. Line breaks and paragraphs are automatically generated.