programação orientada a objetos - pós graduação - aula 2

46
Programação Orientada a Objetos Construindo um Sistema MVC com POO Pós Graduação em Análise e Desenvolvimento de Sistemas Aplicados à Gestão Empresarial INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TRIÂNGULO MINEIRO – Campus Uberlândia Centro Prof Carlos Eduardo Dantas [email protected]

Upload: carlos-eduardo-dantas

Post on 20-Jul-2015

219 views

Category:

Technology


0 download

TRANSCRIPT

Programação Orientada a Objetos

Construindo um Sistema MVC com

POO

Pós Graduação em Análise e Desenvolvimento de Sistemas

Aplicados à Gestão Empresarial

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA

TRIÂNGULO MINEIRO – Campus Uberlândia Centro

Prof Carlos Eduardo Dantas – [email protected]

Prof Carlos Eduardo Dantas – [email protected]

Introdução

• Objetivo de nivelar os alunos, para todos entenderem como os objetos se colaboram para criar um Software Comercial;

• Criar Softwares usando o paradigma RAD (datasets, events) é consideravelmente diferente de projetar soluções com o padrão MVC.

Prof Carlos Eduardo Dantas – [email protected]

MVC

• Padrão arquitetural MVC (Model View Control);

• Divisão das aplicações em três camadas lógicas.

Prof Carlos Eduardo Dantas – [email protected]

Criar Aplicação Java

• Com o NetBeans, siga os passos até finalizar:

Prof Carlos Eduardo Dantas – [email protected]

Criar Pacotes

• Crie todos os pacotes mencionados na figura

Prof Carlos Eduardo Dantas – [email protected]

Definições

• DAO – Data Access Object – padrão que isola todo o acesso a dados em uma única camada, fornecendo interfaces e objetos como meios de transição;

• DOMAIN – classes de domínio que representam entidades a serem persistidas em disco (provavelmente banco de dados).

Prof Carlos Eduardo Dantas – [email protected]

Criar form JFrame

Prof Carlos Eduardo Dantas – [email protected]

Adicionar Painéis e Tabela

Prof Carlos Eduardo Dantas – [email protected]

Adicionar Botões

Prof Carlos Eduardo Dantas – [email protected]

Adicionando Campos

Prof Carlos Eduardo Dantas – [email protected]

Renomeando Campos

Prof Carlos Eduardo Dantas – [email protected]

Editando propriedades do JFrame

Prof Carlos Eduardo Dantas – [email protected]

Teste

• Ao apertar F6, o NetBeans irá perguntar qual é a classe principal, e uma tela se abrirá;

• Em poucos minutos, é possível fazer um protótipo completo para o Cliente testar.

Prof Carlos Eduardo Dantas – [email protected]

Criando o Banco de Dados

• Com a camada view pronta, será criado o banco de dados.

Prof Carlos Eduardo Dantas – [email protected]

Criando a Unidade de Persistência

Prof Carlos Eduardo Dantas – [email protected]

Criando a Unidade de Persistência

• Foram adicionados no projeto o arquivo persistence.xml e as bibliotecas do Hibernate/Jpa, para efetuar o Mapeamento Objeto Relacional de forma transparente

Prof Carlos Eduardo Dantas – [email protected]

Criando a classe de domínio

Prof Carlos Eduardo Dantas – [email protected]

Criando a classe de domínio

Prof Carlos Eduardo Dantas – [email protected]

Criando a classe de domínio

• Entity – Classe que representa uma entidade no Banco de Dados;

• Table – nome da tabela no banco;

• Id – Campo que é chave primária;

• GeneratedValue – mostrar que é um campo auto incremento

• Column – nome da coluna no banco de dados

Prof Carlos Eduardo Dantas – [email protected]

Criando a classe de domínio

• A classe de domínio faz referência com uma tabela do banco de dados;

• Obviamente esta também pode ter lógica de negócio embutida;

• Tabelas podem ser geradas automaticamente pelo Hibernate.

Prof Carlos Eduardo Dantas – [email protected]

Criando uma classe de Conexão

Prof Carlos Eduardo Dantas – [email protected]

Criando uma classe de Conexão

