Mostrando postagens com marcador Tutorial. Mostrar todas as postagens
Mostrando postagens com marcador Tutorial. Mostrar todas as postagens

Java - Criando uma aplicação em 3 camadas (MVC)

O passo a passo para a criação de uma aplicação usando Java, com Banco de Dados (BD) chamado H2 na estrutura MVC (Modelo, Visão e Controle).
Será um exemplo com uma única classe sendo armazenada no BD.


Para os códigos que seguem abaixo, em todas as classes deve-se incluir o package correto e adicionar os imports necessários. Observe a divisão abaixo:

 - gui (Visão)
- LoginGUI
- ApiculturaGUI
- ClienteGUI
- controller (Controle)
- ApiculturaController
- IncluirClienteController
- persistência (Modelo)
- ClienteDAO
- FactoryConnection
- dominio (Modelo)
- Cliente



A primeira classe contém o famoso psvm (public static void main), que inicia a execução da aplicação:

public class Apicultura {
public static void main(String[] args) {
ApiculturaController app = new ApiculturaController();
}
}



A classe ApiculturaController.java controla a janela de Login e a que contém o Menu.
Se o usuário acertar a senha, que é única, a janela com menu será apresentada, caso contrário a aplicação é finalizada.
São instanciadas as classes com a interface gráfica e aqui são tratados os eventos.

public class ApiculturaController {
private ApiculturaGUI gui = null;
private LoginGUI guiLog = null;

public ApiculturaController() {
guiLog = new LoginGUI();
guiLog.adicionarOuvinteLogin (new OuvinteLogin());
}

class OuvinteLogin implements ActionListener {
public void actionPerformed (ActionEvent ev){
if (ev.getActionCommand() == "OK") {
String senha = String.valueOf(guiLog.pfSenha.getPassword());
if (senha.compareTo("SENHA")==0) {
guiLog.dispose(); // fecha a janela de login
gui = new ApiculturaGUI();
gui.adicionarOuvinte(new OuvinteIncluir());
}
else {
JOptionPane.showMessageDialog(null, "Senha Inválida!");
System.exit(0);
}
}
else System.exit(0);
}
}

class OuvinteIncluir implements ActionListener {
public void actionPerformed (ActionEvent ev) {
Object fonte = ev.getSource();
if (ev.getSource() instanceof JMenuItem) {
if (fonte == gui.mcSair) {
System.exit (0);
}
else
if (fonte == gui.mcCadastro) {
IncluirClienteController clienteController =
new IncluirClienteController();
gui.desktop.add(clienteController.guiCli);
}
}
}
}
}



A classe LoginGUI.java deve conter os componentes em seu método construtor e a adição dos eventos, que são tratados na classe de controle (ApiculturaController.java).

public class LoginGUI extends JFrame {
// declarar os componentes aqui como public

public LoginGUI() {
// tratar a parte gráfica aqui
}

public void adicionarOuvinteLogin (ActionListener ouvinte) {
this.btOK.addActionListener(ouvinte);
this.btCancelar.addActionListener(ouvinte);
}
}

Um exemplo para a interface gráfica de Login é a seguinte:

Login


A classe ApiculturaGUI.java é a que contém o menu, usando as classes DesktopPane e JInternalFrame. Observe a implementação:

public class ApiculturaGUI extends JFrame {
public JDesktopPane desktop;
public JMenuBar barraDeMenu;
public JMenuItem mcCadastro, mpCadastro, mcSair, miSobre;

public ApiculturaGUI() {
this.setTitle("Sistema de Controle de Produção Apícula");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

barraDeMenu = criaMenu();
this.setJMenuBar(barraDeMenu);

desktop = new JDesktopPane();
this.setContentPane(desktop);
this.setVisible(true);
}

public JMenuBar criaMenu() {
// crie seu menu com os componentes JMenu, JMenuBar e JMenuItem
}

public void adicionarOuvinte (ActionListener ouvinte) {
this.mcCadastro.addActionListener(ouvinte);
this.mcSair.addActionListener(ouvinte);
}
}

Como aconteceu na classe LoginGUI.java, a classe ApiculturaGUI deve conter os componentes para a criação do menu em seu método construtor e a adição dos eventos, que são tratados na classe de controle (ApiculturaController.java).

Veja como fica o Front-end da aplicação:

Menu
Observe que o JPanel contém uma imagem de fundo. Para maiores detalhes, acesse a explicação clicando aqui.


A próxima classe é a IncluirClienteController.java que chama a interface gráfica para a classe Cliente e trata os eventos que serão adicionados pela classe ClienteGUI.java.

