Programação Orientada a Objetos - Pós Graduação - Aula 2

527 visualizações

Publicada em

Slides da segunda aula de Programação Orientada a Objetos no curso de Pós Graduação em Análise e Desenvolvimento Aplicados à Gestão Empresarial

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
527
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
26
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Programação Orientada a Objetos - Pós Graduação - Aula 2

  1. 1. 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 – carloseduardodantas@iftm.edu.br
  2. 2. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br 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.
  3. 3. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br MVC • Padrão arquitetural MVC (Model View Control); • Divisão das aplicações em três camadas lógicas.
  4. 4. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Criar Aplicação Java • Com o NetBeans, siga os passos até finalizar:
  5. 5. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Criar Pacotes • Crie todos os pacotes mencionados na figura
  6. 6. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br 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).
  7. 7. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Criar form JFrame
  8. 8. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Adicionar Painéis e Tabela
  9. 9. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Adicionar Botões
  10. 10. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Adicionando Campos
  11. 11. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Renomeando Campos
  12. 12. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Editando propriedades do JFrame
  13. 13. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br 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.
  14. 14. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Criando o Banco de Dados • Com a camada view pronta, será criado o banco de dados.
  15. 15. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Criando a Unidade de Persistência
  16. 16. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br 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
  17. 17. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Criando a classe de domínio
  18. 18. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Criando a classe de domínio
  19. 19. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br 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
  20. 20. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br 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.
  21. 21. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Criando uma classe de Conexão
  22. 22. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br 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.
  23. 23. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Criando a classe ClienteDaoImpl
  24. 24. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Criando a classe ClienteDaoImpl
  25. 25. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br 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.
  26. 26. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Adicionando bibliotecas do JavaDB e Beans Binding
  27. 27. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Criando a classe ClienteControl
  28. 28. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Criando a classe ClienteControl
  29. 29. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br 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.
  30. 30. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Vinculando a classe view com control
  31. 31. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Vinculando os campos com BeansBinding
  32. 32. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Vinculando a tabela com BeansBinding
  33. 33. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Editando conteúdo da tabela
  34. 34. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Criando eventos para os botões
  35. 35. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Criando eventos para os botões
  36. 36. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Executar a aplicação • Ao executar a aplicação observa-se o erro abaixo:
  37. 37. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Executar a aplicação • Infelizmente, a versão 8.02 no NetBeans não adicionou uma dependência do Hibernate
  38. 38. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Executar a aplicação • Copie o arquivo jandex-1.1.0.final.jar para a pasta lib do projeto
  39. 39. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Executar a aplicação
  40. 40. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Implementar validação dos campos • Crie uma classe chamada ValidacaoException no pacote util
  41. 41. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Implementar validação dos campos • Na classe Cliente, crie o método validar() e na classe ClienteControl, altere o método salvar()
  42. 42. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Implementar validação dos campos • Na classe Cliente, crie o método validar() e na classe ClienteControl, altere o método salvar()
  43. 43. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Implementar validação dos campos • Em clienteView(), capture a exceção para mostrar o erro de validação na tela.
  44. 44. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br 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.
  45. 45. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br 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.
  46. 46. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br 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”.

×