Estruturas de Dados em Java – Recursividade

Estruturas de Dados em Java – Recursividade

Vamos ver neste post, a definição de recursividade, com uma vídeo aula mostrando um exemplo com a linguagem Java.

A recursividade é uma técnica muito utilizada em programação. Ela consiste em uma função que chama a si própria para executar determinada tarefa.

Definição

A estrutura recursiva é uma técnica que consiste em aplicar uma função como parte da definição dessa mesma função.

A recursão é o princípio através do qual um programa ou (mais comumente) uma função chama a si mesma para executar uma tarefa.

A chave do seu funcionamento é a existência de uma condição que a  termine, ou  seja, a execução de uma tarefa não recursiva pela mesma função.

Elementos da recursão

Sempre precisamos identificar 2 elementos para definir um módulo recursivo:

  • O passo recursivo
  • A condição de parada

Exemplo:

return numero * fatorial(numero – 1);

Nesta função, a condição de parada é satisfeita quando numero=1.

As três regras da função recursiva

1.Saber quando parar.

2.Decidir como fazer a próxima ação.

3.Quebrar uma jornada recursiva em um passo mais uma jornada recursiva menor.

Vejam na vídeo aula abaixo um exemplo de recursividade: calculando o fatorial de um número.

Conclusão

A função recursiva é uma forma de programar que, quando o aluno está aprendendo programação, tem muita dificuldade em entender. A minha sugestão é que o aluno exercite bastante, faça todos os exercícios e exemplos, pois só assim começará a entender. Espero que tenham gostado.

Deixem seus comentários.

Abraços!

Funcionamento básico do Eclipse

 

Funcionamento básico do Eclipse para Programação Java

Disciplinas: Programação Orientada a Objetos e Estruturas de Dados Aplicadas

O Eclipse é uma IDE (Integrated Development Environment ou Ambiente Integrado de Desenvolvimento) muito utilizada para desenvolver programas em Java. Segue uma video aula que mostra o funcionamento básico do Eclipse para desenvolver programas Java.

Lembrando que, dependendo da velocidade da conexão, pode ficar parando o video, se isso acontecer, clique em pause, espere alguns minutos e depois clique em play novamente.

 

 

Livros relacionados:

Dominando Eclipse. Edson Gonçalves.

Eclipse IDE: Dicas e Truques. Edson Gonçalves.

 

 

 

 

 

 

Video aula para configurar as variáveis de ambiente no Java

Video aula para configurar as variáveis de ambiente no Java

Disciplina: Algoritmos

Segue abaixo a vídeo aula para ajudar meus alunos a configurarem as variáveis de ambiente para compilar e executar programas em Java através do prompt de comandos.

 

Lembrando que, dependendo da velocidade da conexão, pode ficar parando o vídeo. Se isso acontecer, clique em pause, espere alguns minutos e depois clique em play novamente.

 

 

 

 

 

 

 

Comandos de saída em Java

Veja neste artigo as formas mais comuns de apresentação de dados na linguagem Java 

Disciplinas: Algoritmos, Programação Orientada a Objetos e Estruturas de Dados Aplicadas

Toda linguagem de programação tem várias maneiras de apresentação de resultados. A linguagem Java não é diferente. E quem está iniciando os estudos nessa linguagem sempre tem dúvidas de qual maneira é melhor de utilizar. Neste artigo vou apresentar algumas sugestões. Neste momento será abordado apenas um comando de ambiente de interface gráfica (GUI – Graphical User Interface), da classe JOptionPane. É claro que, se estivermos utilizando esse ambiente, existem várias outras maneiras de apresentação de dados.    

1.   Métodos da classe System

A exibição de dados pode ser feita através dos métodos println() e print() do objeto out, disponível estaticamente por meio da classe System, que se encontra no pacote java.lang (portanto não é preciso importar essa classe para utilizar em nossos programas).

Segue o exemplo abaixo:

 

public class SaidaDeDados1 {

public static void main (String[] args) {

// Exemplo de saída com print e println:

String nome = “Jose Carlos Perini”;

int idade = 25;

float altura = 1.65f;

System.out.println(“Meu nome: “+ nome);

System.out.print(“Minha idade: “);

System.out.println(idade);

System.out.println(“Minha altura: ” + altura);

}

}

 

Abaixo, a compilação e execução do programa via prompt de comandos:

saidadedados1

 

 

 

 

 

 

 

 

Figura 1: Compilação e execução do programa no prompt

Vemos no exemplo que a diferença entre os comandos print e println é que o primeiro imprime na tela e não faz a quebra de linha. Já o comando println faz a quebra de linha após a impressão da mensagem.

Esses comandos de exibição de tela exibem no prompt de comandos. Caso esteja sendo utilizada uma IDE como o Eclipse, a exibição se dará no console.

2.   Método da classe JOptionPane

Uma das maneiras mais práticas de exibição de mensagens, mesmo para quem está começando a aprender a linguagem, é o método showMessageDialog da classe JOptionPane, que se encontra no pacote javax.swing (portanto, para a utilização dessa classe, devemos utilizar o comando import no início do programa).

