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
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.