Você está na página 1de 54

MEC SETEC

INSTITUTO FEDERAL MINAS GERAIS CAMPUS BAMBU


Curso Superior de Tecnologia em Anlise e Desenvolvimento de Sistemas







ALEX DANIEL CASTANHA





SISTEMA COMPUTACIONAL PARA AUXILIAR A REALIZAO DO
TESTE DE COOPER NA ESTEIRA ELTRICA











BAMBU MG
2010


ALEX DANIEL CASTANHA









SISTEMA COMPUTACIONAL PARA AUXILIAR A REALIZAO DO
TESTE DE COOPER NA ESTEIRA ELTRICA



















BAMBU MG
2010
Trabalho de concluso de curso apresentado ao
Instituto Federal Minas Gerais IFMG campus
Bambu, como requisito parcial para a obteno
do ttulo de Tecnlogo em Anlise e
Desenvolvimento de Sistemas.

Orientador: Prof. Esp. Itagildo Edmar Garbazza

Co-orientador: Prof. Vitor Antnio de Freitas
Silva


ALEX DANIEL CASTANHA



SISTEMA COMPUTACIONAL PARA AUXILIAR A REALIZAO DO
TESTE DE COOPER NA ESTEIRA ELTRICA












Aprovado em, ____ de ____________ de 2010.

________________________________________________
Prof. Esp. Itagildo Edmar Garbazza IFMG/Campus Bambu
(Orientador)

_________________________________________________
Prof. Vitor Antnio de Freitas Silva IFMG/Campus Bambu
(Co-orientador)

________________________________________________________
Prof. M.Sc. Thiago Magela Rodrigues Dias IFMG/Campus Bambu

_________________________________________________
Prof. M.Sc. Jlio Csar dos Santos IFMG/Campus Bambu
Trabalho de concluso de curso apresentado ao
Instituto Federal Minas Gerais IFMG campus
Bambu, como requisito parcial para a obteno
do ttulo de Tecnlogo em Anlise e
Desenvolvimento de Sistemas.

Orientador: Prof. Esp. Itagildo Edmar Garbazza

Co-orientador: Prof. Vitor Antnio de Freitas
Silva


RESUMO

CASTANHA, Alex Daniel. Sistema computacional para auxiliar a realizao do teste de
Cooper na esteira eltrica. Bambu: IFMG Campus Bambu, 2010.


O teste de Cooper realizado para avaliar o desempenho em resistncia aerbica de atletas.
Para a aplicao desse teste necessrio realizar um percurso de doze minutos em uma pista
de atletismo de 400 m. Caso no exista uma pista com esses requisitos no possvel aplicar o
teste, porm, uma sada para esta situao seria aplic-lo em uma esteira eltrica. Diante
disso, o presente trabalho prope um sistema computacional desenvolvido com a linguagem
de programao Java para auxiliar a realizao do teste de Cooper na esteira eltrica. Nessa
esteira estar posicionado um reed switch para que a cada volta completada nela, este
dispositivo gera um pulso eltrico, acionando um clique do boto esquerdo do mouse, o
mesmo far a funo de uma interface de comunicao de dados. O clique ser capturado pelo
sistema por meio do evento mouseClicked, do componente JPanel, e interpretado como uma
volta concluda na esteira. Esta tarefa s ser encerrada quando o avaliado atingir o tempo de
doze minutos. Ao trmino do teste, os dados sero armazenados em um arquivo texto para que
outro sistema importe-o a fim de calcular e avaliar o desempenho em resistncia aerbica do
avaliado por meio dos dados coletados.

Palavras-chave: Sistema computacional, reed switch, esteira eltrica.




LISTA DE FIGURAS


Figura 1 Dispositivo reed switch. .............................................................................................. 7
Figura 2 Interface de comunicao de dados utilizada entre a esteira eltrica e o sistema. ...... 8
Figura 3 Digrama de classes do pacote modelo. ...................................................................... 11
Figura 4 Diagrama de classes do pacote visao. ....................................................................... 13







SUMRIO

1 INTRODUO ................................................................................................................. 1
1.1 Contextualizao ........................................................................................................ 1
1.2 Justificativa ................................................................................................................. 1
1.3 Objetivos: Geral e Especficos ................................................................................... 2
1.4 Estrutura do Trabalho ............................................................................................... 2
2 REFERENCIAL TERICO ........................................................................................... 4
2.1 Teste de Cooper .......................................................................................................... 4
2.2 Sistema computacional .............................................................................................. 4
3 MATERIAIS E MTODOS ............................................................................................ 6
3.1 Recebimento dos dados externos .............................................................................. 6
3.2 A interface de comunicao ....................................................................................... 6
3.2.1 O dispositivo reed switch ...................................................................................... 6
3.2.2 O reed switch conectado na interface do mouse USB ........................................ 7
3.3 Modelagem e implementao do sistema ................................................................. 8
3.3.1 Ferramentas necessrias para implementao do sistema ................................ 9
3.3.2 As classes implementadas .................................................................................. 10
3.4 Funcionamento do sistema ...................................................................................... 14
4 RESULTADOS E DISCUSSO .................................................................................... 15
5 CONCLUSES E RECOMENDAES ..................................................................... 16
APNDICE A Especificao do Projeto ............................................................................ 17
APNDICE B Classe ArquivoTexto ................................................................................... 25
APNDICE C Classe EsteiraEletrica ................................................................................. 28
APNDICE D Classe AnaliseDados ................................................................................... 29
APNDICE E Classe CursorMouse ................................................................................... 30
APNDICE F Classe TesteDeCooper ................................................................................. 32
APNDICE G Classe SobreOSistema ................................................................................ 33
APNDICE H Classe TelaTesteCooper .............................................................................. 38
APNDICE I Classe TelaPrincipal .................................................................................... 42
ANEXO A Formato do arquivo texto para importao dos dados do teste ................... 46
AGRADECIMENTOS ........................................................................................................... 47
REFERNCIAS BIBLIOGRFICAS .................................................................................. 48
1

1 INTRODUO

O teste de Cooper possui este nome devido ao sobrenome de seu criador: o Dr.
Kenneth Cooper. Este teste tem o objetivo de avaliar a capacidade de desempenho em
resistncia do avaliado. Para realizar tal teste necessrio que o avaliado realize um percurso
de doze minutos numa pista de atletismo de 400 m (WEINECK, 2003).
Porm, uma pista com as especificaes citadas por Weineck (2003) no encontrada
facilmente, pois nem todas as cidades possuem uma pista como a prevista por Cooper, fator
que acaba dificultando a aplicao do teste. Uma medida para contornar esta situao seria
realizar o teste em uma esteira eltrica.
Para facilitar a mencionada avaliao, o presente trabalho prope um sistema
computacional que auxilie na realizao do teste de Cooper na esteira eltrica.
Na esteira eltrica estar acoplado um reed switch, conectado no boto esquerdo do
mouse, o que far com que cada pulso eltrico gerado por ele dispare um clique do mouse,
sendo esse contabilizado pelo sistema como uma volta concluda na esteira. A funo do
mouse trabalhar como uma interface de comunicao entre a esteira eltrica e o sistema.
A linguagem de programao Java foi utilizada para desenvolver o sistema e as
principais classes da biblioteca Java utilizadas foram: Robot, MouseMotionAdapter e
MouseAdapter.

1.1 Contextualizao

A falta da pista para corrida pode dificultar a aplicao do teste de Cooper. Pode-se
destacar o municpio de Bambu MG, que no possui uma pista como essa e conta com
diversos esportes que dependem do desempenho em resistncia de atletas, tais como: futebol,
futebol de salo, voleibol, handebol, basquetebol, entre outros. Diante desse cenrio prope-se
um sistema computacional para auxiliar a realizao do teste de Cooper na esteira eltrica.

1.2 Justificativa

Com a realizao do teste de Cooper na esteira eltrica utilizando um sistema
computacional para auxiliar sua execuo, o teste poder ser aplicado em diversas
comunidades desportivas ou em outros locais que necessitem desta avaliao e principalmente
no possuam uma pista adequada dificultando assim a execuo do teste.
2

Vale tambm destacar que os efeitos climticos podem inviabilizar a realizao do
teste de Cooper, ou seja, caso esteja chovendo no dia da aplicao do teste, o mesmo ter que
ser cancelado. A temperatura tambm contribui durante a execuo do teste. O excesso de
calor ou frio podem interferir no desempenho do avaliado.
Ao se realizar o teste de Cooper na esteira eltrica localizada em uma sala, possvel
que os fatores citados anteriormente no faam interferncia em sua realizao. Desse modo
torna-se possvel sua aplicao em quaisquer situaes em que os efeitos climticos se
encontrem.

1.3 Objetivos: Geral e Especficos

O objetivo geral deste trabalho desenvolver um sistema computacional que permita a
realizao do teste de Cooper na esteira eltrica capturando os dados atravs da porta de
comunicao do computador, para que ao trmino do teste os dados computados sejam
interpretados por meio do sistema para avaliao do teste de Cooper, desenvolvido por
Coutinho (2010).
Para que o objetivo geral do trabalho seja alcanado necessrio atingir os seguintes
objetivos especficos:
Montar a interface de comunicao (conectar o reed switch no mouse);
Desenvolver o sistema para a leitura dos dados da interface de comunicao;
Realizar testes no sistema com a interface de comunicao conectada no
computador;

1.4 Estrutura do Trabalho