Segue abaixo o mesmo exemplo utilizando esse tipo de exibição.

import javax.swing.JOptionPane;

public class SaidaDeDados2 {

public static void main (String[] args) {

// Exemplo de saída com print e println:

String nome = “Jose Carlos Perini”;

int idade = 25;

float altura = 1.65f;

JOptionPane.showMessageDialog(null,”Meu nome: ” + nome + “\n”+

“Minha idade: ” + idade + “\n”+

“Minha altura: ” + altura );

}

}

Abaixo, a compilação e execução do programa via prompt de comandos do novo exemplo:

saidadedados2

 

 

 

 

 

 

 

 

 

Figura 2. Compilação e execução do exemplo 2

Vemos no novo exemplo que a exibição é feita através de uma caixa de diálogo. Vemos também que foi utilizado um caractere de escape ‘\n’ para fazer a quebra de linha. Na chamada do método showMessageDialog utilizamos dois parâmetros. O primeiro indica a posição que a caixa de diálogo aparecerá (null significa que ficará no centro da tela). Se estivermos numa interface gráfica, no lugar de null colocamos em qual frame queremos que a mensagem seja apresentada.

O segundo parâmetro é exatamente o que queremos apresentar.

Como no primeiro exemplo, na mensagem nós concatenamos a mensagem com os valores das variáveis nome, idade e altura.

Esse método apresenta mais alguns parâmetros para podermos configurar, como mostra abaixo:

JOptionPane.showMessageDialog(null,”Meu nome: ” + nome + “\n”+

“Minha idade: ” + idade + “\n”+

“Minha altura: ” + altura, “Dados a meu respeito”, 2);

 

Dessa maneira, apresentará assim:

saidadedados3

 

 

 

 

 

Figura 3. Parâmetros do método showMessageDialog

O número 2 altera o ícone para sinal de alerta. As opções que temos são:

 

Propriedade

Descrição

Número correspondente

ERROR_MESSAGE Mensagem de erro 0
INFORMATION_MESSAGE Informação 1
WARNING_MESSAGE Alerta 2
QUESTION_MESSAGE Pergunta 3
PLAIN_MESSAGE Mensagem plana (sem ícone) Não tem número correspondente. Nesse caso, no lugar do número devemos colocar:JOptionPane.PLAIN_MESSAGE

Conclusão 

Nesse artigo mostramos as duas formas mais comuns de apresentação de dados na linguagem Java. O próximo artigo tratará das entradas de dados.

Comandos de entrada em Java – parte 2 (classe Scanner)

Veja neste artigo outra forma muito comum de entrada de dados na linguagem Java – a classe Scanner

Disciplinas: Algoritmos, Programação Orientada a Objetos e Estruturas de Dados Aplicadas

Prosseguindo o assunto entrada de dados na linguagem Java, vamos apresentar outras maneiras de input de informação para um programa Java.

1.    A classe Scanner

Scanner é uma classe que utilizamos para fazer a leitura de dados digitados no modo Console. A classe tem vários métodos, que recebem a String digitada e convertem para o tipo correspondente à variável que guardará essa informação.

A classe Scanner se encontra no pacote java.util. Por isso, para ser utilizada, devemos importá-la utilizando uma diretiva import.

A classe Scanner deve ser instanciada da seguinte forma:

Scanner entrada = new Scanner(System.in);

 

Métodos da classe Scanner:

– String nextLine() – Lê a próxima linha da entrada.

– String next() – Lê a próxima palavra da entrada (delimitada por um espaço em branco).

– int nextInt(), double nextDouble() e float nextFloat() – Lê a próxima sequência de caracteres que representa um número inteiro ou número de ponto flutuante.

Segue o exemplo abaixo:

entrada2Codigo

 

 

 

 

 

 

 

 

 

 

 

 

 

Figura 1: o código exemplo

Segue abaixo, a compilação e execução do programa via prompt de comandos:

entrada2

 

 

 

 

 

 

 

 

 

Figura 2: Entrada de dados com a classe Scanner

Vemos no exemplo que os dados são inseridos no console e atribuído às variáveis através dos métodos da classe Scanner. Observamos também que ao digitar a altura, devemos digitar com a vírgula em vez de ponto, como é comum no sistema decimal americano.

Se estivermos utilizando uma IDE como o Eclipse, a entrada dos dados será através da console. Segue abaixo o exemplo:

entrada2Eclipse

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Figura 3: Utilizando a classe Scanner no Eclipse

 Conclusão

Nesse artigo mostramos como entrar com dados através da classe Scanner. É importante ressaltar que também essa forma é utilizada apenas em ambiente de desenvolvimento, para testar as funcionalidades do programa.

 

Formatando a saída de números decimais

Formatando a saída de números decimais em Java

Disciplinas: Algoritmos, Programação Orientada a Objetos e Estruturas de Dados Aplicadas

