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.