import javax.swing.*;
import java.text.DecimalFormat;
public class data
{
	private int Dia;
	private int Mes;
	private int Ano;
	
	public data()
	{
		setDia(0);
		setMes(0);
		setAno(0);
	}
	
	public data(int _dia, int _mes, int _ano)
	{
		setDia(_dia);
		setMes(_mes);
		setAno(_ano);
	}
	
	public void solicita()
	{
		String temp, temp2, temp3;
		temp = JOptionPane.showInputDialog("Digite o dia");
		temp2 = JOptionPane.showInputDialog("Digite o mes");
		temp3 = JOptionPane.showInputDialog("Digite o ano");
		setDia(Integer.parseInt(temp));
		setMes(Integer.parseInt(temp2));
		setAno(Integer.parseInt(temp3));
	}
	
	public void imprimir()
	{
		DecimalFormat c = new DecimalFormat("00");
		DecimalFormat t = new DecimalFormat("0000");
		JOptionPane.showMessageDialog(null,"A data é: "+ c.format(getDia()) +"/"+ c.format(getMes()) +"/"+ t.format(getAno()));
	}
	
	public void setDia( int _dia)
	{
		if ((_dia >= 0)&&(_dia <=31))
			Dia = _dia;
		else
			JOptionPane.showMessageDialog(null, "ERRO!  dia invalido");
	}
	public void setMes(int _mes)
	{
		if ((_mes >= 0)&&(_mes < 13))
			Mes = _mes;
		else
			JOptionPane.showMessageDialog(null, "ERRO!  mes invalido");
	}
	
	public void setAno(int _ano)
	{
		if (_ano >= 0)
			Ano = _ano;
		else
			JOptionPane.showMessageDialog(null, "ERRO!  ano invalido");
	}
	
	public int getDia()
	{
		return Dia;
	}
	
	public int getMes()
	{
		return Mes;
	}
	
	public int getAno()
	{
		return Ano;
	}
	
	 public void decrDia()
	 {
	 	setDia(getDia() - 1);
	 }
	 
	 public void decrMes()
	 {
	 	setMes(getMes() - 1);
	 }
	 
	 public void decrAno()
	 {
	 	setAno(getAno() - 1);
	 }
	 
	 public void incrDia()
	 {
	 	setDia(getDia() + 1);
	 }
	 
	 public void incrMes()
	 {
	 	setMes(getMes() + 1);
	 }
	 
	 public void incrAno()
	 {
	 	setAno(getAno() + 1);
	 }
	 
	 public String toString()
	 {
	 	DecimalFormat d = new DecimalFormat("00");
	 	String saida;
	 	saida = "A data em String é : " + d.format(getDia()) +"/"+ d.format(getMes()) +"/" + d.format(getAno());
	 	return saida;
	 }
	 
	 
	 public void menu()
		{
			int opcao = -1;
			while (opcao != 0)
			{
				String temp;
				temp = JOptionPane.showInputDialog(" >>> Menu <<< \n1 - Leitura \n2 - Imprimir \n3 - Incremento Dias \n4 - Incrementa Mes \n5 - Incrementa Ano \n6 - Decrementa Dia \n7 - Decrementa Mes \n8 - Decrementa Ano \n9 - Data em String \n10 - ?Soma Mes? \n11 - Sobrecarga \n0 - Sair");
				opcao = Integer.parseInt(temp);
				
				switch ( opcao )
				{
					case 1 : solicita();
					break;
					case 2 : imprimir();
					break;
					case 3 : incrDia();
					break;
					case 4 : incrMes();
					break;
					case 5 : incrAno();
					break;
					case 6 : decrDia();
					break;
					case 7 : decrMes();
					break;
					case 8 : decrAno();
					break;
					case 9 : JOptionPane.showMessageDialog(null, toString());
					break;
					case 10 : somaMes();
					break;
					case 11 : Sobrecarga();
					break;
				;
					
				
					
					
				} // fim switch
			} //fim while
		} // fim menu
		
		
		public boolean Bissexto()
		{
			if ((getAno() % 4 == 0) && (getAno() % 100 != 0) || (getAno() % 400 == 0))
			
				return true;
			else
				return false;
		}
		
		
		
			
			
		public  void somaMes()
		{
			int x = 0;
			if (Bissexto() == (true))
			
				x = 28;
			else
				x = 29;
		
			int meses[] = {31,x,31,30,31,30,31,31,30,31,30,31};
			int soma = 0;
			
		
			int p = 0;
			while (p != getMes())
			{
				soma=soma+meses[p];
				p++;
			}
			JOptionPane.showMessageDialog(null, "total eh "+ soma);
		} // fim método soma()
		
		
		public void Sobrecarga()
		{
			switch (getMes())
			{
				case 01 : JOptionPane.showMessageDialog(null, "mes é Janeiro");
				break;
				case 02 :  JOptionPane.showMessageDialog(null, "mes é fevereiro");
				break;
				case 03 : JOptionPane.showMessageDialog(null, "mes é Marco");
				break;
				case 04 : JOptionPane.showMessageDialog(null, "mes é Abril");
				break;
				case 05 : JOptionPane.showMessageDialog(null, "mes é Maio");
				break;
				case 06 : JOptionPane.showMessageDialog(null, "mes é Junho");
				break;
				case 07 : JOptionPane.showMessageDialog(null, "mes é Julho");
				break;
				
				case 10 : JOptionPane.showMessageDialog(null, "mes é Outubro");
				break;
				case 11 : JOptionPane.showMessageDialog(null, "mes é Novembro");
				break;
				case 12 : JOptionPane.showMessageDialog(null, "mes é Dezembro - Festa Porra!");
				break;
			}// fim switch
			
			 
		} //fim sobrecarga()
		
	 
	 
	 
	 	
	 
	 	
	 	
	 	
	 
	 	
	 
} // fim classe

			
			
			
			
			
			
			
			
			
/* INCOMPLETO

 public String  leMes() // incompleto
	 {
	 	String temp;
	 	temp = JOptionPane.showInputDialog("digite o mes por extenso");
	 	return temp;
	 }
	 public String getleMes()
	 {
	 	return leMes;
	 }
	
	 
	 public void test()
	 {
	 	int a=30, b=0,c=30,d=31,e=0,f=0,z=0;
	 	if (Bissexto() == (true))
			
				b = 28;
			else
				b = 29;
				
	 	int x[] = {a,b,c,d,e,f};
	 	
	 	if (getleMes().equalsIgnoreCase("janeiro"))
	 		z = 1;
	 	else
	 		if (getleMes().equalsIgnoreCase("fevereiro"))
	 			z = 2;
	 		else
	 			if (getleMes().equalsIgnoreCase("abril"))
	 				z = 3;
	 	
	 
			
		
		int p = 0, soma2 =0;
		while (p != z)
		{
			soma2=soma2+x[p];
			p++;
		}
		JOptionPane.showMessageDialog(null, "total eh "+ soma2);
	 	
	 } //.fim test()
	 
	 */