O presente trabalho est estruturado em cinco captulos.
O primeiro captulo realiza uma introduo do trabalho com contextualizao,
justificativa, o objetivo geral e os objetivos especficos.
No segundo captulo apresentado um referencial terico para fundamentar os
principais conceitos abordados neste trabalho.
O terceiro captulo descreve todo o procedimento realizado para a concluso do
trabalho detalhando os passos e as ferramentas utilizadas.
O quarto captulo relata os resultados obtidos com o sistema desenvolvido, como a
realizao de testes para garantir a confiabilidade dos dados.
3

O ltimo captulo encerra descrevendo a concluso do objetivo do trabalho proposto e
recomendaes para serem feitas como trabalho futuros.
4

2 REFERENCIAL TERICO

2.1 Teste de Cooper

Em 1968, Kenneth Cooper ao realizar testes de campo com militares da Fora Area
Americana descreveu um procedimento avaliativo (teste de 12 minutos) para a estimativa do
VO
2mx
1
(COOPER, 1968 apud COSTA, 2008).
Segundo Granja Filho et al. (2005) citado por Costa (2008) o VO
2mx
um parmetro
usado para a avaliao da funo cardiorrespiratria mxima e reserva funcional.
Alm disso, a mensurao do VO
2mx
pode ser indicada por vrias razes, desde a
anlise da funo cardiorrespiratria, em pneumo e cardiopatas, at a predio de desempenho
em atletas (COSTA, 2008).
O teste de Cooper o teste mais frequente na avaliao da capacidade de desempenho
em resistncia (WEINECK, 2003).
Segundo Weineck (2003) para realizar o teste de Cooper necessria uma pista de
atletismo com 400 m. O teste executado nesta pista durante um percurso de doze minutos.
Ao trmino do teste calculada a distncia total percorrida pelo avaliado e seu
desempenho calculado pela frmula do VO
2mx
.

2.2 Sistema computacional

A palavra sistema possivelmente o termo mais usado e abusado do vocabulrio
tcnico. Falamos de sistemas polticos e sistemas educacionais, de sistemas
bancrios e de sistemas metrovirios. A palavra nos diz pouco. Usamos o adjetivo
que descreve o sistema para entender o contexto no qual a palavra usada
(PRESSMAN, 2006).

Para Pressman (2006) um sistema baseado em computador um conjunto ou
disposio de elementos que organizado para executar certo mtodo, procedimento ou
controle ao processar informaes.
Uma caracterstica dos sistemas que as propriedades e o comportamento de seus
componentes esto intrinsecamente interligados. O funcionamento bem sucedido de cada
componente do sistema depende do funcionamento de alguns outros componentes [...]
(SOMMERVILLE, 2008).
Segundo Rezende (2005) um sistema pode ser definido como:
_______________
1
VO
2mx
= (m 504,9) / 44,73, onde m indica a distncia em metros percorrida pelo avaliado (COSTA, 2008).
5


[...] Conjunto de partes que interagem entre si, integrando-se para atingir um
objetivo ou resultado; partes interagentes e interdependentes que conjuntamente
formam um todo unitrio com os determinados objetivos e efetuam determinadas
funes; em informtica, o conjunto de software, hardware e recursos humanos;
componentes da tecnologia da informao e seus recursos integrados; empresa ou
organizao e seus vrios subsistemas ou funes organizacionais (REZENDE,
2005).

6

3 MATERIAIS E MTODOS

Em cada subseo deste captulo so detalhados os passos e as ferramentas que foram
necessrias para atingir o objetivo central do trabalho.

3.1 Recebimento dos dados externos

Antes de desenvolver o sistema foi necessrio estabelecer qual porta de comunicao
receberia o pulso eltrico gerado pelo reed switch.
Como o pulso eltrico gerado pelo reed switch no um sinal interpretvel pelas
portas de comunicao do computador, necessrio desenvolver uma interface de
comunicao para que esse sinal possa ser interpretado.
A partir da necessidade de desenvolver uma interface de comunicao, foi sugerida a
utilizao do mouse do computador como uma interface entre o sistema e a esteira eltrica.
Assim no necessrio capturar as voltas percorridas na esteira em uma porta especfica do
computador, visto que existem trs tipos de entrada para o mouse, sendo: a PS2, a Serial e a
USB.
Neste trabalho foi utilizado o mouse USB por ser encontrado facilmente, possuir um
baixo custo e ser uma entrada universal.

3.2 A interface de comunicao

As subsees a seguir descrevero os materiais que foram utilizados para desenvolver
a interface de comunicao.

3.2.1 O dispositivo reed switch

Um interruptor magntico de lminas (reed switch) um dispositivo que contm
duas lminas flexveis de material ferromagntico (NiFe), seladas hermeticamente
dentro de uma cpsula de vidro que preenchida com um gs inerte. Essa atmosfera
de gs inerte protege as regies de contato eltrico das lminas impedindo as
oxidaes. As lminas esto sobrepostas, porm separadas por um pequeno espao.
As regies que entraro em contato so folheadas com um metal nobre tal como
rdio ou rutnio, de modo a proporcionar caractersticas eltricas estveis e de
notvel longevidade (NETO, 2010).

7

Este dispositivo funciona como um interruptor (liga [1] / desliga [0]), acionado por um
campo magntico produzido por um m ou eletro-m dele aproximado (UFRGS, 2010). Na
Figura 1 pode ser observado um reed switch.


Figura 1. Dispositivo reed switch.

O reed switch ser acoplado na esteira eltrica e na parte rolante da esteira ser
posicionado um m, para que a cada volta percorrida, este m passe pelo reed switch,
gerando o pulso eltrico.
Para iniciar a primeira volta na esteira eltrica necessrio que o m esteja
posicionado logo aps onde se encontra o reed switch, fazendo assim com que a primeira
volta completada na esteira seja por inteira, ou seja, caso o m fique antes do reed switch, a
volta ser contabilizada pelo sistema antes mesmo do avaliado completar o primeiro percurso
na esteira.

3.2.2 O reed switch conectado na interface do mouse USB

A interface de comunicao sugerida neste trabalho opera da seguinte forma: cada
volta percorrida pelo usurio na esteira eltrica equivale a um clique do boto esquerdo do
mouse sendo esse capturado pelo sistema.
Utilizando o mouse USB para realizar a comunicao entre o reed switch e o sistema
foi observada a necessidade de realizar algumas adaptaes para que ele opere de acordo com
a ideia proposta no pargrafo anterior. A adaptao realizada foi feita da seguinte maneira:
A carcaa do mouse foi retirada deixando apenas o circuito interno;
O reed switch foi conectado no boto esquerdo do mouse para que ao gerar o
pulso eltrico seja disparado um clique indicando assim que uma volta foi
concluda na esteira eltrica.
Na Figura 2 pode ser visualizada a interface de comunicao com as devidas
adaptaes.

8


Figura 2. Interface de comunicao de dados utilizada entre a esteira eltrica e o sistema.

3.3 Modelagem e implementao do sistema

Antes de iniciar o desenvolvimento do sistema foi necessrio realizar uma coleta de
requisitos com um profissional da rea de educao fsica. O professor M.Sc. Jlio Csar dos
Santos do IFMG Campus Bambu concedeu uma entrevista a fim de esclarecer dvidas a
respeito da realizao do teste de Cooper.
A partir da coleta de requisitos e das pesquisas realizadas durante o desenvolvimento
do trabalho foi possvel modelar os diagramas de caso de uso, de sequncia e de classes, da
UML (Unified Modeling Language ou Linguagem de Modelagem Unificada).

A UML uma linguagem visual utilizada para modelar sistemas computacionais por
meio do paradigma de Orientao a Objetos. Esta linguagem tornou-se, nos ltimos
anos, a linguagem padro de modelagem de software adotada internacionalmente
pela indstria de Engenharia de Software (GUEDES, 2009).

O diagrama de casos de uso costuma ser utilizado no incio da modelagem do sistema,
principalmente nas etapas de levantamento e anlise de requisitos (GUEDES, 2009). Este foi
o primeiro diagrama modelado a partir da coleta de requisitos e do trabalho desenvolvido por
Coutinho (2010). Aps a modelagem do diagrama de casos de uso, foi feita a especificao
para cada caso de uso.
Segundo Guedes (2009) o diagrama de sequncia procura determinar a sequncia de
eventos que ocorrem em um determinado processo. O diagrama de sequncia foi modelado
para cada caso de uso indicando os eventos realizados pelo ator.
9


O diagrama de classes , com certeza, o mais importante e o mais utilizado diagrama
da UML. Seu principal enfoque est em permitir a visualizao das classes que
comporo o sistema com seus respectivos atributos e mtodos, bem como em
demonstrar como as classes do diagrama se relacionam complementam e transmitem
informao entre si (GUEDES, 2009).

O apndice A deste trabalho apresenta a especificao do projeto contendo as
especificaes do sistema, assim como a especificao dos requisitos do sistema e seu modelo
de anlise.
Na subseo a seguir ser detalhada cada ferramenta que foi utilizada para
implementao do sistema e na prxima subseo sero descritas as classes que foram
implementadas e suas funcionalidades.

3.3.1 Ferramentas necessrias para implementao do sistema

A ferramenta utilizada para modelar os diagramas de casos de uso, de sequncia e de
classes foi a ferramenta CASE (Computer-Aided Software Engineering, Engenharia de
Software com o auxlio do computador), StarUML 5.0.
Para realizar a implementao do sistema foi escolhida a linguagem de programao
Java.
Segundo Deitel, H. M. e Deitel, P. J. (2010), a linguagem Java foi construda pela Sun
Microsystems baseada em duas outras linguagens: C e C++ proporcionando uma enorme base
de programadores altamente qualificados.

A linguagem foi lanada em 1995 revolucionando o desenvolvimento de softwares
com cdigos orientados a objetos e extremamente portvel de modo a ser apropriada
para a implementao de aplicativos que usem entre outros recursos multimdia
(udio, imagens) e applets (DEITEL, H. M.; DEITEL, P. J., 2010).