public class IncluirClienteController {
public ClienteGUI guiCli;

public IncluirClienteController() {
guiCli = new ClienteGUI();

guiCli.adicionarOuvinteCliente1 (new OuvinteIncluirCliente1());
}

class OuvinteIncluirCliente1 implements ActionListener {
public void actionPerformed(ActionEvent ev){
Object fonte = ev.getSource();
if (fonte == guiCli.bSaiCli)
guiCli.dispose();
else if (fonte == guiCli.bLimCli)
guiCli.limparCampos();
else if (fonte == guiCli.bExcCli) {
ClienteDAO clienteDAO = new ClienteDAO();
clienteDAO.excluirCliente(guiCli.tfcodcli.getText());
guiCli.limparCampos();
}
else if (fonte == guiCli.bConCli) {
ClienteDAO clienteDAO = new ClienteDAO();
Cliente cliente = clienteDAO.consultarCliente();
if (cliente != null)
mostrarCliente(cliente);
}
else if (fonte == guiCli.bIncCli) {
ClienteDAO clienteDAO = new ClienteDAO();
Cliente cliente = obterCliente();
clienteDAO.incluirCliente(cliente);
guiCli.limparCampos();
}
else if (fonte == guiCli.bAltCli)
ClienteDAO clienteDAO = new ClienteDAO();
Cliente cliente = obterCliente();
clienteDAO.alterarCliente(cliente);
}
}
}
}

public Cliente obterCliente(){
Cliente cliente = new Cliente();
// Aqui deve-se obter todos os dados contidos nos componentes
// e preencher o objeto cliente.
// Exemplo: cliente.setNomCli(guiCli.tfnomcli.getText());
return cliente;
}

public void mostrarCliente(Cliente cliente){
// Aqui deve-se obter todos os dados contidos no objeto cliente
// e preencher os componentes da interface gráfica
// Exemplo: guiCli.tfnomcli.setText(cliente.getNomCli());
}
}



A classe ClienteGUI.java contém apresentação da interface gráfica para tratar os dados do Cliente.
Veja o exemplo:

Interface_Cliente
Veja o trecho do código:

public class ClienteGUI extends JInternalFrame {
// declarar os componentes da interface

public ClienteGUI() {
// criar a interface gráfica
}

public void adicionarOuvinteCliente1 (ActionListener ouvinte) {
// adicionar os ouvintes aos botões
// Ex.: this.bIncCli.addActionListener(ouvinte);
}

public void limparCampos() {
// comandos para limpar os componentes
}
}

O menu está no JDesktopPane e as demais janelas serão JInternalFrame.


A classe que controla Cliente (IncluirClienteController.java) também precisa da classe Cliente.java que tem a definição dos atributos e dos métodos acessores (get) e modificadores (set).
Veja parte do código:

public class Cliente {
// declare todos os atributos como private
private int codcli;
private String nomcli;

public Cliente() {
super();
}

public Cliente (int codcli, String nomcli){
super();
this.codcli = codcli;
this.nomcli = nomcli;
}

public int getCodCli(){
return this.codcli;
}

public String getNomCli(){
return this.nomcli;
}

public void setCodCli(int codcli) {
this.codcli = codcli;
}

public void setNomCli(String nomcli) {
this.nomcli = nomcli;
}
}



A classe ClienteDAO.java (Data Access Object) trata das rotinas de inclusão, exclusão, alteração e consulta, ou seja, trabalha diretamente com a fonte de dados (o BD). Todos os seus métodos realizarão a conexão com o Banco de Dados, sendo assim, precisam instanciar um objeto da classe FactoryConnection.java.
Ex.: Connection con = FactoryConnection.getConnection();

public class ClienteDAO {
public void incluirCliente(Cliente cliente) {
// tratar inclusão
}

public Cliente consultarCliente() {
// tratar consulta
return cliente;
}

public void alterarCliente(Cliente cliente) {
// tratar alteração
}

public void excluirCliente(String strcod) {
// tratar exclusão
}
}

Para maiores detalhes, clique aqui e acesse o Fórum Programação Java - Dicas que contém detalhes da classe ClienteDAO.


A classe FactoryConnection apresenta a conexão com o Banco de Dados, que neste exemplo será o H2.

public class FactoryConnection {
public static Connection getConnection(){
Connection con = null;
try {
Class.forName("org.h2.Driver");
String url = "jdbc:h2:tcp://localhost:9092/C:/DB/Banco";
String user = "admin";
String password = "senha";
con = DriverManager.getConnection(url, user, password);
} catch (Exception e){
e.printStackTrace();
}
return con;
}
}

