Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Departamento de Cincias Exatas e Tecnolgicas DCET Bacharelado em Cincia da Computao Professor: Esbel Toms Valero Orellana Linguagem de Programao III
e) FOR 2. Quais dos identificadores abaixo podem ser usados como nomes de classes, campos, mtodos e variveis em Java? Quais no podem, e por qu? a) dia&noite b) diaENoite c) dia & noite d) dia E noite e) dia_e_noite 3. Considerando os tipos de dados nativos em Java, escolha o tipo de dado ou classe mais adequada para representar: O nmero de municpios de um estado do Brasil. O nome de um estado do Brasil. A populao de um estado do Brasil. A rea do Brasil em quilmetros quadrados. A populao total do mundo. O CEP de um endereo no Brasil. O nome de uma rua em um endereo no Brasil. 4. Considerando os tipos de dados nativos em Java, escolha o tipo de dado ou classe mais adequada para representar: A altura de uma pessoa em metros. O peso de uma pessoa em quilos. A temperatura corporal de uma pessoa. O sexo de uma pessoa. A altura de uma pessoa em milmetros. 5. Responda verdadeiro ou falso para cada uma das afirmaes abaixo, explicando ou justificando a sua resposta. A) Um valor do tipo boolean pode receber o valor numrico zero. B) Um valor do tipo float pode armazenar valores maiores do que os que podem ser armazenados por um valor do tipo long. C) Podemos ter caracteres cujos valores sejam negativos. D) O nmero de bytes ocupados por uma varivel do tipo float depende do computador e do sistema operacional sendo usado. E) O tipo char pode ser usado para representar pares de caracteres, uma vez que variveis desse tipo ocupam dois bytes na memria. F) Os tipos de dados double e long no so equivalentes, apesar de variveis desses tipos ocuparem o mesmo espao na memria.
9. Modifique o mtodo mostraData da classe Data, analisada em sala de aula, para que o ms seja mostrado por extenso em vez de numeral (isto , quando o ms for 3, que o mtodo imprima maro, etc.). 10. A classe Data, analisada em sala de aula, pode representar datas no-vlidas, com os valores de dia, ms e ano iguais a zero. Modifique o mtodo mostraData para que, se a data encapsulada no for vlida, uma mensagem "Data Invlida" seja impressa, em vez dos valores de dia, ms e ano. 11. Escreva a classe LampadaTresEstados correspondente resposta do exerccio 2 da unidade anterior. Que tipo de dado pode ser usado para representar o campo estado? 12. Escreva uma classe Hora que represente o modelo do exerccio 4 da unidade anterior. 13. Usando o exerccio anterior como referncia, escreva uma classe HoraPrecisa que represente o modelo do exerccio 5 da unidade anterior. 14. Escreva uma classe Livro que represente o modelo do exerccio 7 da unidade anterior. 15. Escreva uma classe LivroLivraria que represente o modelo do exerccio 8 da unidade anterior. 16. Escreva uma classe LivroBiblioteca que represente o modelo do exerccio 9 da unidade anterior. 17. Modifique o mtodo eIgual da classe Data para que uma data invlida seja considerada sempre diferente de qualquer outra. 18. O que aconteceria se todos os mtodos da classe Data fossem declarados com o modificador private? 19. Escreva uma classe AutomovelUsado que represente os dados de um automvel usado venda, como ano, modelo, quilometragem rodada, combustvel, preo pedido etc. Que campos e mtodos essa classe deve ter? 20. Escreva uma classe CadernoDeEnderecos que represente os dados de uma pessoa, como nome, telefone, e-mail e endereo. Que campos e mtodos essa classe deve ter? 21. Escreva a classe Contador que encapsule um valor usado para contagem de itens ou eventos. Essa classe deve esconder o valor encapsulado de programadores-usurios, fazendo com que o acesso ao valor seja feito atravs de mtodos que devem zerar, incrementar e imprimir o valor do contador. 22. Modifique a classe Lampada para que esta contenha tambm um campo que indique quantas vezes a lmpada foi acesa. Tente usar uma instncia da classe Contador. Em que mtodo esse atributo deve ser inserido? 23. Crie uma classe Retangulo para representar um retngulo cujos pontos opostos sejam duas instncias da classe Ponto2D, que foi analisada em sala de aula. 24. A operao inicializaData da classe Data tem uma abordagem simplista demais para verificar se o dia sendo usado vlido ou no: nessa operao ainda seria possvel passar a data 31/02/2000 e a operao iria considerar os valores passados como sendo vlidos. Modifique a operao dataEValida para que esta considere o valor mximo que pode ser
aceito como vlido, dependendo do ms, de forma que, para meses com 30 dias, o valor 31 para o dia seja considerado incorreto, e que para fevereiro o valor mximo seja calculado em funo de o ano ser bissexto ou no. Dica: Anos bissextos (tendo 29 dias em fevereiro) so divisveis por quatro, a no ser que sejam divisveis por 100. Anos que podem ser divididos por 400 tambm so bissextos. Dessa forma, 1964 e 2000 so bissextos, mas 1900 no bissexto. A operao de divisibilidade pode ser implementada pela funo mdulo, representada pelo sinal %, e comparada com zero: a expresso (1966 % 4) == 0 verdadeira, enquanto a expresso (1967 % 4) == 0 falsa. 25. Modifique a classe Retangulo (exerccio 23) para que esta contenha mtodos para retornar a rea e o permetro do retngulo encapsulado. Dica: A classe Ponto2D, que tem duas instncias como campos na classe Retangulo, deve ter seus campos privados e mtodos que permitam o acesso aos valores dos campos.
7. Escreva uma aplicao em Java que demonstre o uso de instncias das classes Livro, LivroLivraria e LivroBiblioteca. (exercicios 14, 15 e 16 da unidade anterior) 8. A classe abaixo pode ser compilada sem erros. Quando for executado, o programa imprimir que o resultado da comparao na linha 11 true mas o resultado da comparao na linha 12 false. Explique por qu.
class DemoDataCopiada { public static void main(String[] argumentos) { Data lanamentoDaAtlantis18 = new Data(); Data incioDeOperaoDoHAL = new Data(); Data morteDeCharlesHuggins; lanamentoDaAtlantis18.inicializaData((byte)12,(byte)1,(short)1997); incioDeOperaoDoHAL.inicializaData ((byte)12,(byte)1,(short)1997); morteDeCharlesHuggins = lanamentoDaAtlantis18; System.out.println(lanamentoDaAtlantis18 == morteDeCharlesHuggins); System.out.println(lanamentoDaAtlantis18 == incioDeOperaoDoHAL); } }
9. O que acontecer se tentamos imprimir uma instncia de uma classe que no tem o mtodo toString? Demonstre com um pequeno programa. 10. Escreva o mtodo toString na classe Data, de forma que o ms seja mostrado por extenso em vez de numeral. 11. Escreva o mtodo clona na classe Data, que retorne uma nova instncia que uma cpia da prpria data. 12. Escreva o mtodo toString para as classes Livro, LivroLivraria e LivroBiblioteca, (exercicios 14, 15 e 16 da unidade anterior).
Bom trabalho.