A escolha desta linguagem se deu por dois motivos principais: a portabilidade e por
possuir uma rica interface de programao de aplicativos do ingls Application Programming
Interface (API).
Portabilidade a capacidade de uma aplicao operar em diferentes plataformas de
hardware e software (RODRIGUEZ; FERRANTE, 2004).

Um dos pontos fortes de Java seu rico conjunto de classes predefinidas, as quais os
programadores podem reutilizar em vez de reinventar a roda. As inmeras classes
predefinidas de Java so agrupadas em categorias de classes relacionadas chamadas
10

pacotes. Os pacotes so conhecidos coletivamente como biblioteca de classes Java
ou interface de programao de aplicativos (Application Programming Interface
API) (DEITEL, H. M.; DEITEL, P. J., 2010).

No desenvolvimento do sistema foram utilizadas as seguintes ferramentas: a Java
Development Kit (JDK) J2SE (Java 2 Standard Edition), a Java Runtime Environment (JRE) e
o ambiente de desenvolvimento integrado, Integrated Development Environment (IDE)
NetBeans 6.8.
A JDK um conjunto de utilitrios composto por compilador e bibliotecas.
A JRE utilizada para executar aplicaes desenvolvidas em Java composto por
bibliotecas e pela mquina virtual Java, Java Virtual Machine (JVM).

A JVM uma especificao para um computador abstrato. Ela consiste em um
carregador de classes (class loader) e um interpretador Java que executa os cdigos
de bytes independentes da arquitetura [...]. O carregador de classes carrega arquivos
.class do programa Java e da API Java para execuo pelo interpretador Java
(SILBERSCHATZ; GALVIN; GAGNE, 2008).

A JVM uma camada extra entre o sistema operacional e a aplicao sendo
responsvel por traduzir os bytecodes compatveis com os do sistema operacional, onde ser
executada a aplicao Java, tornando-a multiplataforma.

3.3.2 As classes implementadas

Com a escolha da linguagem de programao e as ferramentas instaladas iniciou-se o
processo de implementao do sistema.
O sistema possui dois pacotes: o modelo, no qual existem as classes responsveis pelas
funcionalidades do sistema; e a viso, na qual foram implementadas as interfaces grficas.
O pacote modelo composto pelas classes: ArquivoTexto, EsteiraEletrica,
AnaliseDados, CursorMouse e TesteDeCooper, o cdigo-fonte destas classes podem ser
encontrado respectivamente nos Apndices B, C, D, E e F. Na Figura 3 pode ser visualizado o
digrama de classe representando as classes implementadas no sistema do pacote modelo.

11


Figura 3. Digrama de classes do pacote modelo.

A classe ArquivoTexto responsvel por exibir uma tela na qual o usurio do sistema
informa o caminho em que deseja salvar o teste e gravar os dados obtidos em um arquivo
texto. O formato do arquivo texto conforme o proposto por Coutinho (2010), esse pode ser
visualizado no Anexo A deste trabalho. A implementao desta janela foi realizada por meio
da classe JFileChooser do pacote javax.swing fornecida pela prpria linguagem Java.
A prxima classe implementada foi a EsteiraEletrica, a principal funcionalidade desta
classe atribuir o valor da distncia da esteira para que seja possvel calcular a distncia
percorrida pelo usurio.
A classe AnaliseDados responsvel por calcular a distncia percorrida e indicar o
trmino do teste, gerando o arquivo texto por meio da instncia da classe ArquivoTexto. Tal
classe implementa a interface ActionListener que sobrescreve o mtodo actionPerformed.
Neste mtodo foi implementado o clculo do tempo na razo de trinta segundos e a relao
dos dados obtidos nesse intervalo, assim como o proposto por Coutinho (2010).
A classe CursorMouse possui uma varivel static do tipo int chamada voltas para que
esta seja compartilhada entre o objeto instanciado na classe TelaTesteCooper, na qual sero
contabilizadas as voltas percorridas na esteira eltrica e na AnaliseDados que ser necessria
para calcular a distncia percorrida pelo usurio.
Conforme a interface de comunicao proposta na subseo 3.2 deste captulo, o
clique do mouse ser contabilizado como uma volta concluda na esteira eltrica. Para
12

contabilizar esta volta necessrio que o cursor do mouse encontre-se posicionado em cima
de algum componente da interface grfica. O componente utilizado para receber este evento
foi o JPanel, um painel implementado na classe TelaTesteCooper do pacote viso.
No incio do teste o cursor do mouse ser movimentado automaticamente para o
JPanel e garantir que ele permanea focado neste componente durante a realizao do teste,
para contabilizar todos os eventos gerados pela interface de comunicao.
Para executar esta tarefa foi utilizada uma instncia da classe Robot fornecida pela
prpria linguagem Java do pacote java.awt.
Essa classe usada para gerar eventos de entrada do sistema nativo para fins de
automao de teste, auto-execuo, demos e outras aplicaes nas quais o controle do mouse e
do teclado necessrio (SUN, 2010).
O mtodo responsvel pelo movimento do mouse da classe Robot o
mouseMoved(x,y) que pede como parmetros as coordenadas x e y para informar a posio
que deseja moviment-lo na tela. Este mtodo foi implementado na classe CursorMouse,
dentro do mtodo fixarCursorMouse(x,y).
A chamada deste mtodo foi implementada no evento
addMouseMotionListener(MouseMotionListener), do painel JPanel que disparado quando o
cursor do mouse movimentado. Tal evento pede como parmetro um objeto da classe
MouseMotionListener. O parmetro passado para este mtodo foi um objeto annimo da
classe MouseMotionAdapter no qual possvel implementar somente o mtodo desejado. O
mtodo sobrescrito por esta classe foi o mouseMoved() que disparado quando ocorre um
movimento do mouse.
A classe TesteDeCooper responsvel por iniciar e cancelar o teste de Cooper. Ela
instanciada no construtor, um objeto chamado cronometro do tipo Timer(delay,
ActionListener). Como parmetros ele pede o delay, a demora do tempo em milissegundos
que o evento ocorrer; e o ActionListener, o evento que ser disparado no intervalo de cada
delay. O delay passado foi 30000 milissegundos indicando que os eventos sero disparados a
cada trinta segundos e foi passado um objeto da classe AnaliseDados que implementa a
interface ActionListener, na qual ocorrero os eventos.
O pacote viso composto pelas classes: SobreOSistema, TelaTesteCooper e
TelaPrincipal. O cdigo-fonte destas classes so encontrados respectivamente nos apndices
G, H e I. Na Figura 4 pode ser visualizado o diagrama de classes do pacote viso.

13


Figura 4. Diagrama de classes do pacote visao.

A classe SobreOSistema exibe uma janela de dilogo herdada pela classe JDialog do
pacote javax.swing na qual so exibidas algumas informaes sobre o sistema.
A classe TelaTesteCooper uma herana da classe JFrame e composta por um
JTextField (campo editvel), dois JButton (boto) e um JPanel (painel). O edDistancia uma
instncia da classe JTextField na qual o usurio informa a distncia que a esteira eltrica
possui. O btnIniciar e o btnCancelar so instncias da classe JButton. O painelContabiliza
uma instncia da classe JPanel.
O btnIniciar utilizado para iniciar o teste de Cooper e possui os respectivos mtodos:
setDistancia(distancia) da classe EsteiraEletrica para atribuir a distncia da parte rolante da
esteira; fixarCursorMouse(x,y) da classe CursorMouse para movimentar o cursor do mouse
at um ponto especfico do painelContabiliza no qual sero contabilizados os eventos de
clique disparados pela interface de comunicao adaptada; e iniciarTesteDeCooper() da
classe TesteDeCooper, responsvel por iniciar o teste iniciando o cronmetro e aguardando os
eventos disparados pela interface de comunicao.
O btnCancelar foi implementado para caso ocorra alguma eventualidade durante a
realizao do teste o usurio do sistema tenha uma sada para cancelar o teste. Neste boto
chamado o mtodo cancelarTesteDeCooper(), no qual parado o cronmetro e cancelado o
teste.
O painelContabiliza desempenha um papel fundamental no sistema, pois, atravs dele,
so contabilizadas as voltas percorridas pelo usurio na esteira eltrica. Nesse painel foi
implementado o evento addMouseListener(MouseListener). O parmetro passado nesse
mtodo foi um objeto annimo da classe MouseAdapter na qual possvel implementar
somente os mtodos que sero necessrios. O mtodo sobrescrito utilizado desta classe foi o
14

mouseClicked() para que cada vez que houver o disparo do evento do clique do mouse, a volta
percorrida seja contabilizada pelo mtodo contarVoltas() da classe CursorMouse;
A ltima classe do pacote viso a TelaPrincipal uma herana da classe JFrame,
essa classe representa a janela inicial da aplicao, a qual ser o ponto de partida para o
usurio do sistema realizar o teste de Cooper.

3.4 Funcionamento do sistema

O usurio do sistema inicia a aplicao e seleciona no menu Arquivo a opo Teste de
Cooper. O sistema abrir a janela para iniciar o teste.
Nessa janela o usurio dever informar a distncia em metros da parte rolante da
esteira. O usurio deve verificar se o m que est sobre a esteira encontra-se logo aps o reed
switch para que a volta seja contabilizada por inteiro. Feito isso, o avaliado deve posicionar-se
na esteira eltrica e comear o teste atravs do boto iniciar teste.
A partir da o teste comear e terminar aps atingir o perodo de doze minutos de
corrida. Caso acontea alguma eventualidade durante a realizao do teste, o usurio tem a
opo de abortar, atravs do boto cancelar.
Ao trmino do teste o sistema exibir uma janela para que o usurio informe onde
deseja salvar o arquivo gerado. O usurio informa o local, digita um nome para o arquivo e
clica no boto salvar.
Para interpretar os dados obtidos neste teste o usurio deve executar o sistema para
avaliao do teste de Cooper desenvolvido por Coutinho (2010), no qual ele ir importar o
arquivo texto e ento ser dado o desempenho em resistncia aerbica do avaliado e a gerao
de grficos para melhor visualizao do resultado.

