Você está na página 1de 15

Telas do Projeto

Componentes Utilizados

Componentes Utilizados

Conhecendo o Padrão MVC (Model-View-Controller)


No padrão MVC (Model-View-Controller), a classe "Modelo" é responsável por representar a estrutura de dados e a
lógica de negócios da aplicação. Ela é uma das três principais componentes do padrão MVC, juntamente com a classe "Visão"
(View) e a classe "Controlador" (Controller). A classe "Modelo" encapsula os dados e o comportamento relacionados a um
determinado conceito ou entidade do sistema. Ela contém os atributos e métodos que representam as propriedades e as
operações associadas a esses dados. A principal função da classe "Modelo" é fornecer uma representação da informação de
forma estruturada e manipulável. Dentro do padrão MVC, a classe "Modelo" é independente da interface do usuário e da lógica
de apresentação. Ela não possui conhecimento direto sobre a forma como os dados serão exibidos ou interagidos com o
usuário. Isso é responsabilidade da classe "Visão" (View). Ao separar a lógica de negócios da interface do usuário, o padrão
MVC promove uma arquitetura mais modular e reutilizável. A classe "Modelo" pode ser utilizada por diferentes visões e
controladores, tornando a aplicação mais flexível e fácil de dar manutenção.
Estrutura do Projeto

Criando um Banco de Dados


O PostgreSQL é um sistema de gerenciamento de banco de dados relacional de código aberto e altamente confiável.
Ele é amplamente utilizado em diferentes tipos de aplicativos, desde pequenos projetos até grandes empresas, devido à sua
estabilidade, recursos avançados e conformidade com os padrões ANSI SQL.
Aqui estão algumas características e aspectos importantes do PostgreSQL:
1. **Modelo Relacional**: O PostgreSQL é baseado no modelo relacional, o que significa que os dados são organizados
em tabelas com linhas e colunas. Ele suporta todas as operações e recursos comuns do modelo relacional, incluindo consultas
complexas, junções, chaves estrangeiras e integridade referencial.
2. **Extensibilidade**: O PostgreSQL oferece suporte a extensões, permitindo que os desenvolvedores adicionem
recursos personalizados ao banco de dados. Isso possibilita estender a funcionalidade básica do PostgreSQL para atender às
necessidades específicas de um projeto.
3. **Suporte a ACID**: O PostgreSQL segue o princípio ACID (Atomicidade, Consistência, Isolamento e Durabilidade)
para garantir transações seguras e confiáveis. Ele oferece suporte a transações que podem ser executadas em blocos e
garantem a consistência dos dados.
4. **Suporte a Linguagens de Programação**: O PostgreSQL é compatível com várias linguagens de programação,
incluindo Java, Python, C/C++, Ruby, entre outras. Isso facilita a integração do banco de dados com aplicativos e permite o
desenvolvimento de soluções completas.
5. **Licença Open Source**: O PostgreSQL é distribuído sob uma licença de código aberto (PostgreSQL License), o
que significa que é gratuito para uso, modificação e distribuição. Isso torna o PostgreSQL uma opção econômica e acessível
para muitos projetos e organizações.
O PostgreSQL é amplamente utilizado em diferentes setores, incluindo empresas, organizações governamentais, instituições
acadêmicas e startups. Ele oferece uma solução robusta e confiável para o gerenciamento de dados, com suporte a recursos
avançados e uma comunidade ativa que impulsiona seu desenvolvimento contínuo.
Vamos criar 3 tabelas usando o POSTGRESQL.

Nome do Banco de Dados: amigos

TABELA: info
NOME TIPO TAMANHO
matricula serial PK (chave primária)
nome characther varying 80 NOT NULL
email characther varying 80 NOT NULL

TABELA: acesso
NOME TIPO TAMANHO
cod serial PK (chave primária)
nome_usuario characther varying 15 NOT NULL
data_acesso characther varying 15 NOT NULL
hora_acesso characther varying 15 NOT NULL
TABELA: login
NOME TIPO TAMANHO
cod serial PK (chave primária)
nome_usuario characther varying 15 NOT NULL
senha characther varying 32 NOT NULL

Exemplo da Criação das Tabelas utilizando a instrução SQL

