Orientação a Objetos e Java
Exame Final
Paulo Borba
Departamento de Informática
Universidade Federal de Pernambuco
11 de Dezembro de 1997
Questão 1
O pacote java.util de Java fornece a classe Vector
cujos objetos são "vetores". Um "vetor" é basicamente um
array de objetos (da classe Object) que pode crescer
dinamicamente, dependendo da quantidade de objetos a serem
armazenados. Isto é, a capacidade de armazenamento de um "vetor"
é variável e limitada pela memória da máquina.
Assumindo que o pacote java.util não é disponível,
implemente em Java a classe Vector com
as seguintes operações:
- um construtor que não tem argumentos e faz com que
o "vetor" inicialmente seja vazio (sem elementos);
- elementAt, que retorna o objeto armazenado em
um dado índice, e levanta a exceção
IndexOutOfBounds caso o índice não seja válido;
- addElement, que adiciona um dado elemento no final
do "vetor";
- setElementAt, que armazena um dado objeto em um
dado índice, e levanta a exceção IndexOutOfBounds
caso o índice não seja válido.
Como você indicaria em Java que a classe Vector
pertence ao pacote java.util?
Questão 2
Evitando duplicar o código de Vector e seguindo os
princípios de qualidade de software, defina em Java uma classe
SpoiledVector que é similar a Vector só
que setElementAt não levanta uma
exceção quando o índice dado é maior do que o número
de elementos armazenados no "vetor". Ao invés disso,
o setElementAt de SpoiledVector aumenta o
tamanho do "vetor", inserindo espaços vazios (null),
para o valor do índice dado e então armazena o objeto dado
como argumento.
Questão 3
Segundo os fatores de qualidade de software, quais as vantagens e
desvantagens decorrentes da classe Vector manipular
objetos da classe Object? Discuta brevemente como
estas desvantagens poderiam ser superadas em Java e em linguagens
que suportam classes parametrizadas.