Nas minhas aulas os alunos me perguntam como tratar a saída de números decimais quando há muitas casas após a vírgula, ou até mesmo quando o resultado é uma dízima periódica. Há muitas maneiras de fazermos isso no Java, mas existem duas maneiras simples de resolvermos esse problema. Um deles é arredondando o número através do método Math.round().

A outra forma é criarmos uma máscara de formatação através de um objeto da classe DecimalFormat. Para explicar direito essas duas maneiras, eu criei uma video-aula. Segue abaixo:

Estruturas de Repetição em Java e C/C++

Veja neste artigo as estruturas de repetição que temos nas linguagens Java e C/C++

Disciplinas: Algoritmos, Programação Orientada a Objetos e Algoritmos e Programação de Computadores

O objetivo deste artigo é passar pelas estruturas de repetição nas linguagens Java e C/C++, uma vez que os comandos são iguais para as duas linguagens, só mudando os comandos de entrada e saída. Estruturas de repetição são blocos de comandos que são repetidos diversas vezes de acordo com determinadas condições.

  • Uma estrutura de repetição é um fluxo de controle utilizado para decidir quantas vezes determinado conjunto de comandos se repetirá dentro do programa.
  • Uma estrutura de repetição determina qual conjunto de comandos ou bloco será executado após uma condição ser avaliada.
  • Enquanto esta condição estiver retornando verdadeiro, o conjunto de comandos será executado, parando somente quando o resultado da avaliação da condição for falsa.

Nas linguagens Java e C/C++, temos as seguintes estruturas de repetição: for, while e do… while.

 

  1. For
  • Uma estrutura de repetição for pode ser utilizada quando o algoritmo precisa ter definido a quantidade de vezes que um conjunto de comandos deve ser executado.
  • Neste caso, a variável de controle, sua inicialização e finalização bem como sua atualização fazem parte do cabeçalho da estrutura de repetição for e o conjunto de comandos dentro da estrutura é executado a quantidade de vezes determinada no cabeçalho desta estrutura.
  • Note que nesta estrutura de repetição, pode ocorrer do conjunto de comandos não ser executado nenhuma vez.

Exemplo da estrutura for:

Vamos supor que queremos somar 10 números inteiros digitados pelo usuário, e mostrar o total da soma e a média dos números digitados.

 

ExemploFor

Figura 1. Exemplo de for

 

Vemos neste exemplo o cabeçalho da estrutura for na linha 6. O cabeçalho se divide em três partes. A primeira parte é a inicialização da variável de controle i. É essa variável que controlará a quantidade de vezes que o bloco de comandos será executado. Na segunda parte está a condição para que o bloco de comandos seja executado. O bloco será executado sempre que essa condição (i < 10) for verdadeira. Na terceira parte encontra-se o incremento da variável de controle (i++ ou seja, i = i+1).

Nas linhas 7 e 8 está o bloco de comandos que será executado tantas vezes quanto a condição for verdadeira.

No exemplo da figura 1 foram digitados os números de 1 a 10. Dentro da estrutura os números foram somados e guardados na variável soma. Após a estrutura de repetição foi calculada a média dos números digitados, e em seguida apresentados os resultados da soma e da média. Veja abaixo o mesmo exemplo na linguagem C/C++.

ExemploForC

Figura 2. Exemplo de for em C/C++

Segue abaixo o teste de mesa do exemplo.

TesteMesaFor1

Figura 3. Teste de Mesa

O objetivo do teste de mesa é testar o algoritmo para verificar se está correto. A ideia é seguir os passos do programa como se estivesse executando.

 

  1. While

 

A estrutura while tem a mesma finalidade da estrutura for, com algumas características diferentes. O while não tem um cabeçalho como na estrutura anterior. Portanto, a inicialização da variável de controle deve ser feita antes da estrutura. E também o seu incremento deve ser feito após a execução do bloco de comandos e antes de fechar a chave da estrutura. Segue abaixo, o mesmo exemplo utilizando o while.

ExemploWhile

Figura 4. Exemplo de while.

No mesmo exemplo utilizando a estrutura while, verificamos que na linha 6 está a inicialização da variável de controle i. E na linha 10 está o incremento da variável (i++).

Percebemos, então, que o que fazemos com o for podemos fazer também com o while. Mas ambos têm as suas características bem peculiares. Quando sabemos qual a melhor estrutura para utilizar? O for é a melhor estrutura quando sabemos a quantidade de vezes que os comandos serão executados. Por exemplo, se quero somar 10 números, eu sei que será executado 10 vezes, tendo a variável i iniciando do 0 e terminando quando i chegar a 10. Veja abaixo o mesmo exemplo em C/C++.

ExemploWhileCFigura 5. Exemplo de while em C/C++

Mas e se eu quiser que o usuário vá digitando vários números inteiros para somar, e só parar quando digitar 0? Neste caso o while é mais apropriado. Segue abaixo um exemplo.

ExemploWhile2

Figura 6. Exemplo de while 2

