Sie sind auf Seite 1von 6

BankCoin: Banco de moedas virtuais.

Renivaldo O. Amorim Filho.



Universidade Estadual de Feira de Santana (UEFS) Feira de Santana, BA Brasil
renivaldoecomp@yahoo.com.br
Resumo. Alguns alunos do Curso de Engenharia de Computao da
Universidade Estadual de Feira de Santana(UEFS), foram desafiados a
desenvolver um sistema Online para um Banco de moedas virtuais.Com isso,
os alunos do MI de Concorrncia e Conectividade aceitaram o desafio e
Criaram um Prottipo do sistema, que recebeu o nome BankCoin. Este
relatrio descreve as etapas do desenvolvimento do projeto.
1. Introduo
Com a popularidade da Internet, esta tem se tornado territrio livre para diversas
atividades, tais como: troca de informaes comrcio eletrnico, produo de contedo,
entre outros. No entanto, algumas atividades esbarram nas legislaes dos governos
locais, que acabam dificultando ou atrasando o desenvolvimento das mesmas. Com isso,
em 2008, Satoshi Nakamoto descreveu uma economia voltada para a rede, onde as
trocas deveriam ser realizadas diretamente entre os usurios, sem ter que passar por
governos ou instituies financeiras, como se fosse dinheiro fsico. Este tipo de moeda
ficou conhecido como Bitcoin.
Pensando nisso Alunos do curso de Engenharia de Computao da UEFS, que esto
cursando o MI de Concorrncia e Conectividade, foram desafiados a implementar esse
sistema que representa um Banco virtual de moedas. Para desenvolver esse sistema foi
necessrio atender aos seguintes requesitos:
Cada usurio dever ter uma conta com seu saldo atual em moedas virtuais.
Um servidor dever organizar as contas dos usurios, de forma confivel,
levando em considerao os problemas que podem ocorrer durante a
comunicao.
No momento da criao da conta junto ao servidor, o usurio deve definir o
valor a ser depositado.
No BankCoin pode ser possvel realizar as seguintes transaes financeiras:
transferncia de moeda entre usurios cadastrados e clculo do valor total de
moedas existente no Banco.
2. Desenvolvimento.
O desenvolvimento do software se baseou na linguagem de Programao java, e a
ferramenta utilizada para testes e compilao foi a IDE Eclipse DSL Tools, Verso:
Kepler Service Release 2. Levando em considerao os requisitos apresentados foi
necessrio o aprofundamento em protocolos da internet e conceitos de Multhread.

O protocolo escolhido foi TCP, Este protocolo estabelece uma conexo entre dois
pontos interligados. Por exemplo, uma mensagem enviada de um host (o termo host
representa uma mquina conectada na rede) a outro confirmada pelo host receptor
indicando o correto recebimento da mensagem. Uma mensagem pode ser enviada em
vrios pacotes, o TCP cuida para que os pacotes recebidos sejam remontados no host de
destino na ordem correta (caso algum pacote no tenha sido recebido, o TCP requisita
novamente este pacote). Somente aps a montagem de todos os pacotes que as
informaes ficam disponveis para nossas aplicaes. A programao do TCP com
sockets utiliza streams, o que simplifica muito o processe de leitura e envio de dados
pela rede.
Streams so objetos Java que permitem obter dados de qualquer fonte de entrada, seja o
teclado, um arquivo ou at mesmo um fluxo de bytes recebidos pela rede (o que o
nosso caso). Isto torna a manipulao de dados da rede como se fossem arquivos, ao ler
dados enviados como se estivssemos lendo um arquivo e ao enviar dados como se
estivssemos gravando dados em um arquivo.
Para Obter uma comunicao TCP em java necessrio Criar um servidor ServerSocket
na criao deste servidor necessrio informar a porta em que a comunicao
acontecer, tambm necessrio um cliente para uma conexo com o servidor que
representado pela classe Socket. na criao de um Socket necessrio informar o
endereo IP do servidor e a porta de comunicao com este servidor; O servidor aceita
uma conexo com um cliente atravs do mtodo accept().
O multhread conseguido em java atravs da classe Thread, esta uma forma de um
processo dividir a si mesmo em duas ou mais tarefas que podem ser executadas
concorrencialmente. Com isso possvel ter varias conexes com um servidor ao
mesmo tempo.
3. Desenvolvimento.
O projeto Eclipse do BankCoin foi dividido em cinco pacotes, esses representam: O
servidor, O cliente, as excees, as janelas, e o view. cada pacote com as suas classes
sero descritos abaixo.
Pacote Cliente, possui a seguintes classes: Cliente, Pacote Dado, Transferncia Dado e
Usurio. A classe Cliente implementa Serializable, possui mtodos e atributos para
enviar dados atravs sockets e receber dados atravs desses sockets, alm de possuir
dois construtores, um que recebe uma conexo e outro que recebe uma determinada
porta e um endereo IP para comunicar-se com o servidor.
A classe Pacote Dado representa um pacote a ser transferido em uma conexo, essa
classe possui mtodos e atributos para tratarem objetos e uma ao desejada em um
BankCoin, alm de implementar Serializable.
A classe Transferncia Dado implementa Serializable e representa um pacote para
realizar uma transferncia, essa classe possui todos os atributos necessrios para fazer
uma transferncia entre usurios do BankCoin, Os atributos dessa classe so: Login de
origem, login de destino, valor a ser transferido e a senha para a confirmao da
transao.
A classe Usurio implementa Serializable e representa um usurio do BankCoin, com
atributos privados de login, senha e saldo da conta, possui mtodos pblicos que retorna