-- Tabela 'info'
CREATE TABLE info (
matricula SERIAL PRIMARY KEY,
nome VARCHAR(80) NOT NULL,
email VARCHAR(80) NOT NULL
);
-- Tabela 'acesso'
CREATE TABLE acesso (
cod SERIAL PRIMARY KEY,
nome_usuario VARCHAR(15) NOT NULL,
data_acesso VARCHAR(15) NOT NULL,
hora_acesso VARCHAR(15) NOT NULL
);
-- Tabela 'login'
CREATE TABLE login (
cod SERIAL PRIMARY KEY,
nome_usuario VARCHAR(15) NOT NULL,
senha VARCHAR(32) NOT NULL
);
As instruções acima criarão as três tabelas no PostgreSQL com os respectivos campos, tipos de dados e restrições. A
coluna 'cod' é definida como serial, o que significa que ela será preenchida automaticamente com valores sequenciais. A coluna
'nome_usuario' é definida como character varying com tamanho máximo de 15 caracteres. A coluna 'nome' e 'email' em 'info'
são character varying com tamanho máximo de 80 caracteres. A coluna 'senha' em 'login' é character varying com tamanho
máximo de 32 caracteres. Todas as colunas são definidas como NOT NULL para garantir que os valores não sejam nulos.

FUNÇÃO DO PACOTE MODELO

No padrão MVC (Model-View-Controller), o pacote "modelo" é responsável por representar a camada de modelo da
aplicação. Ele contém as classes e componentes que lidam com a lógica de negócios, acesso aos dados e manipulação dos
dados do aplicativo. A função do pacote "modelo" no MVC é separar e organizar a lógica de negócios e a interação com os
dados da aplicação. Ele encapsula as regras de negócios, as operações de banco de dados e a manipulação dos dados,
fornecendo uma interface para que as outras partes do MVC (a camada de visualização e o controlador) possam interagir com
os dados e a lógica subjacentes.
As principais responsabilidades do pacote "modelo" no MVC são:
1. **Representação dos Dados**: O pacote "modelo" contém as classes que representam os dados da aplicação. Isso inclui a
definição de objetos, estruturas e relações entre os dados. Essas classes são responsáveis por armazenar e manipular os dados
do aplicativo.
2. **Lógica de Negócios**: O pacote "modelo" implementa a lógica de negócios da aplicação. Ele contém os métodos e
algoritmos que manipulam os dados, aplicam regras de negócios e executam cálculos ou processamentos específicos.
3. **Acesso aos Dados**: O pacote "modelo" lida com o acesso aos dados, seja diretamente por meio de chamadas a um banco
de dados ou por meio de camadas de acesso a dados. Ele encapsula a lógica de consulta e modificação dos dados, garantindo
a integridade e consistência dos mesmos.
4. **Validação de Dados**: O pacote "modelo" também é responsável pela validação dos dados de entrada. Ele verifica se os
dados fornecidos são válidos e atendem às regras de negócios estabelecidas. Isso ajuda a garantir a integridade e qualidade
dos dados manipulados pela aplicação.
CLASSES do Pacote MODELO

Explicação da Classe Acesso:

Essas linhas SimpleDateFormat, estão relacionadas à formatação da data e hora no objeto.