15

4 RESULTADOS E DISCUSSO

Para certificar a confiabilidade do sistema proposto foi realizado testes a fim de
garantir que os eventos gerados pela interface de comunicao fossem contabilizados pelo
sistema.
O teste no foi realizado na esteira eltrica, mas sim manualmente, ou seja, o m foi
passado sobre o reed switch de forma manual, simulando uma volta percorrida na parte
rolante da esteira.
A aplicao do teste teve o mesmo perodo de durao do teste de Cooper. Toda vez
que o m foi passado sobre o reed switch a interface de comunicao disparava o evento do
clique do mouse e este era contabilizado manualmente indicando que uma volta foi concluda.
No trmino do teste os resultados apontados manualmente foram comparados com os
obtidos pelo sistema. Foi observado por meio dos resultados que o sistema foi capaz de
contabilizar todas as voltas com preciso, no apresentando perdas visto que o m no foi
passado pausadamente sobre o reed switch.
Porm, um fator muito importante para a eficincia do sistema o ponteiro do mouse
ficar posicionado sobre um painel, no caso, o painelContabiliza da janela do teste, durante
toda sua realizao, garantindo assim que os eventos gerados pela interface de comunicao
sejam contabilizados pelo sistema.
Deste modo, o usurio do sistema no poder manipular o mouse durante a realizao
do teste, pois se a interface de comunicao disparar um evento no momento em que o mouse
for retirado de cima do painelContabiliza (painel), o sistema no ir contabilizar a volta
concluda na esteira.
Mas ao se utilizar um painel para receber os eventos gerados pela interface de
comunicao a dimenso para contabiliz-lo maior, isto , caso o usurio tente movimentar
o mouse, o espao para contabilizar a volta mais extenso. Considerando que o tamanho do
painelContabiliza estende-se por toda a janela do teste, garante-se que a volta seja capturada
pelo sistema.
16

5 CONCLUSES E RECOMENDAES

O sistema desenvolvido neste trabalho mostrou ser eficiente para realizar o teste de
Cooper na esteira eltrica. Os objetivos do trabalho foram alcanados. Porm, vale destacar
que, para garantir sua eficincia o mouse no pode ser manipulado durante a realizao do
teste, o que garante um bom desempenho do sistema.
O arquivo texto gerado automaticamente pelo sistema contm os dados relativos
realizao do teste. Esse arquivo deve ser salvo pelo usurio para que o Sistema para anlise
do teste de Cooper de Coutinho (2010) importe-o para interpretar os dados. Esses dados sero
processados e ser informado ao usurio o desempenho em resistncia do avaliado, por meio
de tabelas comparativas e grficos a fim de facilitar sua visualizao.
Para melhor desempenho do sistema existem alguns pontos que podem ser
melhorados, tais como: construir uma nova interface de comunicao para que o recebimento
dos dados no seja interpretado como um clique do mouse; integrar este sistema com o
Sistema para avaliao do teste de Cooper de Coutinho (2010) tornando a avaliao em tempo
real; e realizar o teste de Cooper na esteira eltrica e na forma j consagrada com a avaliao
sendo realizada por um profissional da rea de sade.
17

APNDICE A Especificao do Projeto


A ESPECIFICAO DO SISTEMA

1 Nome do Projeto

Sistema para auxiliar a realizao do teste de Cooper na esteira eltrica.

2 Objetivo do Projeto

Desenvolver um sistema, baseado no computador, para auxiliar a realizao do teste de
Cooper na esteira eltrica.

3 Escopo

O presente projeto constitui-se de um sistema, que auxilie na realizao do teste de
Cooper na esteira eltrica. A esteira eltrica ser monitorada por uma interface de
comunicao, construda a partir de um reed switch e de um mouse USB (Universal Serial
Bus), que ser responsvel por informar ao sistema, quando uma volta for completada na
esteira. O sistema ir coletar os dados gerados por esta interface, calcular a distncia
percorrida em intervalos de trinta segundos, e armazen-los em um arquivo texto. A
interpretao dos dados coletados no faz parte das funcionalidades deste sistema, sendo
interpretado por outro aplicativo.

3.1 Definio dos mdulos e funcionalidades do sistema


Mdulo Funcionalidade Finalidade
Coletar e interpretar dados
Coletar dados gerados pela
interface de comunicao e
interpret-los.
Contabilizar as voltas
completadas na esteira
eltrica, calcular as voltas
no intervalo de 30 segundos
e armazen-las
Teste de Cooper
Iniciar o teste de Cooper e
cancel-lo a qualquer
momento
Invocar as outras
funcionalidades do sistema,
para iniciar o teste de
Cooper.




18

B ESPECIFICAO DOS REQUISITOS DO SISTEMA

1 Mapeamento dos Casos de Uso

ID CASO DE USO NOME MDULO FUNCIONALIDADE
UC01
Iniciar teste de
Cooper
Teste de
Cooper
Dar incio na
realizao do teste de
Cooper
UC02
Cancelar teste de
Cooper
Teste de
Cooper
Cancelar o teste de
Cooper
UC03
Gerar Arquivo
texto
Coletar e
interpretar
dados
Armazenar os dados
obtidos do teste em um
arquivo texto
UC04 Contabilizar voltas
Coletar e
interpretar
dados
Contar as voltas dadas
pelo o avaliado na
esteira.
UC05 Calcular distncia
Coletar e
interpretar
dados
Calcular a distncia
percorrida pelo o
avaliado


2 Diagrama de Contexto





3 Especificao dos Casos de Uso

Abaixo esto as especificaes de cada caso de uso.

UC01 Iniciar teste de Cooper
Sumrio: Este caso de uso descreve os passos do ator para iniciar a realizao do teste.
Ator: Usurio do sistema
Pr-condies: Nenhuma
Fluxo Principal:
19

1.0 O ator inicia a aplicao e abre a tela do teste de Cooper
2.0 O sistema exibe a tela contendo:
- Distncia da esteira eltrica em metros (campo editvel);
- As opes:
* Iniciar teste;
* Cancelar;
3.0 O ator seleciona a opo Iniciar teste [E1] [E2] [A1]
4.0 O sistema executa o UC04 (contabilizar voltas) [A2]
5.0 O caso de uso encerrado
Fluxo Alternativo:
[A1] O ator selecionou a opo Cancelar
1.0 O sistema permanece no passo 4.
[A2] O ator selecionou a opo Cancelar
1.0 O caso de uso UC 02 executado;
2.0 O caso de uso encerrado.
Ps-condies: O caso de uso UC03 (gerar arquivo texto) deve ser executado aps o
trmino deste caso de uso.
Fluxo de exceo:
[E1] O ator selecionou a opo Iniciar teste e no informou a distncia
1.0 O sistema exibe a mensagem [M1]
2.0 O sistema permanece no passo 4 do fluxo principal.
[E2] O ator selecionou a opo Iniciar teste e informou um valor diferente de
numrico
1.0 O sistema exibe a mensagem [M2]
2.0 O sistema permanece no passo 4 do fluxo principal.
Mensagens:
[M1] obrigatrio informar a distncia da esteira
[M2] Este campo s aceita valor numrico

UC02 Cancelar teste de Cooper
Sumrio: O sistema deve encerrar o teste de Cooper.
Ator: Usurio do sistema
Pr-condies:
O caso de uso UC01 (Iniciar teste de Cooper) deve ter sido executado
Fluxo Principal:
1.0 O ator seleciona a opo Cancelar
2.0 O sistema exibe uma mensagem de confirmao [M1] [A1]
3.0 O sistema encerra o teste
4.0 O caso de uso encerrado
Fluxo Alternativo:
[A1] A mensagem [M1] contm as opes Sim e No
1.0 O ator seleciona a opo Sim. [A1.1]
2.0 O teste encerrado.
3.0 O caso de uso encerrado
[A1.1] O ator selecionou a opo No
1.0 O sistema continua com a realizao do teste.
2.0 O caso de uso encerrado.
Ps-condies: Nenhuma
Fluxo de exceo: Nenhum
20

Mensagens:
[M1] Voc deseja realmente cancelar o teste?

UC03 gerar arquivo texto
Sumrio: O sistema deve gravar os dados obtidos do teste no arquivo, e o usurio do
sistema deve informar onde deseja salv-lo
Ator: Usurio do sistema
Pr-condies: O caso de uso UC01 deve ter sido encerrado com sucesso.
Fluxo Principal:
1.0 O sistema exibe uma tela contendo:
- Nome do arquivo (campo editvel)
- As opes:
*Salvar;
*Cancelar.
2.0 O ator seleciona a opo Salvar [A1]
3.0 O sistema armazena os dados no arquivo texto
4.0 O sistema salva o arquivo no caminho especificado pelo o ator
5.0 O caso de uso encerrado
Fluxo Alternativo:
[A1] O ator selecionou a opo cancelar
1.0 O sistema exibe uma mensagem de confirmao [M1] com as opes:
*Sim;
*No.
2.0 O ator seleciona a opo Sim [A1.1]
3.0 O sistema no gera o arquivo texto
4.0 O caso de uso encerrado
[A1.1] O ator seleciona a opo No
1.0 O sistema retorna ao passo 2 do fluxo principal
Ps-condies: Nenhuma
Regras de negcio: Nenhum
Fluxo de exceo: Nenhum
Mensagens:
[M1] Voc NO deseja SALVAR o teste?

