Escolar Documentos
Profissional Documentos
Cultura Documentos
Apostila de Introdução à
Programação Orientada a Objetos
Uma Abordagem Prática
Sumário
Capítulo 1
Conteúdo ............................................................................................................... 4
O que é o Netbeans?............................................................................................. 4
Capítulo 2
Apresentando a Java Foundation Classes (JFC) .................................................... 10
Conteúdo ............................................................................................................. 10
Componentes ...................................................................................................... 11
JFrame ............................................................................................................. 11
JPanel .............................................................................................................. 12
JTextArea ......................................................................................................... 13
JPasswordField ................................................................................................ 14
JButton ............................................................................................................. 15
JCheckBox ....................................................................................................... 16
JComboBox...................................................................................................... 17
Capítulo 3
Layout Manager ...................................................................................................... 20
Capítulo 4
Conteúdo ............................................................................................................. 27
Capítulo 5
Ponto de Entrada, Variáveis, Estruturas de Decisão e Repetição .......................... 34
Conteúdo ............................................................................................................. 34
Capítulo 6
Variáveis, Estruturas de Decisão e Repetição ........................................................ 42
Conteúdo ............................................................................................................. 42
Capítulo 7
Unindo as partes do projeto Sorteio ........................................................................ 47
Conteúdo ............................................................................................................. 47
Referências.................................................................................................53
Capítulo 1
Apresentando o Ambiente de Desenvolvimento Integrado
Netbeans
Observação: Capítulo baseado no Tutorial para Início Rápido do Java do NetBeans IDE disponível em:
http://netbeans.org/kb/docs/java/quickstart_pt_BR.html
Conteúdo
O que é o Netbeans?
Configurando o Projeto
Adicionando Código ao Arquivo de Origem Gerado
Compilando e Executando a Aplicação
Construindo e Implantando a Aplicação
O que é o Netbeans?
O NetBeans é um projeto open source de sucesso, com uma grande base de
utilizadores, uma crescente comunidade e perto de 100 (e a aumentar!) parceiros
mundiais. A Sun Microsystems fundou o projeto NetBeans em junho de 2000 e continua a
ser o seu principal patrocinador.
Actualmente existem dois produtos: o IDE NetBeans (NetBeans IDE) e a
Plataforma NetBeans (NetBeans Platform).
O NetBeans IDE é um ambiente de desenvolvimento - uma ferramenta para
programadores, que permite escrever, compilar, depurar e instalar programas. O IDE é
completamente escrito em Java, mas pode suportar qualquer linguagem de programação.
Existe também um grande número de módulos para extender as funcionalidades do IDE
NetBeans. O NetBeans IDE é um produto livre, sem restrições à sua forma de utilização.
Também está disponível a Plataforma NetBeans; uma base modular e extensível
que pode ser usada como infra-estrutura para a criação de grandes aplicações de
desktop. Os Parceiros fornecem plugins que podem ser facilmente integrados na
Plataforma, e que podem ser utilizados para desenvolver ferramentas e soluções próprias.
Ambos os produtos são open source e livres para uso comercial e não comercial. O
código fonte está disponível para ser usado através da licença Common Development and
Distribution License (CDDL).
Configurando o Projeto
Para criar um projeto do IDE:
1. Inicie o NetBeans IDE.
2. No IDE, escolha Arquivo > Novo Projeto (Ctrl-Shift-N), como mostrado na figura
abaixo.
Clique em Finalizar.
O projeto é criado e aberto no IDE. Agora você deve ver os seguintes componentes:
A janela Projetos, que contém uma view em árvore dos componentes do projeto,
incluindo arquivos de código-fonte, bibliotecas de que seu código depende, e assim
por diante.
A janela Editor de Código-fonte com um arquivo chamado HelloWorldApp é aberta.
A janela Navegador, que você pode utilizar para navegar rapidamente entre elementos
dentro da classe selecionada.
Como a caixa de seleção Criar Classe Principal foi marcada no assistente de Novo
Projeto, o IDE criou uma classe principal de esqueleto. Você pode adicionar a mensagem
"Hello World!" ao código de esqueleto substituindo a linha:
// TODO code application logic here
pela linha:
System.out.println("Hello World!");
Salve a alteração escolhendo Arquivo > Salvar.
O arquivo deve ter uma aparência semelhante à seguinte amostra de código.
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package helloworldapp;
/**
*
* @author <your name>
*/
public class HelloWorldApp {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
System.out.println("Hello World!");
}
Exercícios Teóricos
Anotações de Aula
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
Capítulo 2
Apresentando a Java Foundation Classes (JFC)
Observação: Capítulo baseado na apostila da k19 disponível em: http://www.k19.com.br/downloads/apostilas/java/k19-k11-
orientacao-a-objetos-em-java.
Conteúdo
Visão Geral do JFC
Componentes
o JFrame
o JPanel
o JTextField
o JLabel
o JTextArea
o JPasswordField
o JButton
o JCheckBox
o JComboBox
Componentes
Os itens que aparecem em uma interface gráfica de usuário (janelas, caixas de
texto, botões, listas, caixas de seleção, entre outros) são chamados de componentes.
Alguns componentes podem ser colocados dentro de outros componentes, por exemplo,
uma caixa de texto dentro de uma janela.
O primeiro passo para construir uma interface gráfica de usuário é conhecer os
principais componentes do Java Swing API.
JFrame
A classe JFrame define janelas com título, borda e alguns itens definidos pelo
sistema operacional como botão para minimizar ou maximizar.
Por padrão, o visual das janelas utiliza o estilo definido pelo sistema operacional.
Mas, podemos alterar esse comportamento padrão.
JPanel
A classe JPanel define um componente que basicamente é utilizado para agrupar
nas janelas outros componentes como caixas de texto, botões, listas, entre outros.
Normalmente, criamos um objeto da classe JPanel e associamos a um objeto da
classe JFrame para agrupar todo o conteúdo da janela.
JTextField e JLabel
A classe JTextField define os campos de texto que podem ser preenchidos pelo
usuário. A classe JLabel define rótulos que podem ser utilizados por exemplo em caixas
de texto.
Resultado:
JTextArea
Para textos maiores podemos aplicar o componente definido pela classe
JTextArea, que resulta na tela abaixo.
JPasswordField
Em formulários que necessitam de caixa de texto para digitar senhas, podemos
aplicar o componente definido pela classe JPasswordField. O conteúdo digitado na caixa
de texto gerado pelo componente da classe JPasswordField não é apresentado ao
usuário. A seguir é apresentado o código que resulta na seguinte tela:
JButton
Os botões que permitem que os usuários indiquem quais ações ele deseja que a
aplicação execute podem ser criados através do componente definido pela classe
JButton. O código apresentado a seguir resulta na seguinte tela:
JCheckBox
Podemos criar formulários com checkbox’s utilizando o componente da classe
JCheckBox. O código a seguir resulta na seguinte tela:
JComboBox
Podemos criar formulários com combo box’s utilizando o componente da classe
JComboBox. A figura a baixo mostra a tela gerada pelo código a seguir.
Exercícios Teóricos
1.Qual ação devo associar ao método setDefaultCloseOperation, para apenas fechar
uma janela interna?
________________________________________________________________________
________________________________________________________________________
Anotações de Aula
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
_______________________________________________________
Capítulo 3
Layout Manager
Observação: Capítulo baseado na apostila da k19 disponível em: http://www.k19.com.br/downloads/apostilas/java/k19-k11-
orientacao-a-objetos-em-java.
Layout Manager
o BorderLayout
o FlowLayout
o BoxLayout
o GridLayout
Layout Manager
Muitas pessoas consideram que uma das tarefas mais complicadas quando se
utiliza a Java Swing API é o posicionamento e o tamanho dos componentes.
O posicionamento e tamanho dos componentes Java Swing são controlados por
Layout Manager’s.
Um Layout Manager é um objeto Java associado a um componente Java Swing
que na maioria dos casos é um componente de background como uma janela ou um
painel. Um Layout Manager controla os componentes que estão dentro do componente ao
qual ele está associado.
Os quatro principais Layout Manager’s do Java Swing são:
BorderLayout: Esse Layout Manager divide a área de um componente de
background em cinco regiões (norte, sul, leste, oeste e centro). Somente um componente
pode ser adicionado em cada região. Eventualmente, o BorderLayout altera o tamanho
preferencial dos componentes para torná-los compatíveis com o tamanho das regiões. O
BorderLayout é o Layout Manager padrão de um JFrame.
FlowLayout é o gerenciador padrão de todo JPanel, caso não seja especificado outro. FlowLayout posiciona os componentes
lado-a-lado.
Exercícios Teóricos
1. Para que o LayoutManager é utilizado?
________________________________________________________________________
________________________________________________________________________
Anotações de Aula
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
Capítulo 4
Events, Listeners e Sources
Observação: Capítulo baseado na apostila da k19 disponível em: http://www.k19.com.br/downloads/apostilas/java/k19-k11-
orientacao-a-objetos-em-java.
Conteúdo
Events, Listeners e Sources
o ActionListener
o MouseListener
o KeyListener
Exercício Prático I
Criar um listener para executar quando o usuário clicar em um botão. O primeiro
passo é definir uma classe que implemente ActionListener.
O método ActionPerformed() deverá ser executado quando algum botão for clicado
pelo usuário. Perceba que este método recebe um referência de um objeto da classe
ActionEvent que representa o evento que ocorreu. Através do objeto que representa o
evento do clique do usuário em algum botão podemos recuperar a fonte do evento que no
caso é o próprio botão com o método getSource() e alterar alguma característica da fonte.
O segundo passo é associar esse listener aos botões desejados.
Exercício Prático 2
1. Crie um projeto no Netbeans chamado login.
2. Crie uma tela de login com caixas de texto e rótulos para o nome de usuário e
senha e um botão para logar.
Redimensione a janela e observe o que ocorre com os elementos e pense o que
determina o comportamento observado.
4. Altere o Layout Manager do painel utilizado na tela de login para GridLayout
adicionando a linha a seguir logo após a criação do JPanel.
Execute novamente o teste e observe o resultado. Depois tente redimensionar a
tela para observar o comportamento.
Exercícios Teóricos
1. O que são Listeners?
________________________________________________________________________
________________________________________________________________________
Anotações de Aula
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
Capítulo 5
Ponto de Entrada, Variáveis, Estruturas de Decisão e Repetição
Conteúdo
Ponto de Entrada
Modificador static
Organização do projeto em pacotes
Criação de Formulários
Exercício Prático 1
1. Crie um novo projeto no Netbeans com o nome de sorteio.
2. Clique com o botão auxiliar do mouse (geralmente botão direito do mouse) sobre a
pasta pacotes de código fonte, vá em novo e em seguida clique em outros.
3. Na tela que aparece clique sobre a categoria Java e em seguida clique sobre o tipo
de arquivo pacote Java.
O que você acabou de fazer foi a criação de um projeto e após isto você criou um
pacote para organizar os arquivos de seu projeto. É muito importante que você mantenha
seu projeto organizado para facilitar as alterações de código e a manutenção do software
que você está desenvolvendo.
Exercício de Fixação
Crie um pacote em Pacotes de Código Fonte com o nome de logica.
Exercício Prático 2
Agora vamos criar um formulário utilizando a ferramenta disponibilizada pelo
Netbeans para a criação de formulários de forma rápida e simples.
1. Clique com o botão auxiliar do mouse sobre o pacote view que acabamos de criar,
vá em novo e depois em outros.
2. Na tela que aparece clique sobre a categoria Forms GUI Swing e em tipo de
arquivo clique em Form JFrame.
Após clicar sobre o botão Finalizar, aparecerá uma tela JFrame sem nenhum
componente.
No canto direito de sua tela você deverá ter uma paleta de componentes do
Framework Swing.
5. Arraste para a tela os componentes Botão (JButton), Label (JLabel) e Listar
(JList) e os posicione e os redimensione conforme a imagem a seguir.
Exercícios Teóricos
1. Quando é interessante definir um método ou um atributo como static?
________________________________________________________________________
________________________________________________________________________
Anotações de Aula
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
Capítulo 6
Variáveis, Estruturas de Decisão e Repetição
Conteúdo
Variáveis
Operadores Lógicos
Operadores Relacionais
Math.round()
Math.random()
Exercício Prático 1
No projeto sorteio que criamos no capítulo 5 você deverá criar uma nova classe no
pacote logica com o nome de CSorteio da seguinte forma:
1. Clique com o botão auxiliar do mouse sobre o pacote logica, em seguida vá em
novo e depois clique em Outro.
2. Na tela que aparece clique sobre a categoria Java e em Tipos de arquivo clique
sobre a opção Classe Java. Em seguida clique em Próximo.
Para começar a codificar a parte lógica de nosso projeto, vamos ter de criar
algumas variáveis que, por estarem fora dos métodos, porém, dentro da classe, serão
chamados de atributos.
O primeiro atributo que foi criado foi o atributo numeros que é um array (vetor) de
inteiros de 100 posições para simular um tabuleiro de 100 posições.
O segundo atributo criado é o atributo numero que irá armazenar um número
sorteado.
O terceiro atributo criado é o atributo contador que representa a quantidade de
números sorteados. Neste exemplo ele está sendo inicializado com o valor 0 (zero).
Para que o nosso software realize o sorteio de números de 0 (zero) a 99 (noventa e
nove) e não retorne números repetidos à classe requisitante, deveremos criar um método
que retorne números inteiros e retorne aleatoriamente um valor sorteado sempre após a
verificação, se o número a ser retornado já foi ou não foi retornado anteriormente.
Para que isto ocorra você deverá criar o método sortear com o seguinte código:
Na linha 18 deste código você pode verificar o início do método sortear() que
retorna um valor de tipo inteiro. Este método é público para que ele possa ser acessado
por uma outra classe em qualquer pacote do projeto. Se o método fosse private (privado)
ele poderia ser acessado e seu valor recebido por apenas métodos da mesma classe.
Na linha 19 é feita uma verificação lógica. Neste caso verificamos se já foram
sorteados os 100 números de nosso tabuleiro virtual. Se o valor contido no contador for
menor que 100 então a operação lógica da estrutura de decisão retorna true (verdadeiro)
e o conteúdo do if é executado.
Na linha 20 nós fazemos uso do método random() da classe Math multiplicado
pelo valor 99 para que seja retornado de forma aleatória números de 0 à 99. Este
comando está dentro de um outro método, o método round() da classe Math, que tem a
função de realizar o arredondamento do valor retornado. Para assegurar que o valor
retornado seja um valor inteiro é realizada uma conversão explicita por meio da palavra
int entre parênteses. O valor obtido por este processo é armazenado no atributo
numero, porém este processo está dentro dos colchetes que determinam a posição
de leitura do array numeros. Se o número sorteado for uma posição assinalada com o
número 1 (um) significa que este número já foi sorteado anteriormente e o processo de
sorteio, arredondamento, conversão e atribuição deverá ser realizado até que não seja
sorteado um número que represente uma posição no array numeros marcado com o
número 1. Quando for sorteado um número que corresponda a uma posição no array que
não contenha o número 1 então o fluxo da estrutura de repetição é cessado e é
executado o código seguinte.
A linha 22 incrementa 1 ao valor contido no atributo contador.
A linha 23 atribui o número 1 à posição correspondente ao número sorteado no
array numeros.
A linha 27 retorna o valor contido no atributo numero.
Exercício Prático 2
Para Testar a classe criada, crie um ponto de entrada na própria classe CSorteio
com o seguinte código:
A linha 31 contém o método main que é o que torna esta classe executável.
Na linha 32 é criado uma variável de referência a um objeto baseado na classe
CSorteio, do tipo CSorteio.
Na linha 35 a variável cs é utilizada tanto para obter o valor do atributo contador
quanto para obter o valor retornado pelo método sortear(). O método println() imprime na
tela de saída do sistema a mensagem e os valores obtidos. O operador + é utilizado para
concatenar (juntar) valores. Sempre que utilizamos o operador + junto com uma String
(texto) todos os valores mesmo os numéricos são convertidos em String.
Capítulo 7
Unindo as partes do projeto Sorteio
Conteúdo
Variáveis
Modificador final
Operadores Lógicos
Operadores Relacionais
Referências
DefaultListModel
Para que nosso projeto realize a função de sortear números e mostrar aos
participantes de algum jogo de forma agradável devemos realizar a união entre as partes
do nosso projeto.
Exercício Prático 1
No projeto sorteio, abra a classe FSorteio.java e clique sobre o botão código-fonte.
Na linha 21 temos o comando para a criação de uma classe public e que estende a
classe JFrame, ou seja, ela é uma classe que realiza a função de formulário em nosso
projeto.
Na linha 23 é criado um atributo privado e final do tipo CSorteio que é a classe que
criamos na parte 6 deste material. A private (privado) é um modificador de visibilidade que
indica que o método ou um atributo é visível (pode ser acessado e utilizado) apenas
dentro da própria classe. O modificador final tem as seguintes especificações:
Quando usada na definição de uma variável, significa que a variável não pode
assumir outro valor, tornando-se uma constante;
quando usada na definição de um método, significa que o método não poderá ser
sobrescrito;
quando usada na definição de uma classe, significa que a classe não vai admitir
herança.
Na linha 24 é criado um atributo de referência para o objeto baseado na classe
DefaultListModel com o nome de lista. Esta classe abstrai o conceito de Lista e será ela a
responsável por mostrar os últimos números sorteados no componente JList que
inserimos no formulário. Este atributo também é privado e constante.
Faça o mesmo
com o componente
JLabel mas de o nome
de lblNumero. Faça
novamente com o
componente Lista e de o nome de lstSorteados.
Agora vamos alterar o texto do botão para Sortear. Para
isto você deve clicar com o botão auxiliar do mouse sobre o botão e escolhe a opção
Editar Texto. Na tela que aparece escreva a palavra Sortear.
Pronto. Podemos agora partir para a codificação de nosso projeto.
Vamos fazer que quando o usuário clicar sobre o botão Sortear um número seja
sorteado pelo objeto sorteio. Este número deverá aparecer no Label e ser inserido no
topo da Lista. Para que isto aconteça, clique com o botão auxiliar do mouse sobre o botão
Sortear, vá até eventos em seguida vá até Action e em seguida clique sobre o item
actionPerformed.
Após clicar sobre o item actionPerformed você será redirecionado para dentro do
método responsável por executar as ações quando o botão btnSortear for pressionado.
Neste médodo você deverá inserir o seguinte código.
Na linha 95 é criada uma variável local (local porque está dentro do método)
chamada numero e do tipo inteiro. Esta variável recebe um valor retornado pelo método
sortear() do objeto referenciado pelo atributo sorteio.
Referências
COSTA, Luís C. M. Java Avançado. Rio de Janeiro: Ciência Moderna. 2006.
DEITEL, Harvey; DEITEL, Paul. Java Como Programar. 6 ed. São Paulo: Prentice-Hall,
2010.
GONÇALVES, Edson. Dominando Eclipse - Tudo que o Desenvolvedor Java Precisa
para Criar Aplicativos para Desktop. Rio de Janeiro: Ciência Moderna. 2006.
HORSTMANN, Cay S.; CORNELL, Gary. Core Java 2: Fundamentos. vol 1. 7 ed. Rio de
Janeiro: Alta Books, 2005.
K19. Programação Orientada a Objetos. Disponível em:
<http://www.k19.com.br/downloads/apostilas/java/k19-k11-orientacao-a-objetos-em-java>.
Acessado em 15/01/2015.
KOLLING, Michael; Barnes, David J. Programação Orientada à Objetos com Java.
Prentice Hall. 2009.
NetBeans. Tutorial para Início Rápido do Java do NetBeans IDE disponível em:
http://netbeans.org/kb/docs/java/quickstart_pt_BR.html. Acessado em 10/01/2015.