Neste exemplo, a variável de controle não é mais o i, mas o número que está sendo digitado. Enquanto não digitar 0 o laço não encerrará. Nem precisaria do i se eu não quisesse calcular a média. Percebe-se que o while já inicia verificando se o n é diferente de zero. Então há a necessidade de atribuir um valor a esse variável, desde que não seja zero. No exemplo acima foram digitados os números 10, 15, 7 e 0.

ExemploWhile2C

Figura 7. Exemplo de while 2 em C/C++

Do … While

A estrutura do…while também tem a finalidade de repetir os comandos dentro de sua estrutura. A diferença entre esta e as outras estruturas vistas é que o teste da condição é feito ao final dos comandos. Segue abaixo o mesmo exemplo com a estrutura do…while.

ExemploDoWhile

Figura 8. Exemplo de do…while

Neste caso não há a necessidade de inicializar a variável n. A diferença básica entre o do…while e os dois anteriores é que, pelo menos uma vez o bloco de comandos é executado, pois a condição é testada após a execução dos comandos. Veja abaixo o exemplo em C/C++.

ExemploDoWhileCFigura 9. Exemplo de do..while em C/C++

  1. Controle dos laços

 Apesar dos laços terem a sua condição de parada, que é quando a condição testada for falsa, podemos utilizar alguns comandos para interromper essa iteração. Segue abaixo:

  • break

O break quebra o laço antes que a condição seja satisfeita. Por exemplo, no exemplo acima eu poderia verificar se o n é igual a 0. Se acaso positivo, dou um comando break. Este comando simplesmente interrompe o laço naquele momento.

  • continue

O comando continue interrompe a iteração em que está e continua o laço. Por exemplo, no programa anterior, vamos supor que eu quero somar todos os números digitados menos o número 10. Eu posso verificar se n é igual a 10. Se for, dou o comando continue antes de somar.

 

Conclusão

 

Nesse artigo mostramos as estruturas de repetição e suas particularidades nas linguagens de programação Java e C/C++. O mais importante no aprendizado de qualquer linguagem de programação é exercitar bastante o que aprendemos. Programação se aprende com bastante exercício e bastante prática. Bons estudos!

Convenções de Código Java

Convenções de Código para Programação Java

Disciplinas: Algoritmos, Programação Orientada a Objetos e Estruturas de Dados Aplicadas

Muitos alunos, quando começam a aprender Java dizem que a linguagem é muito difícil, por ser case-sensitive, isto é, diferencia maiúsculas de minúsculas. Eu digo que, se a gente aprender e se acostumar com as convenções de código, isto é, as regras para desenvolver os programas, não terá mais esse problema, saberá o que deve ser maiúscula e o que deve ser minúscula. Segue abaixo essas regras.

Classes e interfaces: A primeira letra deve ser maiúscula e, se várias palavras forem escritas juntas para formar o nome, a primeira letra de cada palavra interna deve ser maiúscula (um formato chamado em inglês de “camelCase”). Para classes, os nomes devem normalmente ser substantivos. Exemplos: Cliente,  ContaCorrente Para interfaces, os nomes devem normalmente ser adjetivos. Exemplo: Runnable – Executável

Métodos: A primeira letra deve ser minúscula, e depois as primeiras letras das outras palavras devem ser maiúsculas.

Por exemplo: getNome, setNumero, calculoMedia 

Variáveis: Como nos métodos, começando com a letra minúscula. A Sun recomenda usar nomes curtos e significativos. Exemplos: mediaBim, nota, nome 

Constantes: As constantes Java são criadas marcando-se variáveis como static e final. Elas devem ser nomeadas usando-se letras maiúsculas com caracteres underscore como separadores. Exemplos: ALTURA_MINIMA, ALIQUOTA  O restante da codificação Java (palavras reservadas, declaração de tipos primitivos) deve ser tudo minúsculo. 

 

Fonte: SCJP Certificação Sun para Programador Java 6 – Kathy Sierra, Bert Bates – Alta Books

Prof. Perini – Programação Java

Curso Java

Prof. Perini – Programação Java

Email: jcperini@uol.com.br

 

 

JavaServer Faces – Configuração e introdução

XHTML Template
Veja neste artigo o que é o framework JSF, como configurar e iniciar um projeto

Objetivo do artigo

O objetivo desse artigo é apresentar o framework JavaServer Faces como uma ferramenta poderosa de desenvolvimento Java para a plataforma JEE (Java Enterprise Edition). Serão realizadas a sua instalação e configuração para iniciar o desenvolvimento e os passos necessários para a criação de um projeto dinâmico baseado em JSF utilizando uma página simples.

Framework

Entre as linguagens de programação utilizadas atualmente, principalmente as linguagens com o paradigma de orientação a objetos, são muito utilizados os frameworks. A palavra framework tem várias definições, embora nenhuma definição entre em contradição com as demais. A minha definição é a seguinte: é um conjunto de classes que atendem a diversas funcionalidades para um tipo de aplicação específica. O framework atende ao conceito de orientação a objetos, que é a reutilização de código. Portanto cada framework tem uma série de códigos já prontos que vão nos ajudar em nossos projetos.