UC04 contabilizar voltas
Sumrio: O caso de uso deve contar as voltas percorridas na esteira, informadas pelo o
ator.
Ator: Interface de comunicao
Pr-condies: O caso de uso UC01 (Iniciar teste de Cooper) deve ter sido executado.
Fluxo Principal:
1.0 O ator informa que uma volta foi percorrida na esteira
2.0 O sistema contabiliza a volta [RN1] [RN2]
3.0 O sistema executa o UC05 (calcular distncia) quando satisfizer a regra de negcio
[RN2]
4.0 O caso de uso encerrado quando satisfizer a regra de negcio [RN1]
Fluxo Alternativo: Nenhum
Ps-condies: Nenhuma
Regras de negcio:
21

[RN1] O sistema contabilizar as voltas por um perodo de doze minutos (tempo de
realizao do teste de Cooper).
[RN2] O sistema calcula as voltas percorridas num intervalo de 30 segundos, decorrido
este tempo o UC05 (calcular distncia) executado.
Fluxo de exceo: Nenhum
Mensagens: Nenhuma

UC05 Calcular distncia
Sumrio: O sistema deve calcular a distncia percorrida pelo o avaliado por meio das
voltas realizadas na esteira eltrica
Ator: Interface de comunicao
Pr-condies: O caso de uso UC04 (contabilizar voltas) deve ter sido iniciado
Fluxo Principal:
1.0 O sistema calcula a distncia percorrida a cada 30 segundos passados da realizao
do teste [RN1]
2.0 O sistema armazena a distncia calculada em uma varivel.
3.0 O caso de uso encerrado.
Fluxo Alternativo: Nenhum
Ps-condies: Nenhuma
Regras de negcio:
[RN1] O sistema calcula a distncia pela seguinte frmula:
Distncia da esteira X nmero de voltas completadas
Fluxo de exceo: Nenhum
Mensagens: Nenhuma

4 Requisitos no-funcionais do sistema

REQUISITOS DESCRIO
DESEMPENHO Capturar os eventos da interface de comunicao
USABILIDADE Fcil manipulao do sistema
PORTABILIDADE Multiplataforma
LEGAL
StarUML 5.0 Modelar os diagramas
Java J2SE Java Standard Edition
IDE NetBeans 6.8








22

C MODELO DE ANLISE DO SISTEMA

1 Diagrama de classes

A seguir pode ser visualizado o diagrama de classes do sistema, em dois pacotes,
viso, onde se encontram as classes de interface grfica; e o modelo, composto pelas classes
responsveis pelas funcionalidades do sistema.









23

2 Diagramas de Sequncia

Abaixo so apresentados os diagramas de sequncia, referente a cada caso de uso do
sistema.




2.1 UC01 Diagrama de sequncia Iniciar teste de Cooper



2.2 UC02 Diagrama de sequncia Cancelar teste de Cooper





24

2.3 UC03 Diagrama de sequncia Gerar arquivo texto



2.4 UC04 Diagrama de sequncia Contabilizar voltas



2.5 UC05 Diagrama de sequncia Calcular distncia


25

APNDICE B Classe ArquivoTexto

/*
* Classe responsvel por salvar o arquivo e gravar os dados
* no arquivo texto
*/
package modelo;

import java.io.FileWriter;
import java.io.IOException;

import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.UIManager;

