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.