Programação Orientada por Objetos

Propaganda
Programação Orientada por Objetos
Licenciatura em Engenharia Informática e de Computadores
Primeiro trabalho prático
Semestre de Inverno de 2014/2015
Neste trabalho pretende-se que os alunos adquiram prática na utilização de herança de implementação e de
interface, na utilização de iteradores e das bibliotecas de contentores e de streams do Java e no desenvolvimento de
aplicações em Android usando componentes Activity e a hierarquia de elementos View. Deverão ser usados
apenas os conceitos da linguagem Java e da plataforma Android que foram apresentados
nas aulas.
Cada grupo entregará no site da sua turma (http://thoth.cc.e.ipl.pt/classes/POO/1415i/) até 8
de Dezembro, um documento (com extensão docx, doc, pdf ou txt) que descreva a
implementação do trabalho, assim como os ficheiros fonte (java, xml, etc.) do projeto
Android realizado, devidamente comentados, comprimidos num ficheiro (com extensão
zip, rar, gz, etc.).
O trabalho consiste em desenvolver uma aplicação para Android, em que a Activity
principal tem apresentação aproximada à da figura, com o objetivo de testar a rapidez dos
reflexos do utilizador através de 20 toques realizados na área de jogo.
A área de jogo é constituída por um objeto de uma classe derivada de View que, entre
outras características, redefine o método onTouchEvent() para capturar os toques
MotionEvent e o método onDraw() para desenhar um círculo de uma determinada cor e
com um raio igual a um décimo do menor lado da área de jogo.
Cada toque na área de jogo é contabilizado em “Counter” e provoca o aparecimento de
outro círculo com outra cor numa posição aleatória. Os toques no círculo são
contabilizados em “Hits”. É registado o tempo desde o primeiro ao vigésimo toque.
Após 20 toques, caso todos sejam certeiros e o tempo registado for inferior a 20
segundos, pode ser adicionado este tempo à tabela de recordes, se ainda não existirem
10 armazenados ou o tempo for menor que o pior dos 10 armazenados. Neste caso é
questionado o nome do jogador (conforme a figura) e é armazenado o tempo e o nome.
O botão “Top 10” mostra a lista dos 10,
ou menos, melhores tempos realizados
e o respetivo nome do jogador
(conforme a figura), lançando outra
Activity cuja implementação é
exatamente a apresentada na classe
Top10Activity. Para tal, deve ser
implementada a classe TopTable por
forma
a
garantir
o
correto
funcionamento desta atividade.
Uma possível implementação deste
trabalho pode ser experimentada
instalando a aplicação deste APK.
public class Top10Activity extends Activity {
private TopTable top10;
@Override
protected void onCreate(Bundle state) {
super.onCreate(state);
top10 = new TopTable(this);
LinearLayout root = new LinearLayout(this);
root.setOrientation(LinearLayout.VERTICAL);
TextView item;
int i=1;
for(TopTable.Item e : top10) {
item = new TextView(this);
item.setText( (i++)+": "+e );
root.addView(item);
}
setContentView(root);
}
}
Na implementação deste trabalho devem considerar a utilização das classes:
 Button, TextView e LinearLayout para a apresentação principal,
 View, Paint, MotionEvent e Canvas na implementação da área de desenho,
 ArrayList<T> para armazenar em memória a tabela de recordes,
 PrintStream e Scanner para escrita e leitura do ficheiro da tabela de records,
 AlertDialog para perguntar o nome do jogador.
ISEL, 17 de Novembro de 2014
Download