/**
* @author Alex Daniel Castanha
*/
public class ArquivoTexto {

private JFileChooser salvarArquivo;
private FileWriter arquivo;
private String nomeArquivo;

public ArquivoTexto() {
traduzir();
salvarArquivo = new JFileChooser();
salvarArquivo.setDialogTitle("Salvar teste de Cooper");
}

//traduz os componentes que compem o JFileChooser para o portugus
private void traduzir() {

UIManager.put("FileChooser.lookInLabelMnemonic", "E");
UIManager.put("FileChooser.lookInLabelText", "Examinar em");

UIManager.put("FileChooser.saveInLabelMnemonic", "S");
UIManager.put("FileChooser.saveInLabelText", "Salvar em");

UIManager.put("FileChooser.upFolderToolTipText", "Um nvel acima");
UIManager.put("FileChooser.upFolderAccessibleName", "Um nvel
acima");

UIManager.put("FileChooser.homeFolderToolTipText", "Desktop");
UIManager.put("FileChooser.homeFolderAccessibleName", "Desktop");

UIManager.put("FileChooser.newFolderToolTipText", "Criar nova
pasta");
UIManager.put("FileChooser.newFolderAccessibleName", "Criar nova
pasta");

UIManager.put("FileChooser.listViewButtonToolTipText", "Lista");
UIManager.put("FileChooser.listViewButtonAccessibleName", "Lista");

UIManager.put("FileChooser.detailsViewButtonToolTipText",
"Detalhes");
UIManager.put("FileChooser.detailsViewButtonAccessibleName",
"Detalhes");

UIManager.put("FileChooser.fileNameLabelMnemonic", "N");
26

UIManager.put("FileChooser.fileNameLabelText", "Nome do arquivo");

UIManager.put("FileChooser.filesOfTypeLabelMnemonic", "A");
UIManager.put("FileChooser.filesOfTypeLabelText", "Arquivos do
tipo");

UIManager.put("FileChooser.fileNameHeaderText", "Nome");
UIManager.put("FileChooser.fileSizeHeaderText", "Tamanho");
UIManager.put("FileChooser.fileTypeHeaderText", "Tipo");
UIManager.put("FileChooser.fileDateHeaderText", "Data");
UIManager.put("FileChooser.fileAttrHeaderText", "Atributos");

UIManager.put("FileChooser.cancelButtonText", "Cancelar");
UIManager.put("FileChooser.cancelButtonMnemonic", "C");
UIManager.put("FileChooser.cancelButtonToolTipText", "Cancelar");

UIManager.put("FileChooser.openButtonText", "Abrir");
UIManager.put("FileChooser.openButtonMnemonic", "A");
UIManager.put("FileChooser.openButtonToolTipText", "Abrir");

UIManager.put("FileChooser.saveButtonText", "Salvar");
UIManager.put("FileChooser.saveButtonToolTipText", "S");
UIManager.put("FileChooser.saveButtonToolTipText", "Salvar");

UIManager.put("FileChooser.updateButtonText", "Alterar");
UIManager.put("FileChooser.updateButtonToolTipText", "A");
UIManager.put("FileChooser.updateButtonToolTipText", "Alterar");

UIManager.put("FileChooser.helpButtonText", "Ajuda");
UIManager.put("FileChooser.helpButtonToolTipText", "A");
UIManager.put("FileChooser.helpButtonToolTipText", "Ajuda");

}

public void salvarArquivo(String dados) {

//exibe a tela para o usurio do sistema escolher o caminho onde
//deseja salvar o teste
int retorno = salvarArquivo.showSaveDialog(salvarArquivo);

if (retorno == JFileChooser.APPROVE_OPTION) {

//busca o caminho onde o usurio do sistema deseja salvar o
teste
nomeArquivo =
salvarArquivo.getSelectedFile().getAbsolutePath();

try {

arquivo = new FileWriter(nomeArquivo + ".txt");
//grava os dados no arquivo texto
arquivo.write(dados);
arquivo.close();

JOptionPane.showMessageDialog(null, "O Arquivo foi salvo
com sucesso", "SALVO!", JOptionPane.INFORMATION_MESSAGE);

} catch (IOException ioe) {
JOptionPane.showMessageDialog(null, "No foi possvel
salvar o arquivo\nErro: " + ioe.toString(), "ERRO",
JOptionPane.ERROR_MESSAGE);
27

}

} else {
Object[] opcaoBotao = {"SIM", "NO"};
int resposta = JOptionPane.showOptionDialog(null, "Voc NO
deseja SALVAR o teste?", "CANCELAR SALVAMENTO", JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE, null, opcaoBotao, opcaoBotao[0]);

if (resposta == JOptionPane.YES_OPTION) {
JOptionPane.showMessageDialog(null, "O teste no foi
salvo", "CANCELADO", JOptionPane.INFORMATION_MESSAGE);
} else {
salvarArquivo(dados);
}

}

}

}
28

APNDICE C Classe EsteiraEletrica

/*
* Classe responsvel por atribuir e buscar a
* distncia da esteira
*/
package modelo;

/**
*@author Alex Daniel Castanha
*/
public class EsteiraEletrica {

private float distancia;

public float getDistancia() {
return distancia;
}

public void setDistancia(float distancia) {
this.distancia = distancia;
}

}
29

APNDICE D Classe AnaliseDados

/*
* Classe reponsvel por calcular as voltas percorridas
* e guardar os dados a cada 30 segundos numa varivel
* do tipo String
*/

package modelo;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/**
* @author Alex Daniel Castanha
*/
public class AnaliseDados implements ActionListener {

private int contadorTempo;
private float voltaPercorrida;
private EsteiraEletrica estEletrica;
private ArquivoTexto arqTexto;
private String relacaoDados;
public static boolean naoAcabou;

public AnaliseDados(EsteiraEletrica ee) {
this.contadorTempo = 0;
this.estEletrica = ee;
//primeira linha de dados do arquivo texto inicia em 0
//de acordo com o proposto por Coutinho (2010)
this.relacaoDados = "00;00;00\r\n";
}

private float calcularVoltaPercorrida() {
voltaPercorrida = CursorMouse.getVoltas() *
estEletrica.getDistancia();
return voltaPercorrida;
}

//Evento disparado a cada 30 segundos para lanar a relao de dados
@Override
public void actionPerformed(ActionEvent e) {

//os dados no arquivo texto possuem uma razo de 30 segundos
//conforme o proposto por Coutinho (2010)
contadorTempo += 30;

relacaoDados +=
contadorTempo+";"+calcularVoltaPercorrida()+";00\r\n";

//indica que o tempo decorrido foi 12 minutos
if (contadorTempo == 720) {
naoAcabou = false;
gerarArqTexto();
}

}

private void gerarArqTexto() {
30


arqTexto = new ArquivoTexto();
arqTexto.salvarArquivo(relacaoDados);

}

}
31

APNDICE E Classe CursorMouse

/*
* Esta classe responsvel por monitorar as principais atividades
* do mouse, que so necessrias para a realizao do teste e contabilizar
as votlas
*/
package modelo;

import java.awt.AWTException;
import java.awt.Robot;

import javax.swing.JOptionPane;

/**
* @author Alex Daniel Castanha
*/
public class CursorMouse {

private Robot robo;
private static int voltas;

public CursorMouse() {

try {
this.robo = new Robot();
} catch (AWTException awte) {
JOptionPane.showMessageDialog(null, "Erro ao criar Rob\nErro:
"+awte.getMessage(),"ERRO",JOptionPane.ERROR_MESSAGE);
}

voltas = 0;
}

//caso o usurio mova o cursor do mouse, ou seja, retire ele de cima do
boto que
//contabiliza as voltas da esteira, ele retorna o cursor para cima do
boto
public void fixarCursorMouse(int x, int y) {
robo.mouseMove(x, y);
}

//mtodo responsvel por contabilizar os cliques do mouse
//indicando que uma volta foi concluda na esteira eltrica
public void contarVoltas() {
voltas++;
}

public static int getVoltas() {
int voltasParcial = voltas;
voltas = 0;
return voltasParcial;
}
}
32

APNDICE F Classe TesteDeCooper

package modelo;

import javax.swing.JOptionPane;
import javax.swing.Timer;

/**
*@author Alex Daniel Castanha
*/
public class TesteDeCooper {

private AnaliseDados analiseDados;
private Timer cronometro;

public TesteDeCooper(EsteiraEletrica ee) {

analiseDados = new AnaliseDados(ee);
cronometro = new Timer(30000, analiseDados);

}

public void iniciarTesteDeCooper() {

cronometro.start();

}

public int cancelarTesteDeCooper() {

Object[] opcaoBotao = {"SIM", "NO"};
int resposta = JOptionPane.showOptionDialog(null, "Voc deseja
realmente cancelar o teste?", "CANCELAR TESTE", JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE, null, opcaoBotao, opcaoBotao[0]);

if (resposta == JOptionPane.YES_OPTION) {
cronometro.stop();
return JOptionPane.YES_OPTION;
}

return JOptionPane.NO_OPTION;

}

}
33

APNDICE G Classe SobreOSistema

/*
* Exibe uma janela com informaes sobre o sistema
*
*/
package visao;

import org.jdesktop.application.Action;
/**
* @author Alex Daniel Castanha
*/
public class SobreOSistema extends javax.swing.JDialog {

public SobreOSistema() {
super();
initComponents();
getRootPane().setDefaultButton(btnFechar);
}

@Action
public void fecharJanelaSobreSistema() {
dispose();
}

// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

btnFechar = new javax.swing.JButton();
lblVersaoDesc = new javax.swing.JLabel();
lblEmailDesc = new javax.swing.JLabel();
lblTitulo1 = new javax.swing.JLabel();
lblTitulo2 = new javax.swing.JLabel();
lblDescSist1 = new javax.swing.JLabel();
lblDescSist2 = new javax.swing.JLabel();
lblDescSist3 = new javax.swing.JLabel();
lblVersao = new javax.swing.JLabel();
lblEmail = new javax.swing.JLabel();
imgEsteira = new javax.swing.JLabel();


setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
org.jdesktop.application.ResourceMap resourceMap =
org.jdesktop.application.Application.getInstance().getContext().getResource
Map(SobreOSistema.class);
setTitle(resourceMap.getString("title")); // NOI18N
setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
setModal(true);
setName("sobreSistema"); // NOI18N
setResizable(false);

javax.swing.ActionMap actionMap =
org.jdesktop.application.Application.getInstance().getContext().getActionMa
p(SobreOSistema.class, this);
btnFechar.setAction(actionMap.get("fecharJanelaSobreSistema")); //
NOI18N
btnFechar.setText(resourceMap.getString("btnFechar.text")); //
NOI18N
btnFechar.setName("btnFechar"); // NOI18N

34

lblVersaoDesc.setText(resourceMap.getString("lblVersaoDesc.text"));
// NOI18N
lblVersaoDesc.setName("lblVersaoDesc"); // NOI18N

lblEmailDesc.setText(resourceMap.getString("lblEmailDesc.text"));
// NOI18N
lblEmailDesc.setName("lblEmailDesc"); // NOI18N

lblTitulo1.setFont(resourceMap.getFont("lblTitulo1.font")); //
NOI18N

lblTitulo1.setForeground(resourceMap.getColor("lblTitulo1.foreground")); //
NOI18N
lblTitulo1.setText(resourceMap.getString("lblTitulo1.text")); //
NOI18N
lblTitulo1.setName("lblTitulo1"); // NOI18N

lblTitulo2.setFont(resourceMap.getFont("lblTitulo2.font")); //
NOI18N

lblTitulo2.setForeground(resourceMap.getColor("lblTitulo2.foreground")); //
NOI18N
lblTitulo2.setText(resourceMap.getString("lblTitulo2.text")); //
NOI18N
lblTitulo2.setName("lblTitulo2"); // NOI18N

lblDescSist1.setText(resourceMap.getString("lblDescSist1.text"));
// NOI18N
lblDescSist1.setName("lblDescSist1"); // NOI18N

lblDescSist2.setText(resourceMap.getString("lblDescSist2.text"));
// NOI18N
lblDescSist2.setName("lblDescSist2"); // NOI18N

lblDescSist3.setText(resourceMap.getString("lblDescSist3.text"));
// NOI18N
lblDescSist3.setName("lblDescSist3"); // NOI18N

lblVersao.setFont(resourceMap.getFont("lblVersao.font")); // NOI18N

lblVersao.setForeground(resourceMap.getColor("lblVersao.foreground")); //
NOI18N
lblVersao.setText(resourceMap.getString("lblVersao.text")); //
NOI18N
lblVersao.setName("lblVersao"); // NOI18N

lblEmail.setFont(resourceMap.getFont("lblEmail.font")); // NOI18N

lblEmail.setForeground(resourceMap.getColor("lblEmail.foreground")); //
NOI18N
lblEmail.setText(resourceMap.getString("lblEmail.text")); // NOI18N
lblEmail.setName("lblEmail"); // NOI18N

imgEsteira.setIcon(resourceMap.getIcon("imgEsteira.icon")); //
NOI18N
imgEsteira.setText(resourceMap.getString("imgEsteira.text")); //
NOI18N
imgEsteira.setName("imgEsteira"); // NOI18N

javax.swing.GroupLayout layout = new
javax.swing.GroupLayout(getContentPane());
35

getContentPane().setLayout(layout);
layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(imgEsteira)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEAD
ING)
.addGroup(layout.createSequentialGroup()
.addGap(583, 583, 583)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEAD
ING)
.addGroup(layout.createSequentialGroup()
.addGap(85, 85, 85)
.addComponent(appTitleLabel))
.addGroup(layout.createSequentialGroup()
.addGap(60, 60, 60)
.addComponent(lblDescEmail)
.addGap(199, 199, 199)
.addComponent(lblDescVersao))))
.addGroup(layout.createSequentialGroup()
.addGap(56, 56, 56)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEAD
ING)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEAD
ING, false)
.addComponent(lblDescSist2)
.addComponent(lblDescSist3)
.addComponent(lblDescSist1)
.addGroup(layout.createSequentialGroup()

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEAD
ING)
.addComponent(lblVersao)
.addComponent(lblEmail))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEAD
ING)

.addGroup(layout.createSequentialGroup()
.addComponent(lblEmailDesc)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 95,
Short.MAX_VALUE)
.addComponent(btnFechar))

.addGroup(layout.createSequentialGroup()
.addComponent(lblVersaoDesc)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 291,
javax.swing.GroupLayout.PREFERRED_SIZE)))))
.addGroup(layout.createSequentialGroup()
.addGap(51, 51, 51)
.addComponent(lblTitulo1))
36

.addGroup(layout.createSequentialGroup()
.addGap(35, 35, 35)
.addComponent(lblTitulo2)))))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
);
layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEAD
ING)
.addGroup(layout.createSequentialGroup()
.addComponent(lblTitulo1)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(lblTitulo2,
javax.swing.GroupLayout.PREFERRED_SIZE, 17,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(lblDescSist1)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(lblDescSist2)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(lblDescSist3)
.addGap(6, 6, 6)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEAD
ING)
.addGroup(layout.createSequentialGroup()
.addComponent(lblVersao)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(lblEmail))
.addGroup(layout.createSequentialGroup()
.addComponent(lblVersaoDesc)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEAD
ING)
.addComponent(btnFechar)
.addComponent(lblEmailDesc))))
.addContainerGap())

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEAD
ING)
.addGroup(layout.createSequentialGroup()
.addComponent(appTitleLabel)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 169,
Short.MAX_VALUE)
.addComponent(lblDescVersao)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(lblDescEmail)
.addGap(13, 13, 13))
37

.addGroup(layout.createSequentialGroup()
.addComponent(imgEsteira)
.addContainerGap()))))
);

