Simulador de Leilão Eletrônico em Java
Felipe Simeão Taboada1, Silvio de Oliveira Carlos1, Ulissis Gomes Corrêa1, Priscyla
Waleska Targino de Azevedo Simões2, Cristiane Raquel Woszezenki2
1
Acadêmico do curso de Ciência da Computação – Unidade Acadêmica de Ciências, Engenharias
e Tecnologias - Universidade do Extremo Sul Catarinense (UNESC) – Criciúma, SC - Brasil
2
Professor(a) do curso de Ciência da Computação - Unidade Acadêmica de Ciências, Engenharias
e Tecnologias - Universidade do Extremo Sul Catarinense (UNESC) – Criciúma, SC - Brasil
{flip_41, silvio_tc_, ulissis_}@hotmail.com, {crw, pri}@unesc.net}
Resumo. O presente artigo descreve as fundamentações teóricas relativo a um
trabalho interdisciplinar de Estrutura de Dados I e Programação II, do Curso de
Ciência da Computação da Universidade do Extremo Sul Catarinense, que
objetivou aprofundar o conteúdo em alocação dinâmica de memória, filas e listas,
por meio do desenvolvimento de um software de leilão eletrônico em Java.
Palavras-chave: Estrutura de Dados; Programação Orientada a Objetos; Java;
Collections do Java; Leilão Eletrônico.
1. Introdução
No primeiro semestre de 2008 foi proposto um trabalho entre as disciplinas Estrutura de
Dados I e Programação II da terceira fase do curso de Ciência da Computação da UNESC
para a correlação dos conceitos abordados. Nesse sentido, este artigo descreve o
desenvolvimento de um aplicativo que teve como objetivo simular um leilão eletrônico.
Para alcançar o objetivo, os conceitos abordados na fundamentação teórica foram:
estrutura de dados, listas lineares, listas com disciplina de acesso, linguagem Java,
programação orientada a objetos e Collections (Coleções) do Java.
1.1 Linguagem Java
A linguagem Java foi anunciada oficialmente em maio de 1995 pela Sun Microsystems e
seu projeto partiu da idéia de que o próximo impacto seria nos dispositivos eletrônicos
inteligentes. Com esse principio, a Sun investiu em uma pesquisa interna de codinome
Green que foi desenvolvido com base nas linguagens C/C++. De imediato a linguagem não
fez muito sucesso pois o mercado não estava acompanhando a evolução vislumbrada pelos
criadores. Porém com a explosão da Internet notou-se uma grande força das aplicações Java
para Web, o que deu um impulso a mais para o Java se tornar uma linguagem de referência
internacional também em desktops.
Segundo Deitel (2001), a World Wide Web explodiu em popularidade em 1993 e as
pessoas da Sun viram de imediato o potencial de utilizar Java para criar paginas para Web.
Neste contexto, o Java é uma linguagem de programação orientada a objetos e, em
contraste as linguagens mais conhecidas, que são compiladas para código nativo, possui
uma tecnologia denominada bytecode (entre o código-fonte e a aplicação final).
1.2 Programação Orientada a Objeto
A programação orientada a objetos é um paradigma que representa o modo como os objetos são caracterizados
no dia-a-dia. Com essa teoria é possível criar programas e reutilizá-los, e podendo se tornar de fácil
compreensão.
A programação orientada a objetos nos fornece uma maneira mais natural e
intuitiva de ver o processo de programação.
Assim como as pessoas se comunicam entre si, os objetos também se comunicam
via mensagens. (DEITEL, H.M; DEITEL, P. J.. Java: como programar. 2001)
Neste paradigma, o programa é conceituado como um grupo de objetos que trabalham em
conjunto para a realização das tarefas. Cada um é uma parte separada do aplicativo interagindo com as
demais de maneira específica e totalmente controlada.
1.3 Estruturas de Dados
A Estrutura de Dados trata a forma como o fluxo dos dados é executado em de um aplicativo.
Uma lista encadeada pode ser considerada uma seqüência linear formada por nós ou nodos ligados por
meio de referência. Cada nodo tem a informação a que o nodo anterior tem referência, exceto pelo último do
qual a referência é feita para NULL que delimita o final da lista.
Uma lista é uma coleção linear de objetos auto-referenciais de classe, chamados de
nodos, conectados por links de referência [DEITEL 2001].
Em Java, as listas encadeadas podem ser aplicadas com o pacote java.util que
contem a classe LinkedList.
As filas representam uma estrutura de dados comum, semelhante a uma fila de
banco, supermercado, no qual a primeira pessoa é atendida enquanto os outros esperam na
fila. Nesta estrutura, os nodos são removidos pelo inicio e inseridos pelo final, por isso é
referenciada como FIFO (first-in, first-out).
[...]Muitos usuários podem estar gerando saídas para serem impressas. Se a
impressora estiver ocupada, outras saídas ainda ordem ser geradas. Estas são
colocadas no "spool" em disco (de maneira muito parecida de como um fio é
enrolado em um carretel) onde esperam em uma fila até a impressora ficar
disponível. (DEITEL, H.M; DEITEL, P. J.. Java: como programar. 2001)
Uma fila de prioridade é uma coleção em que a remoção ocorre por meio de
prioridade, ascendente ou descendente. Existem apenas de duas operações com filas de
prioridade, a inserção e remoção do elemento de maior prioridade.
Segundo Lafore (2004), a implementação das filas de prioridade por acervos
permite o maior equilíbrio no desempenho da procura de elementos.
2. Estudo de caso
O estudo de caso dessa pesquisa aborda o desenvolvimento de um simulador de leilão
virtual desenvolvido em Java a partir do ambiente NetBeans IDE 6.1, contando com
conceitos de estrutura de dados (listas, filas e filas de prioridade) e orientação a objetos.
O leilão virtual realiza a venda de produtos previamente cadastrados entre seus
usuários, onde um produto é posto a venda inicialmente com um lance minimo, e ao final
do tempo, o usuário com o maior lance registrado, adquire o produto.
As classes utilizadas na modelagem do aplicativo e ilustradas na Figura 1 são:
Produto; Remover; DarLance, que sobrepõe o preço inicial anunciado; Buscar, que localiza
produtos na lista; Listar, que exibe os produtos cadastrados na lista; Anuncia, que anuncia o
produto; e, Principal.
Figura 1: Diagrama de classes
A lista foi utilizada para lógicas de gerenciamento dos produtos; a fila para
organização dos produtos anunciados; e a fila de prioridade descendente para os lances.
O aplicativo foi desenvolvido em Java a partir do ambiente NetBeans IDE 6.1 tendo
como principais recursos ilustrados na figura 2: anunciar produto, listar produto anunciado,
buscar produtos anunciados, remover produtos anunciados, e, realizar um lance a um
produto anunciado.
Figura 2: Programa em funcionamento
3. Conclusões
A partir do desenvolvimento deste artigo pode-se concluir que os conceitos inerentes as
listas lineares são aplicáveis no desenvolvimento da maioria de aplicativos. Tanto o Java
quanto o C++ contam com as estruturas de dados a partir das collections em Java, e STL no
C++ , que facilitam o desenvolvimento de aplicativos mais robustos.
Considerando que o foco do grupo foi aprofundar o estudo sobre as Collections do
Java, o aplicativo foi desenvolvido somente para um usuário.
Com relação à interdisciplinaridade desse trabalho pode-se observar que os
conceitos puderam ser correlacionados e aprofundados.
Referências
NAUGHTON, Patrick. Dominando o JAVA. São Paulo: Makron Books, 1996.
LAFORE, Robert. Estruturas de Dados & Algoritmos em Java. Rio de Janeiro: Ciência
Moderna, 2004.
DEITEL, H.M; DEITEL, P. J.. Java: como programar. Porto Alegre: Bookman, 2001.
PUGA, Sandra; RISSETTI, Gerson. Lógica de Programação e Estruturas de Dados com
aplicações em Java. São Paulo: Prentice Hall, 2004.
CADENHEAD, Borges; LEMAY, Laura. Aprenda em 21 dias Java 2. Rio de Janeiro: Ed.
Campus, 2003.