Os frameworks trazem alguns benefícios importantes para o desenvolvimento de uma aplicação ou projeto: são modulares, reusáveis e extensíveis, assumindo o controle da execução invocando métodos da aplicação quando necessitados.

JavaServer Faces

O JavaServer Faces (JSF) é a especificação de um framework de componentes para desenvolvimento web em Java. Pelo fato do JSF ser uma especificação do JCP (Java Community Process), onde grandes empresas participaram de sua definição e desenvolvimento, tornou-se um padrão de mercado, e as melhores ferramentas de desenvolvimento comportam perfeitamente suas especificações.

Algumas características importantes do JSF:

– Modelo de programação orientado a eventos.

– É um framework de componentes, portanto visa abstrair o desenvolvimento de interfaces

– Implementa o padrão MVC (Model-View-Controller) de desenvolvimento.

– É apenas uma especificação, não possui um produto concreto. Para utilizá-lo, precisamos recorrer a uma implementação do JavaServer Faces.

Algumas novidades importantes do JavaServer Faces 2.0:

– Utilização de Ajax para integração.

– Facelets – utilização do xhtml no lugar do JSP (30% mais rápido).

– Suporte a anotações para configurações (não precisa escrever no documento XML algumas configurações do projeto).

– Novos escopos dos beans (a parte C do MVC).

– Navegação implícita e condicional.

– Criação de componentes customizados.

Baixando e instalando os arquivos

Vamos deixar de lado as definições e teorias e vamos partir para a prática. Para o nosso exemplo de aplicação com JSF vamos baixar alguns arquivos que utilizaremos no projeto. Muitas literaturas e cursos referentes a esse assunto ensinam a utilização do framework sem a utilização de ferramentas de desenvolvimento (as chamadas IDE’s, como Eclipse ou NetBeans). Esse estudo é importante para aprendermos como as coisas funcionam a um nível mais baixo, utilizando comandos no prompt. Mas como eu sou da opinião que as ferramentas estão aí para nos ajudar (como o próprio JSF), vamos utilizar uma ferramenta. Mesmo porque, é o que se está utiliza no mercado.

Para o nosso exemplo vamos fazer o download dos arquivos que serão utilizados. Sugiro que criemos uma pasta chamada softwares e coloquemos os arquivos ali.

JDK

O JDK (Java Development Kit) é o pacote de programas utilizado para desenvolver programas Java. Ele instala o JVM (Máquina Virtual Java), que é utilizado para desenvolver os programas. No Kit está incluso o JRE (Java Runtime Environment), que é utilizado para executar os programas Java.

Para fazer o download do JDK, vamos ao site da Oracle: http://www.oracle.com.

Clicamos em Downloads e escolhemos Java for Developers.

oracle1

Figura 1: Tela de download do JDK

 

A seguir clicamos no botão Java Download. No momento deste artigo estamos na versão Java 7 Atualização 45.

Oracle2

Figura 2: 2ª tela para o download do JDK

 

Em seguida devemos aceitar as condições da licença de uso e escolher o sistema operacional que vamos trabalhar. Como o sistema operacional do meu computador é o Windows 32 bits, vou escolher o JDK referente a esse sistema operacional (Windows x86).

Oracle3

Figura 3: 3ª tela de download do JDK

 

Eclipse

O Eclipse é uma IDE de desenvolvimento com as seguintes características: é leve, gratuito, largamente utilizado, expansível com o uso de plugins e com suporte à tecnologia Java.

Vamos entrar no site do Eclipse para fazer o download do programa mais recente. O endereço é www.eclipse.org/downloads. Escolhemos a opção Eclipse IDE for Java EE Developers, para Windows 32 bits como é mostrado na figura a seguir. Essa opção é escolhida por estar preparada para desenvolvimento de aplicações para web.

Eclipse Tela1

Figura 4: Tela de download do Eclipse

 

Em seguida, clicar no botão de download da aplicação.

Eclipse Tela2

 

Figura 5: 2ª tela de download do Eclipse

 

A versão mais recente no momento desse artigo é o Eclipse Kepler. Mais adiante será feita a instalação do Jboss Tools que será utilizado no projeto exemplo.

JavaServer Faces 2

O framework JavaServer Faces que será utilizado é o 2.2.4 do Projeto Mojarra. Para o seu download vamos ao site HTTP://javaserverfaces.java.net. É só clicar em Download 2.2.4 Now!

JSF2

Figura 6: Página de download do JavaServer Faces

 

Apache Tomcat 7.0

É um servidor web Java, que funciona como container de servlets. Tem suporte a JSF 2.2 e servlets 3.0.

A versão a ser utilizada é a 7.0. Vamos entrar no site HTTP://tomcat.apache.org e vamos efetuar o download do arquivo compactado. (zip). Vamos escolher a versão 7.0, conforme figura a seguir.

Tela Apache

Figura 7: Primeira tela do download do Tomcat

 

Apache Tela 2

Figura 8: Escolhendo o arquivo zip

 

