Aplicação Livraria

Esta página refere-se a aplicação Livraria Ler & Reler. É um código parcial, em Java, para um sistema de uma livraria. Seu objetivo é servir de suporte para a implementação dos trabalhos, assim como apresentar na prática uma série de conceitos em OO e linguagem Java. O código está disponível aqui e o driver para conexão com banco de dados MySQL aqui.

Estrutura da aplicação

Na implementação foi utilizado o padrão arquitetural MVC (Model-View-Controller). Temos as classes de modelo, que implementam os tipos ou entidades a tratar. Temos as classes controladoras, que fazem uma intermediação entre a visão e o modelo. E, por fim, temos as classes da visão, que são responsáveis pela interface entre o usuário e a aplicação. Há ainda classes utilitárias.

As classes de modelo estão no pacote livraria.tiposdado. No subpacote modelo estão as classes de modelo em sua essência. No subpacote persistência uma extensão destas classes de modelo, que passam a implementar IModeloPersistencia. Esta última é uma interface que sinaliza que o modelo deve ser persistido pelo sistema. Há ainda o subpacote chave, onde estão as implementações das chaves primárias dos modelos persistidos. As classes de chave devem implementar IChavePrimaria.

Os controladores estão disponíveis em livraria.controlador.controladores e há ainda a classe GerenciadorControladores. Esta última mantém uma estrutura que mapeia uma classe de modelo em seu respectivo controlador. Para uma classe ser classificada como controladora precisará implementar IControlador, que define o conjunto mínimo de operações que devem ser implementadas por um controlador.

As classes da camada de visão estão disponível no pacote livraria.janelas.

Há ainda classes utilitárias em livraria, livraria.excecoes e livraria.util. Em livraria há a classe Main, que é responsável pela inicialização da aplicação. Há também AplicacaoLivraria, que efetivamente constrói a aplicação e mantém as referências para objetos de uso comum. Em livraria.util há a classe Constantes, que possui alguns valores de configuração da aplicação, e GerenciadorConexoesBD, que é reponsável por estabelecer as conexões com o banco e gerenciar um repositório com as conexões disponíveis.

Inserindo novos cadastros

Para inserir um novo cadastro é necessário criar uma nova classe que estende livraria.janelas.cadastros.JanelaCadastro. Isso irá "forçar" a implementação de alguns métodos que vai completar a implementação da janela de cadastro desejada. Use JanelaCadastroCliente como base para criar uma nova janela de cadastro. Depois disso será necessário colocar a nova janela no menu. Para isso será necessário alterar livraria.janelas.JanelaPrincipal.

Será necessário também criar uma ou mais classes de modelo e o respectivo controlador. Não esqueça de registrar o novo controlador em AplicacaoLivraria.

Inserindo novas consultas

O procedimento para adicionar novas janelas de consulta é semelhante ao anterior. A diferença é que você tem que estender livraria.janelas.consultas.JanelaConsulta. Lembrem que vocês terão que implementar filtros para as consultas. Para isso sugiro que vocês coloquem um painel com os componentes de entrada para a consulta em BorderLayout.North. Imagino que vocês precisem também de um botão para realizar a aplicação do filtro. Podem fazer isso neste novo painel ou colocá-lo no painel de controle junto com Ver e Fechar. Vocês precisarão fazer alguma alteração na classe abstrata JanelaConsulta e inserir, pelo menos, um método no respectivo controlador da entidade.

Sugestões para a implementação do trabalho

    • Baixe o código, compile e rode.

    • Uma vez que esteja funcionando adeqüadamente, leia todo o código e procure entender como ele funciona.

    • Esclareça dúvidas revisando slides, livro ou consultando o professor.

    • Implemente os scripts para construção do banco.

    • Teste o banco de dados.

    • Planeje as suas classes de modelo.

    • Só então passe a implementar código.

    • Faça o trabalho aos poucos e teste a cada passo.

    • Ao final remova da interface gráfica (menu por exemplo) tudo aquilo que não foi devidamente implementado. Sugiro a remoção de classes não utilizadas também.

Obs.: o código é apenas para suporte ao desenvolvimento do trabalho. Fique a vontade para realizar alterações em classes utilitárias, classes abstratas ou interfaces. Você também pode implementar o seu código do zero da maneira que achar mais adeqüada, mas não esqueça que estamos no contexto de uma disciplina de programação OO e, assim, irei cobrar uma implementação genuinamente OO.

Comentários sobre o uso dos conceitos de OO e dos recursos de Java

<Escrita pendente>