Você está na página 1de 6

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 aplicao que simula o comportamento de dois tipos de veculos (caminhes e motos). No momento que o programa executado, ele ir perguntar quantos veculos sero criados e quantos passos sero executados. Cada passo representa uma determinada quantidade de tempo em que o carro roda em determinada velocidade. Depois de cada passo o veculo consumiu uma certa quantia de combustvel e rodou uma certa distncia. No trmino do programa o programa ir exibir o consumo total de combustvel e a distncia 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 veculos: "); 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 caminho ou moto, Se no 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 invlido!"); } } // 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 informaes 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 veculo * 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; } /* * No faz nada nesta classe */ public void anda() { } /** * Imprime as informaes do veculo */ public void imprimeInformacoes() { System.out.println("Distncia percorrida: " + kmPercorrida + " km"); System.out.println("Combustvel 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 mtodo executado sempre que uma classe * criada */ public Moto() { this.qtdCombustivel = 11; } /** * Mtodo que simula um passo no caminho */ 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 informaes do veiculo */ public void imprimeInformacoes() { System.out.println("Moto no.:" + getNumero()); // a diretiva super na frente do mtodo, significa que est chamando o mtodo da classe pai super.imprimeInformacoes(); } } /** * A classe caminho, simula o comportamento de uma motocicleta * Data: 08/04/2010 * * @author Jean.zimermann * */ public class Caminhao extends Veiculo { /** * Construtor da classe. * Esse mtodo executado sempre que uma classe * criada */ public Caminhao() { this.qtdCombustivel = 100; }

/** * Mtodo que simula um passo no caminho */ 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 informaes do caminho */ public void imprimeInformacoes() { System.out.println("Caminho no.:" + getNumero()); // a diretiva super na frente do mtodo, significa que est chamando o mtodo da classe pai super.imprimeInformacoes(); } } 2) Assinale V ou F para cada uma das afirmativas: (2 pontos) ( ) Objetos do mundo real tem duas caractersticas em comum: estado e cidade ( ) Classe o esteretipo de um objeto ( ) Atributo = Comportamento ( ) Comportamento = Ao ( ) Mensagem a forma como os objetos se comunicam ( ) Encapsulamento o mecanismo utilizado para disponibilizar mtodos que operam sobre os dados e que protegem o acesso direto indevido aos atributos de uma instncia fora da classe onde estes foram declarados ( ) Com base no diagrama do exerccio 1, podemos dizer que Veculo herda as caractersticas de Moto. ( ) Com base no diagrama do exerccio 1, correto afirmar que o mtodo imprimeInformaes sobrescrito nas classes moto e caminho. 3) Assinale V ou F para cada uma das afirmativas: (2 pontos) ( ) O modificador private na frente de um mtodo, significa que o mtodo s visvel para a prpria classe ( ) O modificador protected significa que o mtodo visvel para qualquer classe ( ) O modificador private na frente de um atributo, significa que o atributo visvel somente para os mtodos que contm o modificador public. ( ) O modificador protected na frente de um atributo, significa que o atributo visvel somente para os mtodos que contm o modificador protected. ( ) O ponto de nicio da execuo de um programa acontece no mtodo main

( ) A palavra reservada void na frente de um mtodo, significa que o mtodo no retorna nenhum valor

4) Implemente um programa Java que calcule a rea de um triangulo retngulo (possui um ngulo de 90 graus) e de um retngulo. (2 pontos) Se implementar usando herana ganha mais 1 ponto. rea do tringulo Area = base * altura / 2 rea do retngulo rea = base * altura A confirmao da pontuao ser feita mediante a resposta correta as perguntas do professor amanh durante a aula.

Boa sorte!