Trabalhando dessa forma, suas classes ficam menores e bem dividas por assunto!
O códigos foram didaticamente apresentados! Portanto, use sua criatividade e melhore-os!


Links para pesquisa:
Padrões de Projeto : O modelo MVC

Mais...

Banco de Dados H2

H2 é um Banco de Dados escrito em Java, muito rápido, free e com código fonte incluído.
Aqui você terá um passo-a-passo de como instalar e configurar o ambiente, que está direcionado para o Windows. E também para adicionar o arquivo h2.jar ao aplicativo JCreator.




A - Instalar o DB H2

1. Acessar o site http://h2database.com
2. Clicar em All Downloads (including Stable)
3. Clicar em Windows Installer (Version 1.0.79)
4. Clicar no botão Executar (o arquivo será baixado)
5. Clicar no botão Executar e escolha o diretório C:\Arquivos de Programas\H2
6. Clicar no botão Avançar
7. Clicar no botão Instalar
8. Clicar no botão Terminar



B - Configurar as variáveis CLASSPATH e PATH

1. Clicar no botão Iniciar / Configurações / Painel de Controle
2. Selecionar o ícone Sistema
3. Na guia Avançado, clicar no botão Variáveis de Ambiente
4. Em Variáveis do sistema selecionar a variável CLASSPATH e clicar no botão Editar
5. Adicionar ao final ;C:\Arquivos de programas\H2\bin
6. Clicar no botão OK
7. Em Variáveis do sistema, selecionar a variável PATH e clicar no botão Editar
8. Adicionar ao final ;C:\Arquivos de programas\H2\bin
9. Clicar no botão OK
10. Clicar no botão OK
11. Clicar no botão OK




C - Levantar o DB H2

1. Clicar no botão Iniciar / Executar
2. Em Abrir, digitar cmd e clicar no botão OK
3. Acessar o diretório bin com o comando:
cd \Arquivos de Programas\H2\bin
4. Digitar o comando:
java –cp h2.jar org.h2.tools.Server


O Banco de Dados será levantado e uma janela do browser padrão será aberta.



D - Configurar o DB H2

Database
Na janela do browser que foi aberta (figura à esquerda), será aberto o banco
db_apicultura que está no diretório Apicultura/db/ do drive I:

1. Em JDBC URL digite o caminho e o nome do banco de dados a ser criado:
jdbc:h2:I:/Apicultura/db/db_apicultura
2. Em User Name digite admin
3. Em Password digite senha
4. Clique no botão Connect

=> Aparecerá uma mensagem indicando que o banco de dados foi aberto (figura da direita) Database was opened.



E – Executar os comandos SQL

1. Criar uma tabela (CREATE TABLE)

SELECT
2. Insirir dados na tabela (INSERT INTO)

INSERT
3. Ver os dados existentes tabela (SELECT FROM)

CREATE TABLE
4. Antes de fechar a janela, lembrar de desconectar o banco, clicando no botão
Disconnect
5. Fechar a janela.



F – Criar um projeto no JCreator e Configurar a biblioteca H2.jar

1. Usando o Windows Explorer, criar uma pasta com nome C:\Trabalho
2. Abrir o JCreator
3. Selecionar o menu File / New / Project
4. Selecionar Basic Java Application e clicar no botão Next
5. Em Location: clicar no botão ...
6. Selecionar a pasta C:\Trabalho
7. Digitar em Name: Aplicacao e clicar no botão Next
8. Selecionar a guia Required Libraries e clicar no botão New
9. Na caixa Set Library / Guia Classes clicar no botão Add >
10. Selecionar Add Archive
11. Procurar o arquivo: C:\Arquivos de Programas\H2\bin\h2.jar
12. Colocar em Name: H2 e clicar no botão OK
13. Na guia Required Libraries, selecionar H2 e clicar no botão Finish
14. Clicar no botão Finish



G – Organizar o Projeto

1. O arquivo Aplicacao.java é o arquivo principal de seu projeto e contém o método main().
2. Copiar todos os arquivos (*.java) para o diretório:
C:\Trabalho\Aplicacao\src
3. Copiar todos as figuras (*.gif, *.jpg, etc) para o diretório:
C:\Trabalho\Aplicacao\Imagens
4. Menu Project / Add Files / Pasta:
C:\Trabalho\Aplicacao\src
5. Selecionar todos os *.java (exceto Aplicacao.java)
6. Clicar no botão Abrir
7. Clicar no botão Compile Project
8. Um diretório será criado após a compilação do projeto:
C:\Trabalho\Aplicacao\classes
9. O banco de dados deverá ser criado no diretório:
C:\Trabalho\Aplicacao\db

