0 Bewertungen0% fanden dieses Dokument nützlich (0 Abstimmungen)
78 Ansichten6 Seiten
O documento descreve o desenvolvimento de um protótipo de sistema BankCoin, um banco de moedas virtuais. Foi desenvolvido em Java usando TCP para comunicação entre cliente e servidor. O sistema permite que usuários criem contas, transfiramo moedas entre si e vejam o saldo total do banco.
O documento descreve o desenvolvimento de um protótipo de sistema BankCoin, um banco de moedas virtuais. Foi desenvolvido em Java usando TCP para comunicação entre cliente e servidor. O sistema permite que usuários criem contas, transfiramo moedas entre si e vejam o saldo total do banco.
O documento descreve o desenvolvimento de um protótipo de sistema BankCoin, um banco de moedas virtuais. Foi desenvolvido em Java usando TCP para comunicação entre cliente e servidor. O sistema permite que usuários criem contas, transfiramo moedas entre si e vejam o saldo total do banco.
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.