• SimpleDateFormat é uma classe que permite formatar datas e horas de acordo com um padrão específico.
• O construtor da classe `SimpleDateFormat` recebe como parâmetro uma String que representa o padrão
desejado para formatação.
• No caso, "kk:mm:ss" define o padrão para a formatação da hora, onde "kk" representa as horas no formato de
0 a 23, "mm" representa os minutos e "ss" representa os segundos.
• Já "dd:MM:yyyy" define o padrão para a formatação da data, onde "dd" representa o dia do mês, "MM"
representa o mês e "yyyy" representa o ano com 4 dígitos.
• Esses objetos `SimpleDateFormat` são usados posteriormente para formatar a data e a hora atual no formato
desejado, que serão atribuídos aos atributos `dataAcesso` e `horaAcesso` da classe `Acesso`.
CLASSES do Pacote DAO (Data Access Object)
O pacote DAO (Data Access Object) em uma aplicação MVC tem a função de encapsular a lógica de acesso e manipulação
dos dados no banco de dados. Ele fornece uma interface entre a camada de modelo (Model) e a camada de persistência de
dados, abstraindo os detalhes da implementação do banco de dados. A responsabilidade do pacote DAO é isolar as operações
de leitura, escrita, atualização e exclusão de dados do modelo da aplicação. Ele fornece métodos para criar, recuperar, atualizar
e excluir registros do banco de dados, permitindo que a camada de modelo (Model) acesse e manipule os dados de forma
transparente, sem precisar conhecer os detalhes específicos do banco de dados utilizado.
O pacote DAO pode conter classes que representam entidades específicas do modelo e implementam os métodos de
acesso aos dados relacionados a essas entidades. Essas classes são responsáveis por criar consultas SQL, interagir com o banco
de dados e retornar os resultados para a camada de modelo. Ao separar a lógica de acesso aos dados em um pacote DAO, a
aplicação MVC promove a modularidade e a reutilização de código. O pacote DAO permite que diferentes modelos da
aplicação compartilhem a mesma lógica de acesso aos dados, evitando a duplicação de código e facilitando a manutenção do
sistema.
CRIANDO UMA CONEXÃO ENTRE O FORMULÁRIO E O BANCO
Para que o projeto reconheça a uma conexão com o banco, devemos adicionar o Driver
do banco que utilizaremos, nesse caso a biblioteca a ser escolhida será Driver JDBC do
PostgreSQL, feito isso escolher a opção Adicionar Biblioteca.

Caso a Biblioteca não esteja disponível você deverá baixar o driver JDBC do PostgreSQL: Você
pode baixar o driver JDBC do PostgreSQL no site oficial do PostgreSQL ou em repositórios de
bibliotecas Java, como o Maven Central. Certifique-se de baixar a versão correta do driver que
corresponde à versão do PostgreSQL que você está usando.
Classe CRIA CONEXÃO

A classe Banco é responsável por incluir os métodos necessários para manipulação das informações que serão
inseridas, excluídas e alteradas no banco de dados. Esses métodos podem envolver consultas SQL para recuperar informações,
instruções de atualização para modificar os dados existentes e até mesmo operações de exclusão de registros.

A partir de agora serão inseridas novas funções a classe Banco. Adicione as sequencias abaixo a essa classe.
Rotina da Consulta por nome:

Explicação do Código acima:

O código acima representa um método chamado consultarNome que recebe um parâmetro nome e retorna um objeto
do tipo Contato. Ele realiza uma consulta no banco de dados buscando um registro na tabela "info" com base no nome
informado. O resultado da consulta é armazenado em um objeto ResultSet, que é percorrido com o método next() para verificar
se há um registro encontrado.
Se houver um registro, os valores das colunas "matricula", "nome" e "email" são obtidos do ResultSet e atribuídos ao
objeto Contato criado anteriormente. Por fim, o objeto Contato preenchido com os dados é retornado. É importante notar que
o código assume que a variável conexao representa uma conexão válida com o banco de dados e que o objeto Contato possui
métodos setMatricula(), setNome() e setEmail() para definir os valores dos campos do contato. Além disso, o método lança uma
exceção genérica Exception, o que pode indicar a necessidade de um tratamento adequado dessa exceção em um contexto
real.

Abaixo, o mesmo código foi utilizado para fazer a busca pela Matrícula do aluno. Foi realizada uma pequena alteração na
instrução SQL.
Ao criar o método getLista para retornar uma pesquisa por meio do botão Pesquisar, é necessário importar a biblioteca
java.util.List para que possamos usar a interface List do Java. Ao solicitar a importação das bibliotecas, podem ser
oferecidas várias opções. Certifique-se de selecionar a biblioteca correta que contém a interface List.
CLASSES do Pacote VISÃO
PACOTE VISÃO – TelaLogin

Esse código deverá ser criado como um método independente na TELA LOGIN

Esse código representa uma função de login. Ele verifica se o nome de usuário e a senha inseridos correspondem a
um login válido, usando um objeto da classe Banco. Se o login for válido, exibe uma mensagem de sucesso, cria e exibe uma
nova tela chamada TelaAmigos, e fecha a tela atual de login. Caso contrário, exibe uma mensagem de erro, limpa os campos
de texto do nome de usuário e senha, e define o foco no campo de texto do nome de usuário para que o usuário possa tentar
novamente. Se ocorrer alguma exceção durante o processo de login, uma mensagem de erro será exibida.
Após o desenvolvimento do Código, adicionar as Instruções a seguir nos botões CANCELAR e ACESSAR.