Os downloads acima mostram os caminhos e sites disponíveis no momento em que este artigo está sendo escrito. Esses caminhos podem ser alterados com o decorrer do tempo, mas, basicamente, a ordem de busca desses arquivos não se alteram, o que pode alterar é o layout dos sites e o local onde encontraremos o link correspondente ao arquivo procurado.

Instalação dos arquivos

Feitos os downloads, vamos para as instalações dos programas.

JDK – dar um duplo-clique no arquivo de instalação. É claro que essa instalação é só para quem ainda não tem a JDK instalado. Se tiver, mas for uma versão anterior que a versão 7 aconselho a substituir por essa versão. A instalação é simples, do tipo next-next.

Eclipse – O Eclipse não é instalável. É um arquivo “zipado”. É só descompactar, que estará pronto para ser utilizado, com seus arquivos distribuídos em pastas, como mostra a imagem seguinte. É só clicar no ícone do eclipse, que abrirá o programa.

Eclipse instalado

Figura 9: Pastas do Eclipse

 

Tomcat Apache – O arquivo que temos também não é instalável, basta descompactar e estará pronto. Após descompactar o arquivo, podemos testar o servidor, dando duplo-clique no programa startup que se encontra na pasta bin.

pasta bin do apache

Figura 10: arquivo que inicializa o tomcat (startup)

 

apache startado

Figura 11: tomcat inicializado

 

JSF – O JSF é um arquivo jar que será incluído dentro do projeto, portanto não é instalável. Apenas devemos deixá-lo em um local fácil de ser encontrado. Eu sugiro que seja copiado em uma pasta chamada Bibliotecas.

Entrando no Eclipse e instalando o plug-in do Jboss Tools

Vamos entrar no Eclipse e instalar o Jboss Tools que utilizaremos para criar as páginas xhtml e utilizar paletes de componentes do JSF. Não é obrigatória a utilização do Jboss Tools, mas vamos fazer essa instalação para mostrar como buscar e instalar um plug-in através da opção Marketplace do Eclipse.

Com o Eclipse aberto e a Internet conectada, vamos escolher no menu a opção Help e em seguida Eclipse Marketplace. Em find, escrever: Jboss Tools e dar ‘enter’. Procurar entre os programas que encontrar o Jboss Tools para sua versão do Eclipse (no nosso caso, o Kepler) e clicar em Install. Ele encontrará o plug-in procurado e pedirá confirmação. Ao confirmar, pedirá para aceitar os termos de uso. É só aceitar, que será instalado. A instalação demora um pouco, mas enquanto instala pode-se fazer outras coisas. Após a instalação, será pedido para reiniciar o Eclipse.

Jboss

Figura 12: Instalação do Jboss Tools

 

Exemplo de aplicação

Criando um projeto dinâmico

Vamos criar um projeto dinâmico e configurá-lo para utilizar JavaServer Faces. Em File escolher New / Dynamic Web Project. Se não tiver na lista apresentada, ir a Other / Web que encontrará lá. Na próxima tela, configurar conforme a figura abaixo e clicar em Next / Next.

Projeto Dinâmico tela 1

Figura 13: Tela de criação de Projeto Dinâmico

 

Na tela Web Module marcar a opção Generate web.xml deployment descriptor e clicar em Next.

Na tela JSF Capabilities será configurada a biblioteca do JSF e será incluído o arquivo jar que obtivemos do JSF 2. Em Type selecionar User Library. Clicar no ícone Manage librarys…, na tela User Libraries clicar em New e criar a biblioteca JSF2. Em seguida clicar em Add External Jars e buscar o arquivo jar do JSF. Clicar em OK, que voltará para a tela anterior. Em seguida, marcar a biblioteca que foi criada. Em URL Mapping Patterns, remover o que está e adicionar *.xhtml, como mostra a figura abaixo. Em seguida clicar em Finish. O projeto está criado.

Projeto Dinâmico Tela 2

Figura 14: Tela JSF Capabilities

 

Na pasta Webcontent/WEB-INF do projeto encontra-se o arquivo web.xml, que contém as configurações do projeto. Artigos posteriores entrarão em maiores detalhes. Para esse exemplo, vamos abrir esse arquivo e na tag <welcome-file-list> deixaremos apenas a welcom-file índex.xhtml, como mostra a seguir.

webxml

Figura 15: Arquivo web.xml do projeto dinâmico

 

Criando um Managed-bean

Um managed-bean é uma classe em Java que contém propriedades (atributos) que trabalhará na camada C do padrão MVC. Vamos criar uma classe que contém um atributo mensagem para podermos chamá-la numa página xhtml.

ControlePrincipal

Figura 16: Managed-bean do projeto

 

Na figura acima temos um bean (com um atributo, o construtor e o o getter e setter).

As anotações das linhas 6 e 7 servem para evitar sejam feitas no arquivo de configurações faces-config.xml.

@ManagedBean(name=”controlePrincipal”) tem como função declarar que a classe é um ManagedBean. O atributo name não é obrigatório, ele indica o nome com que esse bean será chamado nas páginas do projeto. Se não tiver esse atributo, será chamado pelo nome da classe.

