Prévia do material em texto
UNIVERSIDADE VEIGA DE ALMEIDA
SISTEMAS DE INFORMAÇÃO
PROGRAMAÇÃO ORIENTADA A OBJETOS III
ALUNO: Michel Vasconcelos Hanan
Conteúdo:
a) Cite as características e vantagens do modelo de projetoFactory.
R: O modelo de projeto Factory oferece uma maneira flexível e abstrata de criar objetos, promovendo o encapsulamento, o desacoplamento e a reutilização de código. Ele é especialmente útil quando você tem vários tipos de objetos que podem ser criados e deseja centralizar essa lógica de criação em um local específico., uma vantagem do factory method é que este padrão pode retornar a
mesma instância várias vezes, ou também pode retornar a sua subclasse, invés de
um objeto, daquele tipo.
b) Cite as características e vantagens do modelo de projeto DAO.
O modelo de projeto DAO (Data Access Object) é um padrão de projeto da área de engenharia de software que tem como objetivo separar a lógica de acesso a dados do restante do código do sistema. Ele fornece uma camada de abstração entre a aplicação e o banco de dados, permitindo que as operações de acesso aos dados sejam tratadas de forma centralizada.
c) Crie um método responsável por realizar a busca de um aluno específico nobanco de dados usando a matrícula como parâmetro de entrada e retornando asinformações sobre o aluno e d) Implemente o tratamento de exceção no método debusca de aluno
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class AlunoDAO {
private Connection connection;
public AlunoDAO(Connection connection) {
this.connection = connection;
}
public Aluno buscarAlunoPorMatricula(String matricula) {
String query = "SELECT * FROM alunos WHERE matricula = ?";
try (PreparedStatement statement = connection.prepareStatement(query)) {
statement.setString(1, matricula);
ResultSet resultSet = statement.executeQuery();
if (resultSet.next()) {
String nome = resultSet.getString("nome");
int idade = resultSet.getInt("idade");
String curso = resultSet.getString("curso");
return new Aluno(matricula, nome, idade, curso);
} else {
return null; // Retorna null se o aluno não for encontrado
}
} catch (SQLException e) {
// Tratamento de exceção
System.err.println("Ocorreu um erro ao buscar o aluno por matrícula: " + e.getMessage());
return null;
}
}
}
e) Implemente um teste de funcionamento do método de busca de aluno.
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class AlunoDAOTest {
private Connection connection;
@BeforeEach
public void setup() {
// Configurar a conexão com o banco de dados (exemplo com MySQL)
String url = "jdbc:mysql://localhost:3306/meu_banco_de_dados";
String username = "usuario";
String password = "senha";
try {
connection = DriverManager.getConnection(url, username, password);
} catch (SQLException e) {
e.printStackTrace();
}
}
@Test
public void testBuscarAlunoPorMatricula() {
AlunoDAO alunoDAO = new AlunoDAO(connection);
String matriculaExistente = "2021001";
String matriculaNaoExistente = "2022001";
// Teste com uma matrícula existente
Aluno alunoExistente = alunoDAO.buscarAlunoPorMatricula(matriculaExistente);
Assertions.assertNotNull(alunoExistente);
Assertions.assertEquals(matriculaExistente, alunoExistente.getMatricula());
// Teste com uma matrícula não existente
Aluno alunoNaoExistente = alunoDAO.buscarAlunoPorMatricula(matriculaNaoExistente);
Assertions.assertNull(alunoNaoExistente);
}
}
Conclusão:
Em conclusão, o modelo de projeto Factory é uma abordagem que centraliza a criação de objetos complexos em uma classe dedicada, proporcionando benefícios como encapsulamento, flexibilidade, abstração, desacoplamento, reutilização de código e facilidade de teste. Ele é especialmente útil quando há a necessidade de criar diferentes tipos de objetos de forma centralizada, permitindo a fácil adição e modificação desses objetos.