Prova P2D2 PC-II Eng. Civ.
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 computador.
Figura 1: Hierarquia de classes para objetos do tipo computador.
Item (A) (5,0): Construir as classes e os métodos descritos na Figura 1 cujo funcionamento é detalhado na Tabela 1.
getPreco() getDados() printDados() Computador Retornar o valor
contido no campo preço, se o processador for menor que 3000.
Senão, retornar preco 20% maior.
Retorna uma String contendo valores dos campos da classe.
Imprimir o
conteúdo dos
campos das
classes,
empregando o método
getDados().
Laptop Retornar o mesmo valor do método da superclasse. Se o campo tamTela for maior que 15.
acrescido de 15%.
Retorna uma String contendo valores dos campos da classe.
Emprega a
implementação da superclasse.
Desktop Retornar o mesmo valor do método da superclasse. Se peso < 5, retornar o valor da superclasse 14%
maior.
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 P2D2 PC-II Eng. Civ.
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 TestaComputador tal que simula um cadastro de computadores utilizando um vetor cujo tamanho é definido pelo usuário (vide Figura 2) e cujos elementos são objetos da classe Computador. A escolha de geração dos objetos Laptop (50%) ou Desktop (50%) é realizada de modo aleatório, bem como os parâmetros do construtor de cada objeto também são definidos através de valores gerados aleatoriamente. Para tanto, será necessário empregar o pacote import java.util.Random, bem como os comandos dados na Figura 2.
import java.util.Random;
import java.util.Scanner;
Scanner in = new Scanner(System.in);
// Leitura e conversão de valores.
String s = in.nextLine();
int n = Integer.parseInt(s);
// Cria um objeto da classe Random que funciona como gerador aleatório.
Random randomNumbers = new Random();
// Gera valores aleatorios inteiros: valores {{0},{1}}.
aleat = randomNumbers.nextInt(2);
// Valores reais contidos no intervalo [20,50].
preco = 30*randomNumbers.nextDouble() + 20;
Figura 2: Gerando números aleatórios inteiros ou reais.
Item (C) (1,0): Imprimir todos os objetos contidos no vetor do Item (B) de modo que quando encontrar um objeto da classe Desktop, além de imprimir todos os dados do objeto, é mostrada a mensagem “Difícil de transportar”. Para tanto, o comando instanceof deverá ser empregado.
Item (D) (1,5): Baseado nos comandos a serem utilizados no Item (B) e em alguns tipos de Exceção descrita na Tabela 2, reescrever o código do Item (B) de modo a realizar o Tratamento de Exceção.
Exceção ArithmeticException IOException
ArrayIndexOutOfBounsException RunTimeException
FormatNumberException Tabela 2: Alguns tipos de Exceção.