PACOTE VISÃO – TelaAmigos

Desenvolvimento das rotinas dos botões:


Salvar no Banco

Observe que na rotina do botão Salvar foi utilizado um método chamado LimparCampos(). Esse método deve ser criado de
forma independente antes da CHAVE ( } ) de fechamento da classe para que o mesmo possa ser utilizado em outras rotinas,
sem que se precise ficar repetindo o código para limpeza das caixas de texto.
Excluir Registro

Alterar Registro

Menu Consultas – por Nome

Menu Consultas – por Matrícula


Pesquisar

Ainda no Tela Amigos, continuar com as rotinas.


Adicione as linhas de código abaixo na TelaAmigos, para que não seja necessário fazer a referência aos campos da tabela
manualmente. Observe onde o código está sendo inserido.

Explicação:
A linha DefaultTableModel tmContato = new DefaultTableModel(null, new String[]{"matricula", "nome", "email"}); cria
um objeto DefaultTableModel chamado tmContato que representa o modelo da tabela de contatos. Ele recebe dois
argumentos:
null: Representa os dados iniciais da tabela, que neste caso estão vazios.
new String[]{"matricula", "nome", "email"}: Representa os nomes das colunas da tabela. Aqui, são especificados os
nomes "matricula", "nome" e "email" para as colunas da tabela.
A linha List<Contato> contatos; declara uma variável chamada contatos que é do tipo List<Contato>. Essa variável será
usada para armazenar uma lista de objetos do tipo Contato. No momento da declaração, a lista ainda não foi inicializada.
A linha ListSelectionModel lsmContato; declara uma variável chamada lsmContato que é do tipo ListSelectionModel.
Essa variável será usada para gerenciar a seleção de itens na tabela de contatos. No momento da declaração, o modelo de
seleção ainda não foi inicializado.
Depois do código adicionado;
1. Clicar com o botão direito do mouse no table (tblContatos) ir até as
propriedades, depois procurar pela propriedade Model.
2. Clicar ... e escolher Código Personalizado.

Depois execute para ver o resultado a seguir:

Na tela Amigos, adicionar o método independente do botão.

Explicação:
O método mostraPesquisa recebe uma lista de contatos como parâmetro.
O loop while remove todas as linhas existentes no modelo da tabela (tmContato) usando o método removeRow(0). Isso
garante que a tabela esteja vazia antes de preenchê-la com os novos dados.
É verificado se a lista de contatos está vazia (contatos.size() == 0). Se estiver vazia, exibe uma caixa de diálogo informando que
não há contatos cadastrados. Caso contrário, a lista de contatos contém elementos, então um array de Strings vazio (linha) é
criado para preencher as linhas da tabela. Essas linhas serão adicionadas ao modelo da tabela.
Em um loop for, percorre-se a lista de contatos. Para cada contato, uma nova linha é adicionada ao modelo da tabela
usando o método addRow do tmContato. Os valores dos campos do contato são definidos nas colunas correspondentes
usando o método setValueAt do tmContato. Para cada contato, o valor da matrícula é definido na coluna 0, o valor do nome na
coluna 1 e o valor do email na coluna 2. No final, o modelo da tabela (tmContato) estará preenchido com os dados dos contatos,
que foram passados como parâmetro para o método mostraPesquisa.

Ainda na TelaAmigos, adicione as rotinas independentes dos botões.

Explicação:
O método ListarContatos é responsável por buscar a lista de contatos no banco de dados e exibir os resultados na
tabela. É criada uma instância da classe Banco, que provavelmente é a classe responsável pela comunicação com o banco de
dados. O método getLista do objeto dao é chamado para obter a lista de contatos. É passado como parâmetro o texto digitado
no campo de pesquisa (txtPesquisa.getText()) com o operador % adicionado antes e depois para realizar uma busca parcial. O
resultado da busca é armazenado na variável contatos. O método mostraPesquisa é chamado, passando a lista de contatos
como parâmetro. Esse método é responsável por preencher a tabela com os dados dos contatos obtidos na busca.
Finalizar Aplicação

Você também pode gostar