Baixe o app para aproveitar ainda mais
Prévia do material em texto
UNIVERSIDADE VEIGA DE ALMEIDA UVA CURSO DE SISTEMA DE INFORMAÇÃO EDSON CANTUARIA DE AZEVEDO NETO Padrões de Projeto Factory, DAO e Criação de Método de Busca de Aluno Rio de Janeiro 2023 EDSON CANTUARIA DE AZEVEDO NETO Padrões de Projeto Factory, DAO e Criação de Método de Busca de Aluno Trabalho apresentado para a Disciplina ANÁLISE E PROJETO DE SISTEMAS E INFORMAÇÃO II, pelo Curso de Sistema de Informação da Universidade Veiga de Almeida (UVA) Rio de Janeiro 2023 SUMÁRIO RESUMO..................................................................................................................... 3 INTRODUÇÃO ............................................................................................................ 3 DESENVOLVIMENTO ................................................................................................ 5 1. Padrões de Projeto Factory ............................................................................ 5 2. Padrões de Projeto DAO ................................................................................. 6 3. Implementação do Método de Busca de Aluno e Tratamento de Exceção na Busca de Aluno .................................................................................................... 6 4. Classe de Teste do Método de Busca de Aluno ........................................... 7 5. Implementação do Banco de Dados MySQL ................................................. 9 TELAS DE TESTE .................................................................................................... 12 CONCLUSÃO ........................................................................................................... 13 REFERÊNCIAS ......................................................................................................... 14 3 RESUMO Este trabalho acadêmico tem como objetivo apresentar a aplicação dos padrões de projeto Factory e DAO no contexto de um sistema de gerenciamento acadêmico. Além disso, será desenvolvido um método de busca de aluno, utilizando o banco de dados MySQL e a biblioteca JDBC. No início do trabalho, são descritas as características e vantagens dos padrões de projeto Factory e DAO. Em seguida, é apresentada uma introdução detalhada sobre o tema, contextualizando a importância desses padrões e a necessidade de um método de busca de aluno. Ao longo do trabalho, são abordados conceitos teóricos e exemplos práticos, demonstrando a aplicação dos padrões de projeto Factory e DAO, bem como a integração com o banco de dados MySQL. São apresentados trechos de código comentados das classes Aluno, AlunoDAO, ConnectionFactory e TesteAlunoDAO, além de um passo a passo para configurar o banco de dados e adicionar exemplos de alunos. O trabalho finaliza com uma síntese dos principais aprendizados e conclusões obtidas durante o desenvolvimento do projeto, destacando a importância dos padrões de projeto e do método de busca de aluno em sistemas com persistência de dados. Em suma, este trabalho acadêmico oferece uma visão abrangente sobre os padrões de projeto Factory e DAO, além de proporcionar a experiência prática de desenvolver um método de busca de aluno em um sistema de gerenciamento acadêmico, utilizando o banco de dados MySQL e a biblioteca JDBC. INTRODUÇÃO A utilização de padrões de projeto é uma prática comum no desenvolvimento de sistemas computacionais, tendo em vista sempre melhorar a sua estrutura, organização e a manutenção do código. Neste trabalho acadêmico, abordaremos dois padrões de projeto amplamente utilizados em aplicações com persistência de dados: Factory e DAO. Além disso, iremos desenvolver um método de busca de aluno, que será integrado a um sistema de gerenciamento de informações acadêmicas. 4 O objetivo deste trabalho é apresentar a aplicação prática dos padrões de projeto Factory e DAO, bem como demonstrar a criação de um método de busca de aluno. Para isso, utilizaremos a linguagem de programação Java e faremos uso do banco de dados MySQL, juntamente com a biblioteca JDBC, para armazenar e recuperar os dados dos alunos. O padrão de projeto Factory possui como principal foco encapsular a lógica de criação de objetos em uma classe separada, conhecida como fábrica. Isso permite desacoplar a criação de objetos do restante do código, tornando-o mais flexível e facilitando a manutenção e visibilidade do código. Já o padrão de projeto DAO (Data Access Object) tem como objetivo separar a lógica de acesso aos dados da aplicação, proporcionando uma camada de abstração entre o código da aplicação e o banco de dados. No contexto deste trabalho, o método de busca de aluno será responsável por recuperar informações específicas de um aluno a partir de sua matrícula. Essa funcionalidade é fundamental em um sistema de gerenciamento acadêmico, onde os usuários precisam obter dados detalhados sobre um aluno em particular. Além disso, iremos implementar o tratamento de exceção para lidar com situações em que o aluno não for encontrado, pois pode haver erros durante a digitação e é necessário ter um método para lidar com eles. Através deste trabalho, será possível compreender as características e vantagens dos padrões de projeto Factory e DAO, bem como a importância de separar as responsabilidades e aplicar boas práticas de programação. Além disso, iremos demonstrar a integração com um banco de dados MySQL e a utilização da biblioteca JDBC para realizar as operações de consulta e manipulação dos dados. No desenvolvimento deste trabalho, utilizaremos a IDE Eclipse para escrever e executar o código Java, juntamente com o MySQL Workbench para configurar e gerenciar o banco de dados MySQL. Será realizada uma simulação de um sistema acadêmico da fictícia Universidade Vento Úmido, onde os alunos são cadastrados e suas informações são armazenadas no banco de dados. No próximo capítulo, iremos explorar as características e vantagens dos padrões de projeto Factory e DAO, apresentando conceitos teóricos e exemplos práticos. Em seguida, detalharemos a implementação do método de busca de aluno, incluindo o tratamento de exceção. Por fim, realizaremos testes funcionais do método 5 de busca e concluiremos o trabalho com uma síntese dos principais aprendizados e conclusões obtidas. DESENVOLVIMENTO 1. Padrões de Projeto Factory O padrão de projeto Factory é um padrão criacional que fornece uma interface comum para a criação de objetos, ocultando a lógica de criação e permitindo uma maior flexibilidade. Suas características incluem: • Encapsulamento da lógica de criação de objetos em uma classe ou método dedicado; • Possibilidade de criar diferentes implementações de um objeto sem implementar diretamente ao código cliente; • Aumento da coesão e redução do acoplamento entre as classes; • Facilidade na manutenção, visualização e identificação do código. Suas principais vantagens são: • Código mais legível e organizado; • Facilidade na criação de novas instâncias de objetos; • Flexibilidade para alterar ou adicionar novas implementações sem afetar o código existente; • Facilita a adoção de boas práticas de programação, como o princípio da inversão de dependência. 6 2. Padrões de Projeto DAO O padrão de projeto DAO (Data Access Object) é um padrão estrutural que separa a lógica de acesso aos dados do restante da aplicação. Suas características incluem: • Encapsulamento da lógica de acesso aos dados, como consultas SQL, em classes DAO específicas; • Fornecimento de métodos padronizados para realizar operações CRUD (criação, leitura, atualização e remoção) nos objetos de domínio; • Facilidade na substituição outroca de tecnologias de persistência sem afetar o restante da aplicação. As vantagens da utilização do padrão DAO são: • Separação das responsabilidades entre a lógica de negócio e a lógica de acesso a dados; • Melhoria na manutenibilidade e no teste do código; • Maior flexibilidade na escolha das tecnologias de persistência; • Facilidade na implementação de consultas complexas e reutilização de código. 3. Implementação do Método de Busca de Aluno e Tratamento de Exceção na Busca de Aluno A classe AlunoDAO será expandida com a implementação do método "buscaAluno", que permitirá a busca de um aluno específico no banco de dados com base em sua matrícula. O método terá o seguinte formato: (Copiado da IDE Eclipse) import java.sql.*; public class AlunoDAO { private Connection conexao; public AlunoDAO() { this.conexao = ConnectionFactory.criaConexao(); 7 } public Aluno buscaAluno(int matricula) throws SQLException { String sql = "SELECT * FROM alunos WHERE matricula = ?"; PreparedStatement stm = conexao.prepareStatement(sql); stm.setInt(1, matricula); ResultSet rs = stm.executeQuery(); if (rs.next()) { int matriculaAluno = rs.getInt("matricula"); String nomeAluno = rs.getString("nome"); Aluno aluno = new Aluno(matriculaAluno, nomeAluno); rs.close(); stm.close(); return aluno; } else { rs.close(); stm.close(); throw new SQLException("Aluno não encontrado"); } } } Juntamente foi implementado um tratamento de exceção no método "buscaAluno" para lidar com possíveis erros durante a consulta ao banco de dados. Caso ocorra uma exceção, a mensagem de erro será exibida para o usuário. 4. Classe de Teste do Método de Busca de Aluno Será criada uma classe de teste chamada "TesteAlunoDAO" para verificar o funcionamento do método "buscaAluno". O usuário será solicitado a informar o número de matrícula do aluno desejado, e em seguida, as informações do aluno encontrado serão exibidas na tela. (Copiado da IDE Eclipse) import java.sql.SQLException; import java.util.Scanner; public class TesteAlunoDAO { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); AlunoDAO alunoDAO = new AlunoDAO(); boolean executar = true; while (executar) { System.out.print("Digite a matrícula do aluno (ou 0 para sair): "); 8 int matricula = scanner.nextInt(); if (matricula == 0) { executar = false; } else { try { Aluno aluno = alunoDAO.buscaAluno(matricula); if (aluno != null) { System.out.println("Aluno encontrado:"); System.out.println("Matrícula: " + aluno.getMatricula()); System.out.println("Nome: " + aluno.getNome()); } else { System.out.println("Aluno não encontrado."); } } catch (SQLException e) { System.out.println("Ocorreu um erro ao buscar o aluno: " + e.getMessage()); } System.out.println(); } } scanner.close(); System.out.println("Programa encerrado."); } } 4.1 Aluno.java A classe "Aluno" possui atributos como matrícula, nome, curso, e-mail, entre outros, que são utilizados para armazenar as informações de cada aluno. Além disso, ela possui os métodos getter e setter para acessar e modificar esses atributos. Essa classe é fundamental no contexto do projeto, pois permite a criação de objetos do tipo "Aluno" que podem ser armazenados no banco de dados, consultados a qualquer momento, atualizados ou removidos por meio da interação com a classe "AlunoDAO". Ela serve como um modelo de dados que representa os alunos do sistema acadêmico, facilitando a manipulação dessas informações de forma estruturada e orientada a objetos. (Copiado da IDE Eclipse) public class Aluno { private int matricula; private String nome; public Aluno(int matricula, String nome) { this.matricula = matricula; this.nome = nome; 9 } public int getMatricula() { return matricula; } public String getNome() { return nome; } public void setMatricula(int matricula) { this.matricula = matricula; } public void setNome(String nome) { this.nome = nome; } } 5. Implementação do Banco de Dados MySQL Para integrar o sistema com um banco de dados MySQL, foram seguidos os seguintes passos: a) Configurar o ambiente • Certificar-se de que o MySQL está instalado e em execução no ambiente local; • Adicionar a biblioteca do JDBC do MySQL ao projeto. b) Criar o banco de dados • Abrir o cliente do MySQL, como o MySQL Workbench; • Executar o seguinte comando para criar o banco de dados chamado "uva": Imagem retirada do MySQL Workbench 10 c) Criar a Tabela • Executar o código no banco de dados: Imagem retirada do MySQL Workbench d) Inserir Alunos Imagem retirada do MySQL Workbench 5.1 ConnectionFactory.java A classe "ConnectionFactory" contém métodos estáticos que são responsáveis por criar e fornecer instâncias da classe "Connection", que representa uma conexão com o banco de dados. Essa classe utiliza a biblioteca JDBC (Java Database Connectivity) para realizar a conexão com diferentes tipos de bancos de dados. No método "criaConexao()", são definidos os parâmetros de conexão, como o endereço do banco de dados, a porta, o nome do banco, o usuário e senha de acesso. Através da chamada do método "DriverManager.getConnection()", a conexão com o banco de dados é estabelecida e um objeto do tipo "Connection" é retornado. Neste exemplo o USER e PASSWORD definidos são root, no ato da utilização do ConnectionFactory é imprescindível colocar os dados corretos na hora da criação do banco de dados, assim como identificar a URL correta. (Copiado da IDE Eclipse) 11 import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectionFactory { private static final String URL = "jdbc:mysql://localhost:3306/uva"; private static final String USER = "root"; private static final String PASSWORD = "root"; public static Connection criaConexao() { try { return DriverManager.getConnection(URL, USER, PASSWORD); } catch (SQLException e) { System.out.println("Erro ao criar conexão com o banco de dados: " + e.getMessage()); return null; } } } A utilização da classe "ConnectionFactory" traz vantagens como a centralização da criação e configuração da conexão, facilitando a manutenção do código e a possibilidade de reutilização em diferentes partes do sistema. Além disso, ela permite o controle e configuração de diferentes parâmetros de conexão de forma flexível e transparente para as classes que a utilizam. 12 TELAS DE TESTE Adicionado o Aluno Edson com matrícula 122: Captura de Tela da IDE Eclipse – Fonte: Edson Cantuaria Foi adicionado um loop para caso seja necessário a procura de mais uma matrícula. 13 Já quando for encontrado um erro na execução da busca da matrícula: Captura de Tela da IDE Eclipse – Fonte: Edson Cantuaria Logo se der um erro vai informar que o Aluno não foi encontrado, porém ao redigitar a matrícula correta, o programa já vai fazer essa busca, e assim para encerrar o programaé necessário informar a tecla 0. CONCLUSÃO Este trabalho acadêmico apresentou a implementação dos padrões de projeto Factory e DAO em um sistema de gerenciamento de alunos, juntamente com a criação do método de busca de aluno. Foram discutidas as características e vantagens desses padrões, bem como a importância da separação de responsabilidades e da utilização de boas práticas de programação. Através do uso do padrão Factory, foi possível encapsular a lógica de criação de objetos, proporcionando maior flexibilidade e facilitando a manutenção do código. Já o padrão DAO permitiu separar a lógica de acesso aos dados do restante da aplicação, melhorando tanto a organização quanto também no momento de testar o código. 14 A implementação do método de busca de aluno, juntamente com o tratamento de exceção, possibilitou a obtenção de informações específicas de um aluno a partir de sua matrícula. Isso contribui para uma maior eficiência e usabilidade do sistema. Por fim, a integração com o banco de dados MySQL, utilizando o JDBC, permitiu armazenar e recuperar os dados dos alunos de forma persistente, garantindo a confiabilidade das informações. O desenvolvimento deste trabalho proporcionou uma experiência prática na aplicação dos padrões de projeto estudados, além de evidenciar a importância da utilização de boas práticas e padrões no desenvolvimento de sistemas computacionais. REFERÊNCIAS DEITEL, P. Java: como programar. 10. ed. São Paulo: Pearson Education do Brasil, 2017. ISBN: 978-85-430-0479-2. Biblioteca Virtual. MANZANO, J. A. N. G.; COSTA JUNIOR, R. A. Java 7 - Programação de computadores: guia prático de introdução, orientação e desenvolvimento. São Paulo: Érica, 2011. ISBN: 978-85-365-1933-3. Minha Biblioteca. Oracle. (s.d.). JDBC Driver Downloads. Utilizado de: https://www.oracle.com/database/technologies/appdev/jdbc-downloads.html Acesso em 02 de jun. de 2023.
Compartilhar