Ola pessoal,
Estou iniciando no estudo de JAVA, e me deparei com uma questão q já estou quebrando a cabeça há uma semana. Tentei resolvê-la mas não conseguir. Caso alguém possa postar a resposta pra mim ficaria grato. Garanto q com a resposta em mãos estudarei o código e conseguirei aprender de maneira satisfatória e poderei me aprofundar nas minhas dificuldades.
Desde já Obrigado!
- Crie uma classe chamada “Data”, que deve
conter os seguintes atributos PRIVADOS:
= “ultimaAlteracaoComSucesso” do tipo String;
- “dia” do tipo int;
- “mes” do tipo int;
- “ano” do tipo int;
E as seguintes características:
A) Construtor com parâmetros para iniciar todos os atributos,
com exceção do atributo ultimaAlteracaoComSucesso, que deve
receber, no aludido construtor, o valor
‘Objeto inalterado após a instância’.
Esse construtor DEVE GARANTIR que os valores informados nos
parâmetros sejam válidos, e, caso não sejam, deve lançar uma
exceção com a mensagem de um dos métodos (setDia, setMes
ou setAno), de acordo com o erro detectado!
Um método privado que sirva para informar se um ano é
bissexto, e possua, EXATAMENTE, a seguinte assinatura:
‘private boolean anoBissexto(int ano)’.
Considere que, o algoritmo para identificar se um ano é
Bissexto é o seguinte:
Se o ano terminar em ‘00’ ele só será bissexto se for
divisível por 400, caso contrário, só será bissexto se for
divisível por 4.
C) Um método privado que sirva para informar quantos dias
determinado mes possui, em determinado ano, e que possua
EXATAMENTE a seguinte assinatura:
private int quantidadeDeDiasDoMes(int mes, int ano)
Essa DEVE ser feita com o apoio da função ‘anoBissexto’,
haja vista que, para determinar a quantidade de dias do
mês de feveireiro, essa informação é imprescindível!
D) Um método que contenha, EXATAMENTE, a seguinte
assinatura: ‘public String getUltimaAlteracaoComSucesso()’
e retorne o conteúdo do atributo privado
ultimaAlteracaoComSucesso
E) Um método que contenha, EXATAMENTE, a seguinte
assinatura: ‘public int getDia()’
e retorne o conteúdo do atributo privado dia.
F) Um método que contenha, EXATAMENTE, a seguinte assinatura
‘public void setDia(int value) throws Exception’, e,
OBRIGATORIAMENTE, deve funcionar da seguinte maneira:
Destina-se a setar o valor do atributo privado dia, e,
antes de fazê-lo, precisa verificar duas coisas:
a) Se o valor a ser atribuído é maior ou igual a 1;
b) Se o valor a ser atribuído, combinado com os valores
atuais de mes e ano, representará uma data válida!
DICA: Utilize a função QuantidadeDeDiasDoMes!
Se as duas condições acima forem respeitadas, então a
atribuição será permitida, e o atributo privado
ultimaAlteracaoComSucesso deverá receber um texto,
EXATAMENTE igual ao que se segue:
“Alteração realizada com sucesso: Setar dia igual a
(Data Antiga = ‘<objAntesAlteracao.toString()>’ e
Data Atual = ‘<objDepoisAlteracao.toString()>’)”
Se pelo menos uma das condições acima não for respeitada,
então, a atribuição não será permitida, e uma exceção será
lançada, informando, EXATAMENTE, a seguinte mensagem:
“Alteração impossível: O Valor é inválido para o dia,
considerando o valor atual do mês (igual a )
e o do ano (igual a )”
G) Um método que contenha, EXATAMENTE, a seguinte
assinatura: ‘public int getMes()’
e retorne o conteúdo do atributo privado mes.
H) Um método que contenha, EXATAMENTE, a seguinte assinatura
‘public void setMes(int value) throws Exception’, e,
OBRIGATORIAMENTE, deve funcionar da seguinte maneira:
Destina-se a setar o valor do atributo privado mes, e,
antes de fazê-lo, precisa verificar três coisas:
a) Se o valor a ser atribuído é maior ou igual a 1;
b) Se o valor a ser atribuído é menor ou igual a 12;
c) Se o valor a ser atribuído, combinado com os valores
atuais de dia e ano, representará uma data válida!
DICA: Utilize a função QuantidadeDeDiasDoMes!
Se as três condições acima forem respeitadas, então a
atribuição será permitida, e o atributo privado
ultimaAlteracaoComSucesso deverá receber um texto,
EXATAMENTE igual ao que se segue:
“Alteração realizada com sucesso: Setar mes igual a
(Data Antiga = ‘<objAntesAlteracao.toString()>’ e
Data Atual = ‘<objDepoisAlteracao.toString()>’)”
Se pelo menos uma das condições acima não for respeitada,
então, a atribuição não será permitida, e uma exceção será
lançada, informando, EXATAMENTE, a seguinte mensagem:
“Alteração impossível: O Valor é inválido para o mes,
considerando o valor atual do dia (igual a )
e o do ano (igual a )”
I) Um método que contenha, EXATAMENTE, a seguinte
assinatura: ‘public int getAno()’
e retorne o conteúdo do atributo privado ano.
J) Um método que contenha, EXATAMENTE, a seguinte assinatura
‘public void setAno(int value) throws Exception’, e,
OBRIGATORIAMENTE, deve funcionar da seguinte maneira:
Destina-se a setar o valor do atributo privado ano, e,
antes de fazê-lo, precisa verificar três coisas:
a) Se o valor a ser atribuído é maior ou igual a 1;
b) Se o valor a ser atribuído é menor ou igual a 9999;
c) Se o valor a ser atribuído, combinado com os valores
atuais de dia e mes, representará uma data válida!
DICA: Utilize a função QuantidadeDeDiasDoMes!
Se as três condições acima forem respeitadas, então a
atribuição será permitida, e o atributo privado
ultimaAlteracaoComSucesso deverá receber um texto,
EXATAMENTE igual ao que se segue:
“Alteração realizada com sucesso: Setar ano igual a
(Data Antiga = ‘<objAntesAlteracao.toString()>’ e
Data Atual = ‘<objDepoisAlteracao.toString()>’)”
Se pelo menos uma das condições acima não for respeitada,
então, a atribuição não será permitida, e uma exceção será
lançada, informando, EXATAMENTE, a seguinte mensagem:
“Alteração impossível: O Valor é inválido para o ano,
considerando o valor atual do dia (igual a )
e o do mes (igual a )”
K) Um método que sobreponha o método toString(), da classe
Object, de tal forma que, o retorno seja uma string que
exiba a data armazenada nos atributos privados desta classe,
sobretudo, o formato da string retornada deve ser,
EXATAMENTE, o seguinte: dd/mm/yyyy