• Esta classe cria uma fábrica de sessões com o Hibernate, e a cada chamada do método, retornará uma sessão.

Prof Carlos Eduardo Dantas – [email protected]

Criando a classe ClienteDaoImpl

Prof Carlos Eduardo Dantas – [email protected]

Criando a classe ClienteDaoImpl

Prof Carlos Eduardo Dantas – [email protected]

Criando uma classe de ClienteDaoImpl

• Observa-se na classe ClienteDaoImpl que o Hibernate abstrai todos os scripts sql com o banco de dados;

• No método salvarAtualizar(), se o código do cliente for null, será feito um insert, caso contrário será feito um update;

• No método pesquisar(), é realizada uma consulta via HQL, que o Hibernate traduzirá os objetos para tabelas.

Prof Carlos Eduardo Dantas – [email protected]

Adicionando bibliotecas do JavaDB e Beans Binding

Prof Carlos Eduardo Dantas – [email protected]

Criando a classe ClienteControl

Prof Carlos Eduardo Dantas – [email protected]

Criando a classe ClienteControl

Prof Carlos Eduardo Dantas – [email protected]

Criando a classe ClienteControl

• O control possui os objetos clienteDigitado, clienteSelecionado e clientesTabela que mapeiam campos da tela;

• O framework Beans Binding faz com que o preenchimento dos campos com a tela seja automático;

• O control também executa efetivamente os eventos que serão disparados na classe ClienteView.

Prof Carlos Eduardo Dantas – [email protected]

Vinculando a classe view com control

Prof Carlos Eduardo Dantas – [email protected]

Vinculando os campos com BeansBinding

Prof Carlos Eduardo Dantas – [email protected]

Vinculando a tabela com BeansBinding

Prof Carlos Eduardo Dantas – [email protected]

Editando conteúdo da tabela

Prof Carlos Eduardo Dantas – [email protected]

Criando eventos para os botões

Prof Carlos Eduardo Dantas – [email protected]

Criando eventos para os botões

Prof Carlos Eduardo Dantas – [email protected]

Executar a aplicação

• Ao executar a aplicação observa-se o erro abaixo:

Prof Carlos Eduardo Dantas – [email protected]

Executar a aplicação

• Infelizmente, a versão 8.02 no NetBeans não adicionou uma dependência do Hibernate

Prof Carlos Eduardo Dantas – [email protected]

Executar a aplicação

• Copie o arquivo jandex-1.1.0.final.jar para a pasta lib do projeto

Prof Carlos Eduardo Dantas – [email protected]

Executar a aplicação

Prof Carlos Eduardo Dantas – [email protected]

Implementar validação dos campos

• Crie uma classe chamada ValidacaoException no pacote util

Prof Carlos Eduardo Dantas – [email protected]

Implementar validação dos campos

• Na classe Cliente, crie o método validar() e na classe ClienteControl, altere o método salvar()

Prof Carlos Eduardo Dantas – [email protected]

Implementar validação dos campos

• Na classe Cliente, crie o método validar() e na classe ClienteControl, altere o método salvar()

Prof Carlos Eduardo Dantas – [email protected]

Implementar validação dos campos

• Em clienteView(), capture a exceção para mostrar o erro de validação na tela.

Prof Carlos Eduardo Dantas – [email protected]

Retirar a criação de tabelas

• No arquivo persistence.xml, desmarque a opção de criação de tabelas, para que o sistema não destrua e construa as tabelas novamente.

Prof Carlos Eduardo Dantas – [email protected]

Conclusões

• Várias melhorias poderiam ser implementadas para a aplicação desktop, como: internacionalização, controle dos botões e campos, layout personalizado, menus, etc... Contudo o foco desta aula é apenas entender como os objetos se cooperam como peças de lego, para chegar em um sistema completo.

Prof Carlos Eduardo Dantas – [email protected]

Referências

• ANICHE, Maurício. Orientação a objetos e SOLID para Ninjas. Casa do Código, 2015;

• GUERRA, Eduardo. Design Patterns com Java. Casa do Código, 2014;

• “LARMAN, Craig – Utilizando UML e Padrões 3ª Edição. Bookman, 2007”.