Mais...

Como criar posts expansíveis no Blogger sem javascript

Aprenda como criar posts que apresentam um resumo do post na página principal do blog e mostram o conteúdo completo em uma página separada clicando em um link tipo: "Leia mais...". Dica para o Blogger. Primeiramente é necessário fazer backup de seu template pois vão ser necessárias pequenas alterações e se algo der errado você terá como recuperar o estado original do seu blog.

Vá em Layout >> Clique em Editar HTML e depois em Baixar Modelo Completo para salvar o seu template.

Agora que a brincadeira começa:

Ainda em Editar HTML marque a opção Expandir modelos de widgets e espere até seu template ser totalmente expandido. Depois procure esta linha de código:

<div class="'post-body'">

E logo em seguida coloque (cole) as seguinte linhas de código.

<!-- Inicio do Codigo -->
<b:if cond='data:blog.pageType == "item"'>
<style>.fullpost{display:inline;}</style>
<p><data:post.body/></p>
<b:else/>
<style>.fullpost{display:none;}</style>
<!-- Fim do Codigo -->

em seguida busque essa linha de código, deve estar logo em seguida ao código que você postou no passo anterior:

<p><data:post.body/></p>

E coloque mais estas linha imediatamente após:

<!-- Inicio do Codigo -->
<a expr:href='data:post.url'>Clique para ler mais...</a>
</b:if>
<!-- Fim do Codigo -->

No final, esse trecho de código deve estar parecido com isto:

<div class='post-body'>
<!-- Inicio do Codigo -->
<b:if cond='data:blog.pageType == "item"'>
<style>.fullpost{display:inline;}</style>
<p><data:post.body/></p>
<b:else/>
<style>.fullpost{display:none;}</style>
<!-- Fim do Codigo -->

<p><data:post.body/></p>
<!-- Inicio do Codigo -->
<a expr:href='data:post.url'>Clique para ler mais...</a>
</b:if>
<!-- Fim do Codigo -->

<div style='clear: both;'/> <!-- clear for photos floats --></div>

Sendo que a parte em preto é o que já deveria estar no template e em verde são as linhas de código inseridas.

O que você deverá fazer quando editar seu post:

Você deverá colocar o resumo (que aparecerá na página principal do blog. O resto do post deverá ficar entre as tags:
<span class="fullpost">
e
</span>

Assim seu post terá a seguinte estrutura:

Digite seu resumo aqui.
<span class="fullpost">
Digite o resto do post aqui.
</span>

Qualquer dúvida basta comentar.


Traduzido de Blogger Tips and Tricks.

Mais...

Visual Infográfico

Muitas vezes, em aulas de multimídia e computação gráfica, desenvolvemos trabalhos em grupo onde os estudantes são estimulados a criarem tutoriais animados. O estilo infográfico é adotado quando se quer criar um visual limpo e leve, abstraindo detalhes não aproveitáveis e focando no assunto principal sendo demonstrado. Suportando o estilo temos a forte presença de ícones, setas, esquemas, cores contrastantes, chapadas e saturadas, acompanhadas de onipresentes legendas.


O trabalho visa, entre outros objetivos, desenvolver o espírito de equipe, despertar a habilidade de liderar equipes e gerenciar projetos. Além de treinar os conceito de CG e Multimeios.

Um exemplo de trabalho feito pelos discentes pode ser visto clicando AQUI (Como Fazer um Desenho Animado? - Produzido pelos alunos de computação: Jefferson Chaves, Rafael Lucena e Ronan Leônidas).

Outra vantagem desse formato é que, por ser despojado, facilita o uso de imagens vetoriais, o que consome menos recursos facilitando a manipulação e a publicação na Internet, onde o fator desempenho é um diferencial importante para se atingir a escalabilidade desejada.

O clip a seguir assume esse visual infográfico para falar de um tema, digamos, menos técnico, e é nesse contraste que se encontra o forte da mensagem. Além de entreter, pode inspirar os desenhos técnicos de muito designer carente de motivação.

Clique AQUI para ver.

Outro ótimo clip infográfico. Música: Royksopp.


Para saber mais:
Veja como o G1 produz seus infográficos - G1

Mais...

Páginas:

© 2007-2008 Blog Brasil Acadêmico - pode ser reproduzido desde que a fonte seja citada e tenha um link para http://blog.brasilacademico.com