Lab6 Thiago Brandão

aluno: Thiago Brandão Damasceno
ano/sem: 2008/2o.
data do laboratório (num. da semana) : 13/12/2008 (16)

Introdução

Desenvolvimento do cliente (e a parte gráfica) que irá interagir com o servidor do lab 5. O cliente será feito em Ruby.

Desenvolvimento

Código do cliente

O código do cliente será composto de vários métodos que irão "gerar" requisições ao servidor (através da classe RequestGenerator).Cada método funciona de maneira semelhante aos métodos da classe RequestReader do servidor (lab 5). Além disso, o código irá conter classes de leitura como Bet e Match (pois no yaml é passado uma serialização pura do objeto inteiro para o cliente). O método message retorna a mensagem gerada pelo servidor devido à requisição do cliente. O método error? indica se houve algum erro nessa resposta. Abaixo segue um pedaço do código (o cliente quer criar um usuário):

#...
def request_create_user(user,password)
  @request_gen = RequestGenerator.new
  @request_gen.create_user(user, password)
  string_aux = @request_gen.read_file.gets("\nFIM")
  @request_gen.destroy_file
  @client.puts string_aux
  loop do
    string = @client.gets
    break if string && string.include?("INICIO")
  end
  @yaml = YAML.load(@client.gets("\nFIM").chomp("FIM"))
  @message = @yaml[:response]
end
#...

Biblioteca GUI

A biblioteca escolhida foi o Shoes, cujos componentes são baseados em design de páginas web. Portanto, a interface não será constituída de janelas com menus mas de janelas com links (que podem ser eventos, o que pode ser um inconveniente para quem está acostumado com o método ortodoxo). A documentação da biblioteca é escassa e dificulta a criatividade do usuário. Entretanto, como é de fácil utilização, ainda assim possui uma alta produtividade e estimula o usuário a entender certos mecanismos da própria linguagem Ruby.

Código do cliente (parte gráfica)

A parte do código do cliente é mínima e será mostrada uma parte do código. Toda janela Shoes é composta de uma classe anônima (Shoes.app) e a partir dela os componentes serão adicionados. Para rodar o programa, basta digitar no terminal (o cliente está na pasta principal do projeto):
shoes cliente_gui.rb

Shoes.app :title => "Cliente", 
  :width => 600, :height => 800, :resizable => false  do
 
  @@client = Client.new #variável que guarda o objeto que faz requisições
  @@create_frame = false #muda de uma tela para outra
 
 def render_screen_1 #tela de login, etc
  #código
 end
 
def render_screen_2 #tela do cliente de fato (fazer apostas,etc)
 #código
end
 
end

Nota: Apesar do servidor aceitar requisições do tipo close connection, não foi necessário sua utilização já que a parte gráfica do cliente possibilita um maior controle sobre o próprio cliente.

Funcionamento do cliente

Tela de login:

fig1.png

Informações de aposta:

fig2.png

Nova aposta:

fig3.png

Download do projeto

Conclusão

A parte do cliente conclui a prática iniciada do laboratório 5 e permitiu verificar o funcionamento do protocolo idealizado bem como observar a dinâmica de uma interação cliente-servidor básica. O contato com a biblioteca gráfica serviu para dar o acabamento final à prática, permitindo que o programa pudesse ter um design básico de um software completo.

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