@RequestScoped tem como função indicar que o tempo de vida desse bean é apenas durante a requisição que a chama.

Criando a página index.xhtml

Para criar a página índex.xhtml, clicar com o botão direito em cima de WebContent do projeto, como mostra a figura abaixo.

criandoXhtml

Figura 17: Tela New XHTML Page

 

Se não tiver o Jboss Tools instalado, não terá essa opção. Deverá então escolher HTML File e alterar sua extensão para XHTML. Em seguida, colocar o nome índex.xhtml e clicar em Next. Na próxima tela, devemos escolher o XHTML template (Blank JSF Page).

XHTML Template

Figura 18: Escolha do template

indexxhtml

 

Figura 19: índex.xhtml

Nas linhas 3 a 5 estão as taglibs que serão utilizadas no código. O template JSF já traz essas indicações. Portanto em todas as páginas JSF estarão essas linhas. O atributo xmlns indica a biblioteca que estará disponível no arquivo (namespace).

Na linha 9 estamos utilizando uma tag de HTML (h:outputText) que está na biblioteca indicada na linha 3.

O atributo value está buscando a mensagem que está no managed-bean ControlePrincipal. É importante dizer que a propriedade mensagem está encapsulada, portanto está sendo chamado aí o seu getter (getMensagem).

Executando o projeto

Para executar essa página, podemos clicar com o botão direito do mouse em cima do nome do projeto, e escolher a opção Run As / Run on Server.

Execução 1

Figura 20: Executando o projeto

 

Na próxima tela será pedido para configurar o servidor que será utilizado. Na pasta Apache, vamos escolher a versão 7.0.

Execução 2

Figura 21: Configurando o servidor Tomcat v7.0

 

A seguir podemos clicar em Finish. Será executada a página índex.xhtml, que foi configurada para ser a primeira página do projeto. Se copiarmos o endereço http://localhost:8080/PrimeiroProjetoJSF/ e colarmos no browser, ele deverá executar também.

Execução 3

Figura 22: Tela de execução

 

Conclusão

Vimos nesse artigo, passo a passo, como instalar os programas, configurar e iniciar a execução de um projeto simples utilizando o JavaServer Faces 2 e o Jboss Tools através do Eclipse, com o Apache Tomcat 7.0. Artigos posteriores mostrarão com detalhes os componentes das taglibs html e core que constam no framework JSF.

 

Referências Bibliográficas

Décio Heinzelmann Luckow e Alexandre Altair de Melo. Programação Java para a Web, Novatec Editora, 2010.

Jorge Luis Boeira Bavaresco. Curso Online de JSF (JavaServer Faces)  Devmedia Cursos, 2013/2014. http://www.devmedia.com.br/curso/curso-online-de-jsf-java-server-faces/393

 

Comandos de entrada em Java – parte 1

Veja neste artigo uma das formas mais comuns de entrada de dados na linguagem Java – a entrada por argumentos

Outro dia eu escrevi um artigo mostrando algumas formas de apresentar resultados na linguagem Java. O objetivo deste artigo seria mostrar algumas formas de entrada de dados. Mas como eu vi que o artigo ficaria muito extenso, vou dividir e criar um artigo para cada tipo de entrada de dados. Neste artigo mostrarei como utilizar a entrada por argumento.

Entrada de dados por argumentos

A entrada de dados por argumento é bem básica. Os dados são inseridos no programa na hora em que damos o comando para executá-lo. Esses dados são recebidos através de um vetor de strings que é criado na lista de argumentos do método main.

Segue o exemplo abaixo:

public class EntradaDeDados1 {

public static void main (String[] args) {

// Exemplo de entrada de dados por argumento

String nome = args[0];

int idade = Integer.parseInt(args[1]);

float altura = Float.parseFloat(args[2]);

System.out.println(“Seu nome: “+ nome);

System.out.println(“Sua idade: ” + idade);

System.out.println(“Sua altura: ” + altura);

}

}

Segue abaixo, a compilação e execução do programa via prompt de comandos:

entrada1

 

 

 

 

 

 

Figura 1: Entrada de dados por argumento

Vemos no exemplo que os dados são inseridos em forma de argumentos, no momento da chamada do programa. Nesse momento é criado na memória, um vetor de strings chamado args com 3 elementos, onde o nome é guardado no índice 0 do vetor, a idade no índice 1 e a altura no índice 2.

Ao recuperarmos os valores do vetor para guardar nas variáveis correspondentes, no caso de idade e altura, é preciso fazer a conversão para os seus tipos de dados. Por isso usamos Integer.parseInt (método parseInt da classe Integer) que converte de String para int, e Float.parseFloat (método parseFlot da classe Float) que converte de String para float.

Caso estejamos utilizando uma IDE como o Eclipse, os argumentos serão inseridos conforme figura abaixo.

entrada1Eclipse

 

Figura 2: Entrando com argumentos pelo Eclipse

 

Para chegar a essa tela, é só escolher: Run / Run configurations…

Conclusão

