Lab6 Adriano Brasileiro

aluno: Adriano Brasileiro Silva
ano/sem: 2008/2o.
data do laboratório (num. da semana) : 22/12/2008 (6)

Introdução

Nesta prática continuamos o trabalho feito no lab 6, criando um cliente que se comunique com o servidor rodando.

Desenvolvimento

Optei por fazer o trabalho em ruby, pois era a linguagem com que já vínhamos trabalhando e a biblioteca ruby pareceu bem simples

O cliente possui diversas telas, as quais vou explicar em tópicos separados:

Login

lab6-1.PNG

É a url "/", ou seja, é a url inicial quando se executa o programa. Ela possui dois campos (username e password) que são auto explicativos e dois botões. O primeiro faz um pedido de autenticação para o servidor do usuário escrito no primeiro campo com a senha escrita no segundo e espera uma resposta. Então vai para a tela "/menu" caso a resposta seja afirmativa. O segundo botão cria o usuário indicado nos campos. Note que o segundo campo é secreto.

Menu

lab6-2.PNG

É o menu principal que aparece caso se faça um login bem sucedido. Os botões são todos auto-explicativos e simplesmente vão para a tela indicada, com exceção de Logout, que faz um pedido de encerrar conexão para o servidor e volta para o "/".

Listar Partidas Atuais

lab6-3.PNG

Ao entrar nesta tela, o cliente faz um requerimento para o servidor com a operação listar_partidas_atuais e espera a resposta. Quando ele recebe a resposta, ele o processa e imprime na tela as informações. Clicando no botão "Ok" o cliente volta para a tela "menu"

Listar Partidas Encerradas

lab6-4.PNG

Funciona de maneira semelhante à Listar Partidas Atuais, listando, em vez disso, as partidas encerradas.

Informações sobre uma partida

lab6-5.PNG

Nesta tela temos dois campos (um para cada time) e três botões. O primero vai para uma tela onde são listadas informações sobre a partida declarada. O segundo vai para uma tela diferente, apresentando informações sobre os apostadores. O ultimo simplesmente retorna ao menu anterior.

  • Nestas telas onde deve-se entrar com os times ou com o placar não houve tratamento caso se entre com valores inválidos, já que este não era o foco da prática. No entanto, caso se queira ver um exemplo de tratamento, existe tal tratamento na tela de login
lab6-1.5.PNG

Informações da partida

lab6-6.PNG

Nesta tela é que o pedido é feito, e a resposta é impressa, semelhante à Listar Partidas Atuais. Do mesmo modo, o botão Ok volta à tela anterior (neste caso, a tela Informações sobre uma partida)

Informações das apostas

lab6-7.PNG

Idêntico à tela de Informações da partida, listando ao invés disso as informações sobre apostadores

Fazer uma aposta

lab6-8.PNG

Esta tela possui 4 campos: dois para os times e dois para o placar, e dois botões. O primeiro faz o pedido para o servidor realizar a aposta em nome do usuário logado, com base nos valores inseridos nos campos. O botão Cancelar retorna à tela de menu.

  • Nesta tela também não foram tratadas entradas inválidas. Assim, se o usuário entrar com uma partida inexistente ou finalizada, ou com um placar inválido, o sistema aceita a aposta, mas podem ocorrer problemas ao se verificar estas partidas.

Feita a aposta, podemos verificar seu efetivamento no menu "informações sobre uma partida"->"informações das apostas"

lab6-9.PNG

Conclusões

Feito o servidor, esta prática tornou-se bem mais fácil no sentido de que já era entendido como funcionava a comunicação entre o servidor e o cliente, apesar de que foi necessário um estudo "por fora" para descobrir como conectar o cliente ao servidor (pode ser feito por meio da criação de um TCPSocket). Sobre a GUI, apesar da documentação "estranha", é uma documentação simples e a sintaxe em si também é bastante simples. O único problema é que é necessário rodar o shoes toda vez que se quiser rodar o programa (ele não é como um executável). Por fim, tive receio de separar o cliente em diversas classes (simplificando o código) pois a documentação do shoes não falava desta possibilidade.

A contagem de linhas para o lab6 foi de 251 (contando linhas em branco)

O código fonte, assim como em todos os outros labs, encontra-se em anexo

Add a New Comment
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License