Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 Lista de Exercícios 07 – Classes e Interfaces Lembre-se que antes de implementar devemos modelar, e pensar nos testes que serão realizados. Ao modelar devemos pensar no objeto da classe, quais serão suas características e interação com outras classes. Em todos os exercícios implemente a main com os testes. Parte I – Métodos Estáticos e Enumeradores Exercício 1 Escreva a classe ConversaoDeUnidadesDeArea com métodos estáticos para conversão das unidades de área segundo a lista abaixo. 1 metro quadrado = 10.76 pés quadrados 1 pé quadrado = 929 centímetros quadrados 1 milha quadrada = 640 acres 1 acre = 43.560 pés quadrados A área de um campo de futebol é de 8.250 metros quadrados. Usando a classe ConversaoDeUnidadesDeArea, escreva um programa em Java que mostre qual é a área de um campo de futebol em pés quadrados, acres e centiḿetros quadrados. Escreva métodos adicionais para a classe ConversaoDeUnidadesDeArea, se necessário. Exercício 2 Escreva a classe ConversaoDeUnidadesDeVolume com métodos estáticos para conversão das unidades de volume segundo a lista abaixo. 1 litro = 1000 centímetros cúbicos 1 metro cúbico = 1000 litros 1 metro cúbico = 35.32 pés cúbicos 1 galão americano = 231 polegadas cúbicas 1 galão americano = 3.785 litros O volume de uma piscina olímpica é de 1.890 metros cúbicos. Usando a classe ConversaoDeUnidadesDeVolume, escreva um programa em Java que mostre qual é o volume de uma piscina olímpica em litros, pés cúbicos e centímetros cúbicos. Escreva métodos adicionais para a classe ConversaoDeUnidadesDeVolume, se necessário. Exercício 3 Escreva a classe ConversaoDeUnidadesDeTempo com métodos estáticos para conversão aproximada das unidades de velocidade segundo a lista abaixo. 1 minuto = 60 segundos 1 hora = 60 minutos 1 dia = 24 horas 1 semana = 7 dias 1 mês = 30 dias 1 ano = 365.25 dias O tempo de gestacã̧o de um elefante indiano é de aproximadamente 624 dias. Usando a classe ConversaoDeUnidadesDeTempo, escreva um programa em Java que mostre qual é o tempo de gestacã̧o de um elefante indiano em dias, horas, minutos e segundos. Escreva métodos adicionais para a classe ConversaoDeUnidadesDeTempo, se necessário. Exercício 4 Escreva uma classe que contenha métodos estáticos para retornar o maior e o menor de dois, três, quatro e cinco valores (com um total de oito métodos), considerando que os argumentos e retorno dos métodos podem ser dos tipos int e double. Dica: Os métodos podem ser chamados em cascata: para calcular o maior de três valores a, b e c, pode-se calcular o maior valor de a e b, e comparar esse resultado com c. 2 Exercício 5 Escreva uma classe que contenha métodos estáticos para calcular as médias e somas de dois, três, quatro e cinco valores, considerando que os argumentos e retorno dos métodos podem ser dos tipos int e double. Um total de 16 métodos deverão ser criados. Exercício 6 Escreva uma classe SerieLimitada, que encapsula um valor inteiro seqüencial como os usados em notas e séries de gravuras. Essa classe deve permitir que um programa crie um número limitado de instâncias dela, cada uma numerada com um valor seqüencial. O número total de instâncias é controlado pelo campo máximoDeInstâncias, declarado como static final, e o de instâncias já criadas é controlado pelo campo contador declarado como static. Escreva também uma aplicação que crie algumas instâncias da classe para demonstrar seu funcionamento. Exercício 7 Crie um enumerador que represente as moedas em uso atualmente no Brasil. Associe a símbolos representando as moedas os seus valores. Exercício 8 Crie um enumerador que represente os dias da semana. Associe aos símbolos dos dias da semana valores booleanos que indicam se o dia é fim-de-semana ou não. Exercício 9 Crie um enumerador que represente os meses em um ano. Associe aos símbolos dos meses valores inteiros que indicam quantos dias temos no mês se o ano for bissexto e não bissexto. Exercício 10 Crie um enumerador que represente diferentes tipos de tortas em uma lanchonete. Associe aos símbolos dos tipos de tortas valores inteiros correspondentes às calorias da torta e valores de ponto flutuante correspondentes aos preços das tortas. Exercício 11 Crie um enumerador que represente os países da América do Sul. Associe aos símbolos dos países valores para representar sua área, população e capital. Parte II – Herança e Sobrecarga Exercício 12 É possível evitar completamente a necessidade de sobreposição de métodos criando métodos em classes descendentes que tenham assinaturas diferentes. Por exemplo, a classe Pessoa poderia ter o método imprimePessoa para imprimir seus atributos, e a classe Aluno que estende a classe Pessoa poderia ter o método imprimeAluno para imprimir os atributos de Aluno. Que vantagens e desvantagens essa abordagem teria sobre a sobreposição de métodos? Exercício 13 Identifique e explique o(s) erro(s) na classe abaixo. public class DataHora extends Data,Hora { public DataHora(byte d, byte m, short a, byte hor, byte min, byte seg) { super(d, m, a); super(hor, min, seg); } public String toString() { return super.toString() + " " + super.toString(); } } 3 Exercício 14 Identifique e explique o(s) erro(s) nas classes abaixo. public class Ponto2D_V2 { private double x, y; public Ponto2D_V2(double _x, double _y) { x = _x; y = _y; } } public class Ponto3D_V2 extends Ponto2D_V2 { private double z; public Ponto3D_V2(double _x, double _y, double _z) { x = _x; y = _y; z = _z; } } Exercício 15 Considere o seguinte modelo de classes: A classe Funcionario é abstrata. As classes Gerente e Programador são concretas. Uma chamada ao aumentaSalario( ) do Funcionario aumenta seu salário em 5%. Uma chamada ao aumentaSalario( ) do Gerente aumenta seu salário em 10%. Uma chamada ao aumentaSalario( ) do Programador aumenta seu salário em 20%. Exercício 16 Implemente uma aplicacã̧o que declara três variáveis do tipo Funcionario e cria três objetos um do tipo Gerente, outro do tipo Programador e o terceiro do tipo AnalistaDeSistemas. Em seguida, o programa deve oferecer um menu para o usuário com as seguintes opcõ̧es: Imprimir dados – O usuário deverá informar se ele deseja imprimir os dados do Gerente, do Programador ou do AnalistaDeSistemas. Aumentar salário – O usuário deverá informar se ele deseja aumentar o salário do Gerente, do Programador ou do AnalistaDeSistemas. 7 Sobreposição de Métodos Exercício 1: Programação Orientada a Objeto - Márcio Bueno 4 Exercício 17 Considere o seguinte modelo de classes: Acrescentar a classe ClienteFidelizacao o método adicionaBonus que recebe o valor da compra realizada pelo cliente e soma ao bônus do cliente 5% do valor desta compra. Suponha que agora, no sistema, existe mais um tipo de Cliente, o ClienteFidelizacaoEspecial, que apresenta as mesmas caracteriśticas do ClienteFidelizacao porém, ganha bônus de 10% em cima das compras realizadas. Exercício 18 Implemente uma classe Conta que contenha os atributos nome do cliente, número da conta, saldo e limite. Estes valores deverão ser informados no construtor, sendo que o limite não poderá ser maior que o valor do salário mensal do cliente. Implemente também um método depósito e outro método saque. O método saque retorna um booleano indicando se o saque pôde ser efetuado ou não. Implemente uma classe ContaEspecial que funciona da mesma forma que a classe Conta, mas que aceita um limite de até 3 vezes o valor do salário do cliente. Exercício 19 Implementar, usando classe abstrata, o seguinte modelo de classes. 11 Sobreposição de Métodos Exercício 2: ClienteFidelizacaoEspecial Programação Orientadaa Objeto - Márcio Bueno 14 Classes Abstratas Exercício 4: Implementar, usando classe abstrata, o seguinte modelo de classes. 5 Exercício 20 Por que campos em interfaces devem ser inicializados em sua declaracã̧o? Explique. Exercício 21 Explique com suas palavras por que uma classe abstrata não pode ser instanciada. Exercício 22 Explique com suas palavras por que uma interface não pode ter métodos estáticos. Exercício 23 Explique, com suas palavras, por que interfaces não podem ter construtores. Exercício 24 Explique com suas palavras por que não podemos ter construtores declarados com a palavra- chave abstract. Exercício 25 Identifique e explique o(s) erro(s) na classe abaixo. public class Produto { private String identificação; private double custoDeFabricação; Produto(String i, double c) { identificação = i; custoDeFabricação = c; } abstract public String toString(); abstract public void novoCusto(double nc); } Exercício 26 Identifique e explique o(s) erro(s) na classe abaixo. public interface Resetavel { public void reseta(); } public interface Modificavel { public void reseta(int origem); public void modifica(int tamanho); } public class Contador implements Resetavel, Modificavel { int valor; public void reseta() { valor = 1; } public void modifica(int tam) { valor = tam; } } Exercício 27 Considere a seguinte Interface Forma Geométrica interface FormaGeometrica { public double area( ); public double comprimento( ); } Construir as classe Quadrado e Circulo que implementam a interface FormaGeometrica; Implementar programa de testes que declara duas variáveis do tipo FormaGeometrica e instancia dois objetos um do tipo Circulo e outro do tipo Quadrado. Exibir a área e o comprimento dos objetos instanciados. 6 Exercício 28 A classe InfoCliente do modelo de clientes abaixo poderia se tornar uma interface? Exercício 29 Considere o seguinte modelo: Implementar uma aplicacã̧o que declara uma variável polimórfica do tipo OperacaoMatematica. A partir de dados fornecidos pelo usuário, a aplicacã̧o deve realizar uma operacã̧o matemática e imprimir o seu resultado. Oferecer para o usuário um menu para a escolha entre as operacõ̧es matemáticas disponiv́eis. OBS 1: Não defina a e b como atributos. OBS 2: Implemente um construtor padrão para cada uma das classes. Fontes: Material fornecido pelos professores Pedro Moura, Edirlei Lima, Geiza Hamazaki. Fontes da Internet: Márcio Bueno: http://marciobueno.com/ensino/programacao-orientada-objetos Rafael Santos: http://www.lac.inpe.br/~rafael.santos/Docs/IntroPOOJava/POO-EXER.pdf Programação Orientada a Objeto - Márcio Bueno 18 Exercícios Exercício 2: A classe InfoCliente do modelo de clientes abaixo poderia se tornar uma interface? Programação Orientada a Objeto - Márcio Bueno 19 Exercícios Exercício 3: http://marciobueno.com/ensino/programacao-orientada-objetos http://www.lac.inpe.br/~rafael.santos/Docs/IntroPOOJava/POO-EXER.pdf
Compartilhar