Prova P2C1 PC-II Eng. Mec.
1
Nome: Matricula:Questão 1: (10,0):
O diagrama de classes da Figura 1 fornece uma hierarquia de classes que relaciona os diferentes tipos de robôs.Figura 1: Hierarquia de classes para objetos do tipo Robo.
Item (A) (5,0): Construir as classes e os métodos descritos na Figura 1 cujo funcionamento é detalhado na Tabela 1.
getVelocidade() getDados() printDados() Robo Retornar o valor
contido no campo velocidade se o valor no campo preco for maior que 40. Senão, retornar o valor de velocidade 10% menor.
Retorna uma String contendo valores dos campos da classe.
Imprimir o conteúdo dos campos das classes,
empregando o método
getDados().
Cientifico Se o robô tiver menos de 2 tarefas retornar o valor da superclasse 15% menor. Senão, retornar o mesmo valor do método da superclasse.
Retorna uma String contendo valores dos campos da classe.
Emprega a
implementação da superclasse.
Industrial Se nProdutos exceder 100, então, retornar o valor da superclasse 5% maior. Senão, retornar o mesmo valor do método da superclasse.
Retorna uma String contendo valores dos campos da classe.
Emprega a
implementação da superclasse.
Tabela 1: Comportamento de cada método para cada classe.
Prova P2C1 PC-II Eng. Mec.
2
Elaborar também os construtores com e sem parâmetros de todas as classes e sempre que possível usar super ou this.Item (B) (2,5): Construir a classe TestaRobo tal que simula um cadastro de robôs empregando um vetor cujo tamanho é definido pelo usuário e cujos elementos são objetos da classe Robo. É pedido para o usuário digitar um número se desejar inserir um objeto Cientifico (número 1) ou um Industrial (número 2). Para tanto, um objeto da classe Scanner deverá ser empregado e este deverá usar o método nextLine() (acompanhado de Integer.parseInt) ou nextInt(). Um exemplo do uso do objeto Scanner é dado na Figura 2. Para criar os objetos de cada classe use um construtor com parâmetros tal que os parâmetros também são definidos pelo usuário.
import java.util.Scanner;
Scanner in = new Scanner(System.in);
String opt; // valor da opção.
// Leitura do valor opt.
System.out.printf("Entre com a opção (1-Cientifico, 2-Industrial): ");
opt = in.nextLine();
int valor = Integer.parseInt(opt);
Figura 2: Leitura de dados via teclado com objeto da classe Scanner.
Item (C) (1,0): Imprimir todos os objetos contidos no vetor do Item (B) de modo que quando encontrar um objeto da classe Industrial, além de imprimir todos os dados do objeto, é mostrado o número de produtos vezes dois. Para tanto, uma chamada ao método getNProdutos e o comando instanceof deverão ser empregados.
Item (D) (1,5): Baseado nos comandos a serem utilizados no Item (B) e em alguns tipos de Exceção descritos na Tabela 2, reescrever o código do Item (B) de modo a realizar o Tratamento de Exceção.
Exceção ArithmeticException NegativeArraySizeException ArrayIndexOutOfBoundsException IOException
NumberFormatException Tabela 2: Alguns tipos de Exceção.