Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

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.

Mais conteúdos dessa disciplina