Você está na página 1de 3

Disciplina: Programao Orientada a Objetos

Curso: Engenharia de Software


Semestre: 2015/2
Professores: Aline Mello e Jean Cheiran
e-mail: alinemello@unipampa.edu.br

Trabalho 2: Fbrica dos Cientistas


As diferentes tcnicas de armazenamento em arquivos (texto plano ou binrio)
e as diferentes implementaes de colees em Java (listas, conjuntos, mapas e filas)
possuem aplicaes distintas. Assim, em determinados contextos, uma tcnica
mostra-se mais adequada que outra por conta de funcionalidades, caractersticas ou
desempenho.
Esse trabalho enuncia uma srie de experincias de medio que devem ser
feitas em duplas ou individualmente para determinar o desempenho de
armazenamento de dados e de operaes sobre colees. Para tal, os seguintes
passos devem ser seguidos:
1. Fbrica dos cientistas
Obter no Moodle as classe Cientista.java e GeradorDeNome.java que
devem ser utilizadas e no podem ser modificadas.
2. Colees
Cada dupla ou indivduo deve realizar as medies para quatro colees de
cientistas. Todos devem realizar experincias com um vetor tradicional
(Cientistas[]) e outras trs colees presentes em um dos grupos de
colees apresentadas no Apndice 1. Por exemplo, um trabalho desenvolvido
sobre o grupo 1 de colees dever apresentar as medies para as seguintes
colees: vetor tradicional, ArrayLIst, HashSet e HashMap.
3. Tamanho das colees
As medies sobre as quatro colees devem ser realizadas para as seguintes
quantidades de cientistas: 10000 (dez mil), 100000 (cem mil) e 1000000 (um
milho).
4. Medies
Medir o tempo total gasto por cdigos Java para cada uma das seguintes
operaes (usar o mtodo System.nanoTime() para ser mais preciso):
a. Inserir todos os cientistas em cada coleo;
b. Verificar quantos cientistas de nome Alan Turing existe em cada uma das
colees;
c. Remover todos os cientistas com mais de 50 anos em cada uma das
colees;

Disciplina: Programao Orientada a Objetos


Curso: Engenharia de Software
Semestre: 2015/2
Professores: Aline Mello e Jean Cheiran
e-mail: alinemello@unipampa.edu.br

d. Armazenar individualmente os dados dos cientistas como texto plano.


e. Recuperar individualmente os dados dos cientistas armazenados como
texto plano.
f. Armazenar individualmente os dados dos cientistas como dados binrios.
g. Recuperar individualmente os dados dos cientistas armazenados como
dados binrios.
h. Armazenar a coleo inteira de cientistas como dados binrios.
i. Recuperar a coleo inteira de cientistas como dados binrios.
5. Organizao
O trabalho pode ser realizado em duplas ou individualmente. A indicao dos
integrantes da dupla (ou indivduo) assim como o nmero do grupo de colees com
o qual sero efetuadas as medies dever ser indicado via Moodle at s 23h59 do
dia 09/11/2015. No pode haver mais de uma dupla ou indivduo trabalhando
sobre o mesmo grupo de colees. A indicao mais antiga tem a preferncia na
escolha.

6. Apresentao
Os trabalhos sero apresentados para a turma em sala de aula nos dias 09 e
11/12. A apresentao deve conter, no mnimo, 5 grficos comparando:
a) Tempos (eixo vertical) de insero nas diferentes colees e nos diferentes
tamanhos de colees (horizontal em escala logartmica).
b) Tempos de verificao da existncia de Alan Turing.
c) Tempos de remoo de idade > 50.
d) Tempos de armazenamento no arquivo.
e) Tempo de recuperao no arquivo.
7. Entrega
Entregar os cdigos-fonte usados nas medies e a apresentao at s 23h59
do dia 08/12/15. A entrega deve ser feita na forma de um arquivo compactado
nomeado
da
seguinte
maneira
TP2_<nome1>_<nome2>.zip
ou
TP2_<nome1>_<nome2>.rar, onde <nome> se refere ao nome de cada um dos
integrantes que desenvolveu o trabalho.

Disciplina: Programao Orientada a Objetos


Curso: Engenharia de Software
Semestre: 2015/2
Professores: Aline Mello e Jean Cheiran
e-mail: alinemello@unipampa.edu.br

Apndice 1: Grupo de Colees


1
ArrayList
HashSet
HashMap
6
LinkedList
HashSet
HashMap
11
Vector
HashSet
HashMap
16
Stack
HashSet
HashMap
21
ArrayList
HashSet

2
ArrayList
LinkedHashSet
HashMap
7
LinkedList
LinkedHashSet
HashMap
12
Vector
LinkedHashSet
HashMap
17
Stack
LinkedHashSet
HashMap
22
ArrayList
TreeSet

3
ArrayList
PriorityQueue
HashMap
8
LinkedList
PriorityQueue
HashMap
13
Vector
PriorityQueue
HashMap
18
Stack
PriorityQueue
HashMap
23
ArrayList
PriorityQueue

4
ArrayList
ArrayDeque
HashMap
9
LinkedList
ArrayDeque
HashMap
14
Vector
ArrayDeque
HashMap
19
Stack
ArrayDeque
HashMap
24
ArrayList
ArrayDeque

5
ArrayList
Hashtable
HashMap
10
LinkedList
Hashtable
HashMap
15
Vector
Hashtable
HashMap
20
Stack
Hashtable
HashMap
25
ArrayList
Hashtable

TreeMap

TreeMap

TreeMap

TreeMap

TreeMap

26
LinkedList
HashSet

27
LinkedList
TreeSet

28
29
LinkedList
LinkedList
PriorityQueue ArrayDeque

30
LinkedList
Hashtable

TreeMap

TreeMap

TreeMap

TreeMap

31
Vector
HashSet

32
Vector
TreeSet

33
34
Vector
Vector
PriorityQueue ArrayDeque

35
Vector
Hashtable

TreeMap

TreeMap

TreeMap

TreeMap

36
Stack
HashSet

37
Stack
TreeSet

38
39
Stack
Stack
PriorityQueue ArrayDeque

40
Stack
Hashtable

TreeMap

TreeMap

TreeMap

TreeMap

TreeMap

TreeMap

TreeMap

Você também pode gostar