Nesse artigo mostramos como entrar com dados por argumento. É importante ressaltar que nós só usamos essa forma de entrada em ambiente de desenvolvimento, para testar as funcionalidades do programa.

 

Entendendo uma função recursiva

O video abaixo mostra o comportamento de um método recursivo.

Um método recursivo é aquele que chama a si próprio. Veja o vídeo mostrando o comportamento de um método recursivo.

 

Como utilizar o componente JTextField para aceitar apenas números ou apenas letras

Veja neste artigo como restringir a digitação de caracteres indesejáveis num componente JTextField, melhorando a segurança de entrada de informações numa aplicação Java

 

Muitas vezes num formulário de entrada de dados construída através dos elementos do swing, precisamos restringir a digitação de determinados caracteres. Existe o elemento JFormattedTextField, que nos permite utilizar máscaras no campo, mas com um simples JTextField podemos colocar algumas restrições. Por exemplo, num campo de entrada do nome de uma pessoa, com o evento KeyTyped podemos evitar a digitação de números. Ou num campo idade, podemos evitar a digitação de qualquer outro caractere que não seja número. Dessa forma, já estamos fazendo uma validação na hora da digitação.

Vamos ver esse exemplo de uma forma prática. Segue abaixo um frame construído no Eclpise com o WindowBuilder, que é um plugin utilizado para desenvolver classe de interface gráfica.

Exemplo de tela de entrada

 TextFieldFigura1

 

 

 

 

 

 

 

 

 

Figura 1: Tela de entrada de dados

 

Na tela acima, utilizando o Eclipse, podemos incluir um evento KeyTyped no TextField para o nome. Fazemos isso clicando com o botão direito Add Event Handler / Key / KeyTyped, como mostra a Figura 2.

 

Passos para incluir o evento KeyTyped

TextFieldFigura2

Figura 2: Incluindo o evento no textfield para o campo nome.

 

O código para inibirmos a digitação de números fica assim:

String caracteres=”0987654321″;

if(caracteres.contains(ev.getKeyChar()+””)){

// se o caractere digitado for um contido na String caracteres

ev.consume(); // o caractere é removido através do método consume

}

 

Portanto, o código ficará como abaixo:

 

textField = new JTextField();

textField.addKeyListener(new KeyAdapter() {

@Override

public void keyTyped(KeyEvent ev) {

// código do evento:

String caracteres=“0987654321”;

       if(caracteres.contains(ev.getKeyChar()+“”)){

              ev.consume();

       }

}

});

textField.setBounds(139, 26, 233, 21);

contentPane.add(textField);

textField.setColumns(10);

 

Restringindo a entrada de letras

 

Para restringirmos a entrada de outro caractere que não seja número no campo idade, fazemos o mesmo processo, colocando o operador not (!) na estrutura condicional. Dessa maneira será removido qualquer caractere que não seja o que está na String caracteres.

 

public void keyTyped(KeyEvent ev) {

// código do evento:

String caracteres=“0987654321”;

       if(!caracteres.contains(ev.getKeyChar()+“”)){

              ev.consume();

       }

}

});

 

 

Conclusão

 

Vimos nesse artigo como podemos, utilizando o simples JTextField, restringir a entrada de caracteres indesejáveis para a nossa aplicação.

 

Configurando o autocompletar do Eclipse

O Eclipse é uma IDE  (Integrated Development Environment ou Ambiente Integrado de Desenvolvimento) muito utilizada para desenvolver programas em Java. E um dos recursos dessa ferramenta é o autocompletar, onde você digita o nome da classe e o ponto (“.”) e ele mostra os métodos que existem naquela classe. Outra maneira de utilizar o autocompletar do Eclipse é iniciar o nome da classe (por exemplo, JOp) e Ctrl Espaço, que o Eclipse traz a lista de programas que se iniciam com essas letras (no exemplo, o JOptionPane entre outros). Mas algumas vezes esse recurso fica desconfigurado e passa a não funcionar. Segue abaixo o passo-a-passo de como configurar esse recurso.

1 – Para configurar o autocompletar vá em:
Window – Preferences

2 – Nessa janela selecione a opção:
Java – Editor – Advanced

3 – Marque os quatro primeiros checkboxes das duas áreas que aparecerão
na tela (parte superior e inferior) e clique em OK.

AutoCompletar

 

 

A imagem ao lado mostra a área de configuração. Clique nela para ver com mais detalhes.

 

Livros relacionados:

Dominando Eclipse. Edson Gonçalves.

Eclipse IDE: Dicas e Truques. Edson Gonçalves.

Eclipse 3.1: Programando com Visual Editor. Ivan José de Mecenas Silva.

 

 

 

 

SQL Básico

Comandos básicos de SQL, a linguagem mais utilizada para manipular informações em bancos de dados.

 

O site da DevMedia traz um artigo muito interessante sobre a linguagem SQL, com os principais comandos e exemplos práticos de utilizaçâo. Eu recomendo!

 

Acesse: http://www.devmedia.com.br/sql-basico/28877