os atributos e um mtodo equals que recebe como parmetro login e senha, faz uma
comparao e retorna um booleano true caso os parametros passadas sejam iguais aos
da classe corrente.
O pacote Exceptions possui algumas classes que representam as possveis excees do
sistema.Todas as classes do pacote Exceptions estende da super classe Exception, e
servem para o tratamento de possveis erros na execuo do sistema. As excees so
essas: conta inexistente, conta j cadastrada, login invlido, saldo insuficiente e valor
incorreto.
O pacote Servidor possui uma classe servidor, e uma classe que representa um cliente
Thread. A classe Servidor um singleton, que quer dizer que possui apenas uma
instncia desse objeto, isso necessrio pois o servidor s precisa ser instanciado uma
nica vez. essa classe possui atributos estticos e mtodos para calcular o saldo total do
banco, retornar uma lista de usurios cadastrados do banco, modificar a lista de
usurios, retornar a instancia da prpria classe, criar um servidor ServerSocket na porta
"12345" e esperar clientes se conectarem atravs do mtodo accept(), alm de possuir
um mtodo construtor que carrega os dados que esto em arquivo.
A Classe Cliente Thread extende de Thread. Esta classe recebe uma conexo TCP
atravs de um socket, essa conexo possibilita o envio e recebimento de Objetos de um
servidor atravs dos mtodos da classe socket: getOutputStream e getInputStream. os
Objetos recebidos atravs do getOutputStream so do tipo Pacote Dado. O mtodo run
sobrescrito da super Classe Thread, e responsvel por receber um pacote de dado e
extrair as informaes dele para fazer uma ao desejada atravs de seus mtodos.
O pacote Gui representa as janelas do sistema. As classe desse sistema so: Cadastrar
Usurio, Usurio Logado, Login Usurio e Transferncia.
A classe login Usurio representa a tela de login do sistema BankCoin, esta estende de
JFrame. se um usurio for cadastrado este poder acessar o BankCoin com o seu login e
com a sua senha, se no for cadastrado na mesma tela de login possui um boto para
redirecionar para o cadastro de clientes, como mostra a figura 1:








Figura 1. Login de Usurio.





A classe cadastro de clientes uma janela e estende de JFrame. esta responsvel por
cadastrar um login de usurio, senha e saldo inicial e inserir na lista de usurios. essa
janela est representada pela figura 2.









Figura 2. Cadastro de usurio.
A classe Usurio logado estende JFframe, uma janela que representa o perfil de um
usurio logado no sistema, onde mostra o saldo atual, o login, boto para transferncia e
um boto para sair da conta. a figura 3 demonstra isso:









Figura 3. Perfil do Usurio.
A classe transferncia estende JFrame, uma janela que controla a transferncia entre
usurios, atravs do login de destino do valor a ser transferido e da senha de
confirmao da transao como mostra a figura 4:






Figura 1. Transferncia entre Usurios.

O pacote view possui a interao grfica com o usurio, as janelas do cliente e a janela
do servidor. as janelas do cliente so representadas pela figura 1,2,3 e 4. a janela do
servidor um frame simples que mostra a porta do servidor, mas ela que inicia o
servidor de acesso ao banco a figura 5 mostra a janela do servidor.







Figura 5. Janela Servidor.
Alm da janela o servidor possui uma interao via linha de comando, na qual imprimi
uma lista com todos os usurios cadastrados no BankCoin com os saldos respectivos de
cada usurio e imprimi o saldo total do BankCoin, como mostra a figura 6:









Figura 6. Interao linha de comando.
4. Concluso.
Levando em conta esses aspectos tericos e prticos j descritos conclui-se que o
sistema de moedas eletrnicas BankCoin foi um sucesso, atende a todos os requisitos
solicitados e possui interface grfica de fcil compreenso, alm de estar documentado
com o javadoc incluso no anexo com o cdigo fonte e este relatrio.
Referncias
[Paulo Sergio Pereira], [Sockets com java parte-1]. [DEVMEDIA], Par, Brasil.
disponvel em [http://www.devmedia.com.br/sockets-com-java-parte-i/9465]. acessado
01 de setembro 2014.
[Paulo Sergio Pereira], [Sockets com java parte-2]. [DEVMEDIA], Par, Brasil.
disponvel em [http://www.devmedia.com.br/sockets-com-java-parte-i/9465]. acessado
01 de setembro 2014.

Das könnte Ihnen auch gefallen