Adeline de Sousa, Milena Rocha e Paulo Borba
Centro de Informática
Universidade Federal de Pernambuco
1. Defina em Java a classe Hora contendo os métodos equals, anterior, posterior e atualizar, conforme as assinaturas abaixo:
- boolean anterior(Hora h), indica se a hora fornecida como parâmetro é anterior à hora representada pelo objeto no qual este método é executado;
- boolean posterior(Hora h), indica se a hora fornecida como parâmetro é posterior à hora representada pelo objeto no qual este método é executado;
- boolean equals(Hora h), indica se a hora fornecida como parâmetro é igual à hora representada pelo objeto no qual este método é executado;
- void atualizar(Hora h), atualiza a hora representada pelo objeto no qual este método é executado, usando as informações da hora fornecida como parâmetro.
Além dos métodos acima, defina os métodos get e set para cada um dos atributos da classe. Defina também um construtor. Utilize a classe Console apenas para apresentar mensagens de erro na tela.
2.Escreva um método main em Java que lê duas horas (horas e minutos, nesta ordem) do teclado e as compara, apresentando uma mensagem na tela indicando se a primeira é posterior à segunda. Utilize a classe Console.
3. Defina em Java a classe Data, a qual deve conter um construtor e os métodos anterior, posterior, equals e atualizar, similares aos da classe Hora da Questão 1. Utilize a classe Console apenas para apresentar mensagens de erro na tela. Não precisa levar em consideração a existência de anos bissextos mas considere que existem meses com 30 e 31 dias.
4. Escreva um método main em Java que lê três datas (dia, mês e ano, nesta ordem) do teclado e as compara, apresentando uma mensagem na tela imprimindo a maior e a menor das três, nesta ordem.
5. Defina em Java a classe Periodo, que tem como atributos duas datas, e que deve conter um construtor e os métodos anterior, posterior, equals e atualizar, similares aos da classe Hora da Questão 1. Utilize a classe Console apenas para apresentar mensagens de erro na tela. Para o período1 ser anterior ao período2 é necessário que sua data inicial e final sejam anteriores à data inicial do período2. Se uma das datas do período1 estiver contida no intervalo das datas inicial e final do período2, então ele não é considerado anterior nem posterior.
6. Estenda a classe Periodo com os seguintes métodos:
- temIntersecao, verifica se dois períodos tem alguma interseção;
- eSubPeriodo, verifica se um período é sub-período do outro;
- estaNoPeriodo, verifica se uma data está dentro de um período.
Utilize a classe Console apenas para apresentar mensagens de erro na tela.
7. Agora que já foram criados os métodos acima, reformule o método anterior e posterior para que os mesmos não tenham repetição de código desnecessária.
8. Escreva um método main em Java que lê seis datas (dia, mês e ano, nesta ordem) do teclado, constrói três períodos, verifica se os dois primeiros períodos tem interseção, se o primeiro é sub-período do segundo e verifica também se a primeira data está dentro do terceiro período construído. Utilize a classe Console para leitura do teclado e impressão dos resultados. Crie um método auxiliar para ler uma data (dia, mês e ano, nesta ordem) e use-o para evitar repetição de código.
9. Altere o método main da Questão 8 para que ele também imprima as datas digitadas que tenham janeiro ou julho como mês. Indique também quantas datas foram digitadas com dia 1.