pack();
}// </editor-fold>
// Variables declaration - do not modify
private javax.swing.JButton btnFechar;
private javax.swing.JLabel imgEsteira;
private javax.swing.JLabel lblDescSist1;
private javax.swing.JLabel lblDescSist2;
private javax.swing.JLabel lblDescSist3;
private javax.swing.JLabel lblEmail;
private javax.swing.JLabel lblEmailDesc;
private javax.swing.JLabel lblTitulo1;
private javax.swing.JLabel lblTitulo2;
private javax.swing.JLabel lblVersao;
private javax.swing.JLabel lblVersaoDesc;
// End of variables declaration
}
38

APNDICE H Classe TelaTesteCooper

/*
* Classe responsvel por exibir uma tela
* onde o usurio pode iniciar e cancelar o teste de Cooper
*/
package visao;

import javax.swing.JOptionPane;
import modelo.AnaliseDados;
import modelo.CursorMouse;
import modelo.EsteiraEletrica;
import modelo.TesteDeCooper;

/**
*@author Alex Daniel Castanha
*/
public class TelaTesteCooper extends javax.swing.JFrame {

public TelaTesteCooper() {
initComponents();
painelContabiliza.setSize(getWidth(), getHeight());
AnaliseDados.naoAcabou = false;
}

@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

painelContabiliza = new javax.swing.JPanel();
lblDistancia = new javax.swing.JLabel();
btnIniciar = new javax.swing.JButton();
btnCancelar = new javax.swing.JButton();
lblTitulo = new javax.swing.JLabel();
edDistancia = new javax.swing.JTextField();


setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
org.jdesktop.application.ResourceMap resourceMap =
org.jdesktop.application.Application.getInstance().getContext().getResource
Map(TelaTesteCooper.class);
setTitle(resourceMap.getString("telaTesteCooper.title")); // NOI18N
setName("telaTesteCooper"); // NOI18N
addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
public void mouseMoved(java.awt.event.MouseEvent evt) {
formMouseMoved(evt);
}
});

painelContabiliza.setName("painelContabiliza"); // NOI18N
painelContabiliza.addMouseListener(new
java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
painelContabilizaMouseClicked(evt);
}
});
painelContabiliza.addMouseMotionListener(new
java.awt.event.MouseMotionAdapter() {
public void mouseMoved(java.awt.event.MouseEvent evt) {
painelContabilizaMouseMoved(evt);
39

}
});

lblDistancia.setText(resourceMap.getString("lblDistancia.text"));
// NOI18N
lblDistancia.setName("lblDistancia"); // NOI18N

btnIniciar.setText(resourceMap.getString("btnIniciar.text")); //
NOI18N
btnIniciar.setName("btnIniciar"); // NOI18N
btnIniciar.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
btnIniciarMouseClicked(evt);
}
});

btnCancelar.setText(resourceMap.getString("btnCancelar.text")); //
NOI18N
btnCancelar.setName("btnCancelar"); // NOI18N
btnCancelar.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
btnCancelarMouseClicked(evt);
}
});

lblTitulo.setFont(resourceMap.getFont("lblTitulo.font")); // NOI18N
lblTitulo.setText(resourceMap.getString("lblTitulo.text")); //
NOI18N
lblTitulo.setName("lblTitulo"); // NOI18N

edDistancia.setText(resourceMap.getString("edDistancia.text")); //
NOI18N
edDistancia.setName("edDistancia"); // NOI18N

javax.swing.GroupLayout painelContabilizaLayout = new
javax.swing.GroupLayout(painelContabiliza);
painelContabiliza.setLayout(painelContabilizaLayout);
painelContabilizaLayout.setHorizontalGroup(

painelContabilizaLayout.createParallelGroup(javax.swing.GroupLayout.Alignme
nt.LEADING)
.addGroup(painelContabilizaLayout.createSequentialGroup()
.addGap(398, 398, 398)
.addComponent(lblTitulo))
.addGroup(painelContabilizaLayout.createSequentialGroup()
.addGap(439, 439, 439)
.addComponent(lblDistancia))
.addGroup(painelContabilizaLayout.createSequentialGroup()
.addGap(464, 464, 464)
.addComponent(edDistancia,
javax.swing.GroupLayout.PREFERRED_SIZE, 109,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(painelContabilizaLayout.createSequentialGroup()
.addGap(426, 426, 426)
.addComponent(btnIniciar)
.addGap(28, 28, 28)
.addComponent(btnCancelar))
);
painelContabilizaLayout.setVerticalGroup(
40


painelContabilizaLayout.createParallelGroup(javax.swing.GroupLayout.Alignme
nt.LEADING)
.addGroup(painelContabilizaLayout.createSequentialGroup()
.addGap(249, 249, 249)
.addComponent(lblTitulo)
.addGap(43, 43, 43)
.addComponent(lblDistancia)
.addGap(6, 6, 6)
.addComponent(edDistancia,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(50, 50, 50)

.addGroup(painelContabilizaLayout.createParallelGroup(javax.swing.GroupLayo
ut.Alignment.LEADING)
.addComponent(btnIniciar)
.addComponent(btnCancelar)))
);

javax.swing.GroupLayout layout = new
javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(4, 4, 4)
.addComponent(painelContabiliza,
javax.swing.GroupLayout.PREFERRED_SIZE, 1060,
javax.swing.GroupLayout.PREFERRED_SIZE))
);
layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(painelContabiliza,
javax.swing.GroupLayout.PREFERRED_SIZE, 666,
javax.swing.GroupLayout.PREFERRED_SIZE)
);

pack();
}// </editor-fold>

private void btnCancelarMouseClicked(java.awt.event.MouseEvent evt) {

//s chama o mtodo para cancelar se j foi iniciado o teste de
Cooper
if (testeDeCooper != null) {

if (testeDeCooper.cancelarTesteDeCooper() ==
JOptionPane.YES_OPTION) {
dispose();
}

}
}

private void btnIniciarMouseClicked(java.awt.event.MouseEvent evt) {

float distancia = 0;
41


String valor = edDistancia.getText();
valor = valor.replace(",", ".");

//converte a String em float
distancia = Float.parseFloat(valor);


AnaliseDados.naoAcabou = true;

estEletrica = new EsteiraEletrica();
estEletrica.setDistancia(distancia);

testeDeCooper = new TesteDeCooper(estEletrica);

cursorMouse = new CursorMouse();
cursorMouse.fixarCursorMouse(630, 240);

testeDeCooper.iniciarTesteDeCooper();

}

//caso o usurio tente retirar o cursor do mouse de cima do boto
//este mtodo faz ele retornar para cima dele
//Caso escape o cursor do mouse para o formulrio
//faz com que ele retorne na posio onde se encontra o boto
private void formMouseMoved(java.awt.event.MouseEvent evt) {
if (AnaliseDados.naoAcabou == true) {
cursorMouse.fixarCursorMouse(630, 240);
}
}

private void painelContabilizaMouseMoved(java.awt.event.MouseEvent evt)
{
// S retorna o cursor do mouse para no local caso
//o teste foi iniciado
if (AnaliseDados.naoAcabou == true) {
cursorMouse.fixarCursorMouse(630, 240);
}
}

private void painelContabilizaMouseClicked(java.awt.event.MouseEvent
evt) {
//S contabiliza se o teste foi iniciado, ou seja
//se ele no acabou
if (AnaliseDados.naoAcabou == true) {
cursorMouse.contarVoltas();
}
}

// Variables declaration - do not modify
private javax.swing.JButton btnCancelar;
private javax.swing.JButton btnIniciar;
private javax.swing.JTextField edDistancia;
private javax.swing.JLabel lblDistancia;
private javax.swing.JLabel lblTitulo;
private javax.swing.JPanel painelContabiliza;
// End of variables declaration
private TesteDeCooper testeDeCooper;
private EsteiraEletrica estEletrica;
private CursorMouse cursorMouse;}
42

APNDICE I Classe TelaPrincipal

/*
* Esta classe a tela principal do sistema.
* Ponto de partida desta aplicao
*/
package visao;

import javax.swing.JDialog;
import org.jdesktop.application.Action;

/**
* @author Alex Daniel Castanha
*/
public class TelaPrincipal extends javax.swing.JFrame {

public TelaPrincipal() {
initComponents();
}

@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

lblTitulo1 = new javax.swing.JLabel();
lblTitulo2 = new javax.swing.JLabel();
lblTitulo3 = new javax.swing.JLabel();
barraMenu = new javax.swing.JMenuBar();
menuArquivo = new javax.swing.JMenu();
itemTesteCooper = new javax.swing.JMenuItem();
itemSair = new javax.swing.JMenuItem();
menuInformacao = new javax.swing.JMenu();
itemSobreSistema = new javax.swing.JMenuItem();


setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setName("TesteCooper"); // NOI18N

lblTitulo1.setName("lblTitulo1"); // NOI18N

org.jdesktop.application.ResourceMap resourceMap =
org.jdesktop.application.Application.getInstance().getContext().getResource
Map(TelaPrincipal.class);
lblTitulo2.setFont(resourceMap.getFont("lblTitulo2.font")); //
NOI18N

lblTitulo2.setForeground(resourceMap.getColor("lblTitulo2.foreground")); //
NOI18N
lblTitulo2.setText(resourceMap.getString("lblTitulo2.text")); //
NOI18N
lblTitulo2.setName("lblTitulo2"); // NOI18N

lblTitulo3.setFont(resourceMap.getFont("lblTitulo3.font")); //
NOI18N

lblTitulo3.setForeground(resourceMap.getColor("lblTitulo3.foreground")); //
NOI18N
lblTitulo3.setText(resourceMap.getString("lblTitulo3.text")); //
NOI18N
lblTitulo3.setName("lblTitulo3"); // NOI18N
43


barraMenu.setName("barraMenu"); // NOI18N

menuArquivo.setText(resourceMap.getString("menuArquivo.text")); //
NOI18N
menuArquivo.setName("menuArquivo"); // NOI18N

javax.swing.ActionMap actionMap =
org.jdesktop.application.Application.getInstance().getContext().getActionMa
p(TelaPrincipal.class, this);
itemTesteCooper.setAction(actionMap.get("mostrarTelaTesteCooper"));
// NOI18N

itemTesteCooper.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.
event.KeyEvent.VK_I, java.awt.event.InputEvent.CTRL_MASK));

