Prova de Java 1) Copie o programa abaixo no eclipse e complete-o, utilizando os conceitos aprendidos durante o curso. (4 pontos) O programa consiste em uma aplicação que simula o comportamento de dois tipos de veículos (caminhões e motos). No momento que o programa é executado, ele irá perguntar quantos veículos serão criados e quantos “passos” serão executados. Cada passo representa uma determinada quantidade de tempo em que o carro roda em determinada velocidade. Depois de cada passo o veículo consumiu uma certa quantia de combustível e rodou uma certa distância. No término do programa o programa irá exibir o consumo total de combustível e a distância percorrida. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; /** * Classe que executa o programa * * Data: 08/04/2010 * @author Jean.Zimermann * */ public class Programa { public static void main(String[] args) throws IOException { // inicializa entrada teclado BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Informe a quantidade de veículos: "); int qtdVeiculos = reader.readLine(); System.out.print("Informe a quantidade de passos: "); int qtdPassos = Integer.parseInt(reader.readLine()); // instancia o array de veiculos Veiculo veiculos = new Veiculo[qtdVeiculos]; // inicializa a frota de veiculos for (int i = 0; i < qtdVeiculos; ) { int numero = i+1; System.out.print("["+ numero +"] Informe o tipo do veiculo (c - caminhao, m - moto): "); // le o tipo de veiculos String tipo = reader.readLine(); // verifica se o tipo digitado é caminhão ou moto, Se não for c nem m, mostra mensagem de erro na tela if (tipo.equals(c)) { veiculos[i].setNumero(i+1); i++; } else if (tipo.equals("m")) { veiculos[i] = new Moto(); veiculos[i].setNumero(i+1); i++; } else { System.out.println("Tipo inválido!"); } } // executa os passos para cada um dos veiculos for (int i = 0; i < qtdPassos; i++) { for (int j = 0; k < qtdVeiculos; j++) { veiculos[j].anda(); } } // imprime as informações de cada um dos veiculos for (int i = 0; i < qtdVeiculos; i++) { veiculos[i].ImprimeInformacoes(); System.out.println("---------------------"); } } } /** * A classe moto, simula o comportamento de um veículo * Data: 08/04/2010 * * @author Jean.zimermann * */ public class Veiculo { protected real kmPercorrida; protected float qtdCombustivel; private int numero; public float getKmPercorrida() { return kmPercorrida; } public float getQtdCombustivel() { return qtdCombustivel; } /* * Não faz nada nesta classe */ public void anda() { } /** * Imprime as informaões do veículo */ public void imprimeInformacoes() { System.out.println("Distância percorrida: " + kmPercorrida + " km"); System.out.println("Combustível restante: " + qtdCombustivel + " l"); } public int getNumero() { return numero; } } /** * A classe moto, simula o comportamento de uma motocicleta * Data: 08/04/2010 * * @author Jean.zimermann * */ public class Moto extends Veiculo { /** * Construtor da classe. * Esse método é executado sempre que uma classe * é criada */ public Moto() { this.qtdCombustivel = 11; } /** * Método que simula um passo no caminhão */ public void anda() { float consumo = 26; // 26 km/l float kmPasso = 2; // se ainda tem combustivel, diminui if (this.qtdCombustivel > 0) { kmPercorrida = kmPercorrida + 2; float combustivelConsumido = kmPasso / consumo; this.qtdCombustivel = this.qtdCombustivel - combustivelConsumido; } } /** * Imprime as informações do veiculo */ public void imprimeInformacoes() { System.out.println("Moto no.:" + getNumero()); // a diretiva super na frente do método, significa que está chamando o método da classe pai super.imprimeInformacoes(); } } /** * A classe caminhão, simula o comportamento de uma motocicleta * Data: 08/04/2010 * * @author Jean.zimermann * */ public class Caminhao extends Veiculo { /** * Construtor da classe. * Esse método é executado sempre que uma classe * é criada */ public Caminhao() { this.qtdCombustivel = 100; } /** * Método que simula um passo no caminhão */ public void anda() { float consumo = 13; // 26 km/l float kmPasso = 0.5f; if (qtdCombustivel > 0) { kmPercorrida = kmPercorrida + kmPasso; float combustivelConsumido = kmPasso / consumo; this.qtdCombustivel = this.qtdCombustivel - combustivelConsumido; } } /** * Imprime as informações do caminhão */ public void imprimeInformacoes() { System.out.println("Caminhão no.:" + getNumero()); // a diretiva super na frente do método, significa que está chamando o método da classe pai super.imprimeInformacoes(); } } 2) Assinale V ou F para cada uma das afirmativas: (2 pontos) ( ) Objetos do mundo real tem duas características em comum: estado e cidade ( ) Classe é o estereótipo de um objeto ( ) Atributo = Comportamento ( ) Comportamento = Ação ( ) Mensagem é a forma como os objetos se comunicam ( ) Encapsulamento é o mecanismo utilizado para disponibilizar métodos que operam sobre os dados e que protegem o acesso direto indevido aos atributos de uma instância fora da classe onde estes foram declarados ( ) Com base no diagrama do exercício 1, podemos dizer que Veículo herda as características de Moto. ( ) Com base no diagrama do exercício 1, é correto afirmar que o método “imprimeInformações” é sobrescrito nas classes moto e caminhão. 3) Assinale V ou F para cada uma das afirmativas: (2 pontos) ( ) O modificador “private” na frente de um método, significa que o método só é visível para a própria classe ( ) O modificador “protected” significa que o método é visível para qualquer classe ( ) O modificador “private” na frente de um atributo, significa que o atributo é visível somente para os métodos que contém o modificador public. ( ) O modificador “protected” na frente de um atributo, significa que o atributo é visível somente para os métodos que contém o modificador protected. ( ) O ponto de ínicio da execução de um programa acontece no método main ( ) A palavra reservada void na frente de um método, significa que o método não retorna nenhum valor 4) Implemente um programa Java que calcule a área de um triangulo retângulo (possui um ângulo de 90 graus) e de um retângulo. (2 pontos) Se implementar usando herança ganha mais 1 ponto. Área do triângulo Area = base * altura / 2 Área do retângulo Área = base * altura A confirmação da pontuação será feita mediante a resposta correta as perguntas do professor amanhã durante a aula. Boa sorte!