Prova de Java

Propaganda
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!
Download