itemTesteCooper.setText(resourceMap.getString("itemTesteCooper.text")); //
NOI18N
itemTesteCooper.setName("itemTesteCooper"); // NOI18N
menuArquivo.add(itemTesteCooper);

itemSair.setAction(actionMap.get("quit")); // NOI18N

itemSair.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.K
eyEvent.VK_Q, java.awt.event.InputEvent.CTRL_MASK));
itemSair.setText(resourceMap.getString("itemSair.text")); // NOI18N
itemSair.setName("itemSair"); // NOI18N
menuArquivo.add(itemSair);

barraMenu.add(menuArquivo);


menuInformacao.setText(resourceMap.getString("menuInformacao.text")); //
NOI18N
menuInformacao.setName("menuInformacao"); // NOI18N


itemSobreSistema.setAction(actionMap.get("mostrarTelaSobreSistema")); //
NOI18N

itemSobreSistema.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt
.event.KeyEvent.VK_A, java.awt.event.InputEvent.CTRL_MASK));

itemSobreSistema.setText(resourceMap.getString("itemSobreSistema.text"));
// NOI18N
itemSobreSistema.setName("itemSobreSistema"); // NOI18N
menuInformacao.add(itemSobreSistema);

barraMenu.add(menuInformacao);

setJMenuBar(barraMenu);

javax.swing.GroupLayout layout = new
javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
44


.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEAD
ING)
.addGroup(layout.createSequentialGroup()
.addGap(74, 74, 74)
.addComponent(lblTitulo1))
.addGroup(layout.createSequentialGroup()
.addGap(62, 62, 62)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEAD
ING)
.addComponent(lblTitulo2)
.addComponent(lblTitulo3))))
.addContainerGap(58, Short.MAX_VALUE))
);
layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(88, 88, 88)
.addComponent(lblTitulo3)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(lblTitulo1)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(lblTitulo2)
.addGap(132, 132, 132))
);

pack();
}// </editor-fold>

public static void main(String args[]) {

TelaPrincipal telaPrincipal = new TelaPrincipal();
telaPrincipal.setVisible(true);
telaPrincipal.setLocationRelativeTo(null);

}

@Action
public void mostrarTelaSobreSistema() {

telaSobreSistema = new SobreOSistema();
telaSobreSistema.setLocationRelativeTo(null);
telaSobreSistema.setVisible(true);
telaSobreSistema.repaint();

}

@Action
public void mostrarTelaTesteCooper() {

telaTesteCooper = new TelaTesteCooper();
telaTesteCooper.setLocationRelativeTo(null);
telaTesteCooper.setVisible(true);
telaTesteCooper.repaint();

}
45


// Variables declaration - do not modify
private javax.swing.JMenuBar barraMenu;
private javax.swing.JMenuItem itemSair;
private javax.swing.JMenuItem itemSobreSistema;
private javax.swing.JMenuItem itemTesteCooper;
private javax.swing.JLabel lblTitulo1;
private javax.swing.JLabel lblTitulo2;
private javax.swing.JLabel lblTitulo3;
private javax.swing.JMenu menuArquivo;
private javax.swing.JMenu menuInformacao;
// End of variables declaration
private JDialog telaSobreSistema;
private TelaTesteCooper telaTesteCooper;
}

46

ANEXO A Formato do arquivo texto para importao dos dados do teste


Segundo Coutinho (2010) cada linha representa uma leitura do teste no intervalo de
trinta segundos. O primeiro campo representa o tempo em segundos, o segundo campo indica
a distncia percorrida em metros, e o ltimo campo a frequncia cardaca do avaliado no
momento.

Exemplo do formato do arquivo proposto por Coutinho (2010):
0;0;80
30;70;81
60;60;82
90;80;83
120;85;84
150;89;85
180;90;86
210;97;87
240;93;88
270;95;89
300;95;90
330;100;91
360;100;92
390;105;93
420;120;94
450;95;95
480;90;96
[...]
47

AGRADECIMENTOS

Agradeo Deus, por me dar foras para chegar onde cheguei, e sei que com Ele,
ainda vou traar muitos caminhos. Obrigado, por fazer das minhas derrotas, degraus para o
meu sucesso e por me estender a mo quando caio.
Aos meus pais Jos Carlos Castanha e Mariza Aparecida de Oliveira Castanha, que
sempre apoiaram os meus sonhos; que sempre me deram conforto e segurana, mesmo
estando longe de casa; pelo carinho especial dado nesta etapa da minha vida. No existem
palavras para expressar meu agradecimento. Amo vocs!
Agradeo aos meus avs, Maria, Cida e Benedito, por sempre me abenoarem nas
minhas idas e vindas.
Agradeo aos meus manos Adriana Castanha e Anderson Castanha, e minha sobrinha
Maiara Daniele Castanha de Arajo, so partes essenciais em minha vida. Obrigado pelo
carinho!
Agradeo ao meu orientador Itagildo Edmar Garbazza, pelas confianas depositadas
em mim. Obrigado por acreditar no meu potencial.
Ao meu co-orientador Vitor Antnio de Freitas Silva, que me ajudou bastante na reta
final, obrigado por ceder seu tempo para me ajudar.
Agradeo ao IFMG Campus Bambu, por me ajudar neste objetivo, de muitos outros
que tenho na vida.
Como se esquecer dos amigos? Foram pessoas essenciais que me ajudaram a escrever
parte do meu livro que chamo de vida. Agradeo a Daiane (vou morrer de saudade loira), que
sempre esteve comigo durante o curso, obrigado por fazer dos meus dias tristes momentos
mais engraados, e por sempre acreditar do que sou capaz; a Mrian e a Rafaela, pena no ter
tido mais afinidade com vocs antes; ao Samir e ao Arthur, sem eles as manhs na faculdade
no seriam animadas; aos meninos da repblica (Pedro, Jeffinho e Nelore) me ajudaram no
momento em que eu estava sem teto; agradeo a Stella e a tia Lecilda, sempre me ajudaram
no que fosse necessrio; agradeo a Magna, por sempre me encher de esperanas, para que
este trabalho fosse realizado com sucesso; a Juliana por mostrar que todos ns somos capazes,
que nesta vida iremos longe atravs da humildade e honestidade; agradeo aos demais alunos
do curso de Anlise e Desenvolvimento de Sistemas, turma 02. Muito Obrigado por fazerem
parte da melhor fase da minha vida, a de universitrio. E como j dizia o poeta: cedo ou
tarde demais, pra dizer adeus, pra dizer jamais....
48

REFERNCIAS BIBLIOGRFICAS

COSTA, E. C. Validade da medida do consumo mximo de oxignio predito pelo teste de
Cooper de 12 minutos em adultos jovens sedentrios. Motri., Portugal, v. 4, n. 3, p. 5-10,
2008. ISSN 1646-107X. Disponvel em: <http://www.scielo.oces.mctes.pt/pdf/mot/v4n3/
v4n3a02.pdf>. Acesso em: 10 jun. de 2009.

COUTINHO, D. P. Sistema para avaliao do teste de Cooper. 2010. 50p. Trabalho de
concluso de curso. Bambu: IFMG Campus Bambu, 2010.

DEITEL, H. M.; DEITEL, P. J. Java: como programar. 8. ed. So Paulo: Pearson Education,
2010. 1176 p.

GUEDES, G. T. A. UML 2 Uma Abordagem Prtica. So Paulo: Novatec, 2009. 488 p.

NETO, L. F. Motor eltrico com reed switch. Disponvel em:
<http://www.feiradeciencias.com.br/sala22/motor30.asp>. Acesso em: 15 mai. de 2010.

PRESSMAN, R. S. Engenharia de Software. 6. ed. Rio de Janeiro: McGraw-Hill, 2006.

REZENDE, D. A. Engenharia de software e sistemas de informao. 3. ed. Rio de Janeiro:
Brasport, 2005.

RODRIGUEZ, M. V.; FERRANTE, A. J. Tecnologia de Informao e Gesto
Empresarial. 2. ed. Rio de Janeiro: E-Papers, 2004.

SILBERSCHATZ, A.; GAGNE, G; GALVIN, P. B. Sistemas Operacionais com Java. 7. ed.
Rio de Janeiro: Elsevier, 2008.

SOMMERVILLE, I. Engenharia de Software. 8. ed. So Paulo: Pearson Addison Wesley,
2007.

SUN MICROSYSTEMS. Class Robot. Disponvel em: <http://java.sun.com/javase/6/docs
/api/java/awt/Robot.html>. Acesso em: 30 jun. 2010.

Universidade Federal do Rio Grande do Sul (UFRGS). Reed Switches. Disponvel em:
<http://www.if.ufrgs.br/mpef/mef004/20061/Cesar/SENSORES-Reed-switch.html>. Acesso
em: 20 fev. 2010.

WEINECK, J. Treinamento ideal Instrues tcnicas sobre o desempenho fisiolgico,
incluindo consideraes especficas de treinamento infantil e juvenil. So Paulo: Manole,
2003.