4ª LISTA DE EXERCÍCIOS
TÓPICO: HERANÇA DE CLASSES EM JAVA
Observações:
1. Todas classes devem utilizar os atributos private 2. Todas as classes devem possuir os métodos get/set
3. Utilize a classe Scanner para entrada de dados em todos os exercícios
1. Herança sobre “Ingressos”
Crie uma classe chamada Ingresso que possui um valor em reais e um método imprimeValor().
a) crie uma classe VIP, que herda Ingresso e possui um valor adicional. Crie um método que retorne o valor do ingresso VIP (com o adicional incluído).
b) crie uma classe Normal, que herda Ingresso e possui um método que imprime: "Ingresso Normal".
c) crie uma classe CamaroteInferior (que possui a localização do ingresso e métodos para acessar e imprimir esta localização) e uma classe CamaroteSuperior, que é mais cara (possui valor adicional). Esta última possui um método para retornar o valor do ingresso.
d) Ambas as classes herdam a classe VIP.
Numa classe Principal, crie um ingresso. Peça para o usuário digitar 1 para normal e 2 para VIP. Conforme a escolha do usuário, diga se o ingresso é do tipo normal ou VIP. Se for VIP, peça para ele digitar 1 para camarote superior e 2 para camarote inferior.
Conforme a escolha do usuário, diga se que o VIP é camarote superior ou inferior. Imprima o valor do ingresso.
2. Herança sobre “Imóveis”
Crie a classe Imovel, que possui um endereço e um preço.
a) crie uma classe ImovelNovo, que herda de Imovel e possui um atributo que corresponde a um adicional no preço. Crie métodos de acesso e impressão deste valor adicional.
b) crie uma classe ImovelVelho, que herda de Imovel e possui um atributo que corresponde ao desconto no preço. Crie métodos de acesso e impressão para este desconto.
Numa classe de teste, crie um imóvel. Peça para o usuário digitar 1 para novo e 2 para velho. Conforme a definição do usuário, imprima o valor final do imóvel.
3. Herança entre “Animais”
Um animal contém um nome, comprimento, número de patas (o padrão é 4), uma cor, ambiente e uma velocidade (em m/s).
Um peixe é um animal, tem 0 patas, o seu ambiente é o mar (padrão), cor cinzenta (padrão). Além disso, o peixe tem como característica: barbatanas e cauda;
Um mamífero é um animal, o seu ambiente é a terra (padrão);
Um urso é um mamífero, cor castanho e o seu alimento preferido é o mel.
Codifique as classes animal, peixe e mamífero.
SISTEMAS DE INFORMAÇÃO
PROGRAMAÇÃO ORIENTADA A OBJETOS COM JAVA PROF: GIULIANO PRADO DE MORAIS GIGLIO
Para a classe Animal, codifique os métodos:
Animal (String nome, String cor, String ambiente, int comprimento, float velocidade, int patas);
void alteraNome(String nome);
void alteraComprimento(int comprimento);
void alteraPatas(int patas);
void alteraCor(String cor);
void alteraAmbiente(String ambiente);
void alteraVelocidade(float velocidade);
E os seus atributos são:
String nome( );
int comprimento( );
int patas( );
String cor( );
String ambiente( );
float velocidade( );
void dados( ); // imprime os dados do animal Para a classe Peixe, codifique:
Peixe(String nome, String caracteristica, int comprimento, float velocidade);
void alteraCaracteristica(String caracteristica);
String caracteristica( ); // retorna a características de um determinado peixe;
void dados( ); // imprimir na tela todos os dados Para a classe Mamifero, codifique:
Mamifero (String nome, String cor, String alimento,int comprimento, float
velocidade, int patas);
void alteraAlimento(String alimento);
String alimento( ); // retorna o alimento de um determindado uso
void dados( ); // imprimir na tela todos os dados
Por último, crie uma classe de teste (por exemplo TesteAnimais.java) de forma a ter um jardim zoológico com os seguintes animais: camelo, tubarão, urso-do-canadá.
Exemplo de execução:
--- Animal: Camelo Comprimento: 150 cm Patas: 4
Cor: Amarelo Ambiente: Terra Velocidade: 2.0 m/s --- Animal: Tubarão Comprimento: 300 cm Patas: 0
Cor: Cinzento Ambiente: Mar Velocidade: 1.5 m/s
Característica: Barbatanas e cauda.
--- Animal: Urso-do-canadá Comprimento: 180 cm
Patas: 4 Cor: Vermelho
Ambiente: Terra Velocidade: 0.5 m/s Alimento: Mel
4. Herança entre “Produtos”
4.1 Faça uma classe Produto que contenha o número serial, o volume (inteiro) e também uma string que inicialmente possui o valor "não testado". O numero serial será passado no construtor.
Deverá possuir um método booleano testaUnidade que somente poderá ser executado uma vez. O produto terá 90% de chance de estar OK. Caso esteja OK, a string passará de "não testado" para
"aprovado". Caso não esteja OK, passará para "reprovado". Retorna true se foi aprovado e false se não foi. Deverá também conter um método setVolume e um método toString que retornará em uma string o numero serial, o volume e o resultado do teste.
(obs: java.lang.Math.random() gera um numero de 0.0 a 1.0. Utilize-o para sortear a probabilidade de chance do teste da unidade e assim processa-lo como explicado acima).
4.2 Faça uma classe Radio que irá herdar de Produto. Deverá ter um método Escutar que retornará uma String contendo a estação e a banda (ex.: 94.9 FM) da radio. Deverá conter um método trocaEstacao e um método trocaBanda. Deverá alterar o método toString de forma a acrescentar a estação e a banda.
4.3 Faça uma classe TV que irá herdar de Produto. Deverá ter um método Assistir que retornará uma String contendo o canal que esta assistindo. Deverá conter um método trocaCanal. Deverá alterar o toString de forma a acrescentar o canal.
Numa classe de teste, crie um objeto Produto e peça ao usuário, antes de criação, o número serial do mesmo. Passe esse valor em seu construtor na instanciação. Teste a sua unidade.
Crie um objeto Radio e permita ao usuário escuta-lo, mostrando a identificação da estação e possibilite o usuário alterar o volume, pedindo-o qual o volume desejado. O usuário poderá trocar a estação e a banda somente uma vez, logo, permita-o realizar isso após o ajuste do volume.
Faça a mesma coisa com um objeto da classe TV.
5. Herança sobre “Pessoas”
5.1 Cria uma Classe Pessoa, contendo os atributos encapsulados, com seus respectivos seletores (getters) e modificadores (setters), e ainda o construtor padrão e pelo menos mais duas opções de construtores (passando os parâmetros e outro com entrada de dados na tela). Atributos: String nome; String endereço;
String telefone;
5.2 Considere, como subclasse da classe Pessoa (desenvolvida no exercício anterior) a classe Fornecedor.
Considere que cada instância da classe Fornecedor tem, para além dos atributos que caracterizam a classe Pessoa, os atributos valorCredito (correspondente ao crédito máximo atribuído ao fornecedor) e valorDivida (montante da dívida para com o fornecedor). Implemente na classe Fornecedor, para além dos usuais métodos seletores e modificadores, um método obterSaldo() que devolve a diferença entre os valores dos atributos valorCredito e valorDivida.
5.3 Numa classe de teste, crie um objeto Fornecedor pedindo o usuário para digitar suas informações e passa-las ao construtor desse objeto. Porém, os dados que ele herda de Pessoa devem ser preenchidos pelo construtor que solicita a entrada dos atributos via tela. Após a criação, exibir as informações do Fornecedor (utilize o método toString() na classe) e mostre o saldo do mesmo.
6. Herança sobre “Empregados”
6.1 Considere, como subclasse da classe Pessoa do exercício 5, a classe Empregado. Considere que cada instância da classe Empregado tem, para além dos atributos que caracterizam a classe Pessoa, os atributos codigoSetor (inteiro), salarioBase (vencimento base) e imposto (porcentagem retida dos impostos).
Implemente a classe Empregado com métodos seletores e modificadores e um método calcularSalario.
6.2 Implemente a classe Administrador como subclasse da classe Empregado. Um determinado administrador tem como atributos, para além dos atributos da classe Pessoa e da classe Empregado, o atributo ajudaDeCusto (ajudas referentes a viagens, estadias, ...). Note que deverá redefinir na classe Administrador o método herdado calcularSalario (o salário de um administrador é equivalente ao salário de um empregado usual acrescido das ajuda de custo).
Numa classe de testes, crie dois objetos, um de cada classe e calcule o salário de cada instancia. Mostre esse valor junto com todas as demais informações de cada objeto.
7. Herança sobre “Empregados”
7.1 Implemente a classe Operario como subclasse da classe Empregado do exercício 6 anterior. Um determinado operário tem como atributos, para além dos atributos da classe Pessoa e da classe Empregado, o atributo valorProducao (que corresponde ao valor monetário dos artigos efetivamente produzidos pelo operário) e comissao (que corresponde à porcentagem do valorProducao que será adicionado ao vencimento base do operário). Note que deverá redefinir nesta subclasse o método herdado calcularSalario (o salário de um operário é equivalente ao salário de um empregado usual acrescido da referida comissão). Escreva um programa de teste adequado para esta classe.
7.2 Implemente a classe Vendedor como subclasse da classe Empregado. Um determinado vendedor tem como atributos, para além dos atributos da classe Pessoa e da classe Empregado, o atributo valorVendas (correspondente ao valor monetário dos artigos vendidos) e o atributo comissao (porcentagem do valorVendas que será adicionado ao vencimento base do Vendedor). Note que deverá redefinir nesta subclasse o método herdado calcularSalario (o salário de um vendedor é equivalente ao salário de um empregado usual acrescido da referida comissão).
Numa classe de testes, crie dois objetos, um de cada classe e calcule o salário de cada instancia. Mostre esse valor junto com todas as demais informações de cada objeto.