Você está na página 1de 53

Instituto Federal de Educação, Ciência e Tecnologia de São Paulo

Apostila de Introdução à
Programação Orientada a Objetos
Uma Abordagem Prática

Professor José Ricardo Ferreira Cardoso


Introdução à Programação Orientada a Objetos

Sumário

Capítulo 1

Apresentando o Ambiente de Desenvolvimento Integrado Netbeans ....................... 4

Conteúdo ............................................................................................................... 4

O que é o Netbeans?............................................................................................. 4

Configurando o Projeto .......................................................................................... 5

Adicionando Código ao Arquivo de Origem Gerado .............................................. 6

Compilando e Executando o Programa ................................................................. 7

Construindo e Implantando a Aplicação ................................................................ 8

Capítulo 2
Apresentando a Java Foundation Classes (JFC) .................................................... 10

Conteúdo ............................................................................................................. 10

Visão Gerado do JFC .......................................................................................... 10

Componentes ...................................................................................................... 11

JFrame ............................................................................................................. 11

JPanel .............................................................................................................. 12

JTextField e JLabel .......................................................................................... 12

JTextArea ......................................................................................................... 13

JPasswordField ................................................................................................ 14

JButton ............................................................................................................. 15

JCheckBox ....................................................................................................... 16

JComboBox...................................................................................................... 17

Capítulo 3
Layout Manager ...................................................................................................... 20

Layout Manager ................................................................................................... 20

Capítulo 4

Professor José Ricardo Ferreira Cardoso 2


Introdução à Programação Orientada a Objetos

Events, Listeners e Sources .................................................................................... 27

Conteúdo ............................................................................................................. 27

Events, Listeners e Sources ................................................................................ 27

Capítulo 5
Ponto de Entrada, Variáveis, Estruturas de Decisão e Repetição .......................... 34

Conteúdo ............................................................................................................. 34

Ponto de Entrada – Método Main ........................................................................ 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

Professor José Ricardo Ferreira Cardoso 3


Introdução à Programação Orientada a Objetos

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).

Professor José Ricardo Ferreira Cardoso 4


Introdução à Programação Orientada a Objetos

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.

3. No assistente Novo Projeto, expanda a categoria Java e selecione Aplicação Java,


como mostrado na figura abaixo. Em seguida, clique em Próximo.

4. Na página Nome e Localização do assistente, adote o procedimento a seguir


(como mostrado na figura abaixo):
 no campo Nome do Projeto, digite HelloWorldApp.

Professor José Ricardo Ferreira Cardoso 5


Introdução à Programação Orientada a Objetos

 Deixe desmarcada a caixa de seleção Utilizar Pasta Dedicada para Armazenar


Bibliotecas.
 No campo Criar Classe Principal, digite helloworldapp.HelloWorldApp.

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.

Adicionando Código ao Arquivo de Origem Gerado

Professor José Ricardo Ferreira Cardoso 6


Introdução à Programação Orientada a Objetos

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!");
}

Compilando e Executando o Programa


Devido à funcionalidade Compilar ao Salvar do IDE, não é necessário compilar
manualmente o projeto para que seja executado no IDE. Quando um arquivo de código-
fonte Java é salvo, ele é compilado automaticamente pelo IDE.
A funcionalidade Compilar ao Salvar pode ser desativado na janela Propriedades
do Projeto. Clique com o botão direito do mouse no projeto e selecione Propriedades. Na
janela Propriedades, escolha a guia Compilação. A caixa de seleção Compilar ao Salvar
está na parte superior. Observe que, na janela Propriedades do Projeto, é possível
configurar várias definições para o projeto: bibliotecas do projeto, encapsulamento,
construção, execução, etc.
Para executar o programa:
1. Escolha Executar > Executar Projeto (F6).
A figura abaixo mostra o que você deve ver agora.

Professor José Ricardo Ferreira Cardoso 7


Introdução à Programação Orientada a Objetos

Parabéns! Seu programa funciona!


Se houver erros de compilação, eles são marcados com glifos vermelhos nas
margens esquerda e direita do Editor de Código-fonte. Os glifos da margem esquerda
indicam os erros das linhas correspondentes. Os glifos da margem direita mostram todas
as áreas do arquivo que apresentam erros, incluindo os erros das linhas que não estão
visíveis. É possível passar o mouse sobre a marca do erro para ver a descrição deste
erro. É possível clicar em um glifo da margem direita para ir para a linha que apresenta o
erro.

Construindo e Implantando a Aplicação


Depois de escrever e executar o teste da aplicação, você pode utilizar o comando
Limpar e Construir para construir a aplicação para implantação. Quando o comando
Limpar e Construir é utilizado, o IDE executa um script de construção que realiza as
seguintes tarefas:
 Deleta os arquivos compilados anteriormente e outras saídas de construção.
 Recompila a aplicação e constrói um arquivo JAR que contém arquivos
compilados.
 Para construir sua aplicação:
 Escolha Executar > Limpar e Construir Projeto Principal (Shift-F11)
É possível exibir as saídas de construção abrindo a janela Arquivos e expandindo o
nó HelloWorldApp. O arquivo bytecode compilado HelloWorldApp.class está no
subnóbuild/classes/helloworldapp. O arquivo JAR implantável que contém
o HelloWorldApp.class está no nó dist.

Professor José Ricardo Ferreira Cardoso 8


Introdução à Programação Orientada a Objetos

Exercícios Teóricos

1. Qual empresa e em que ano foi fundado o projeto Netbeans?


________________________________________________________________________
________________________________________________________________________

2. Como faço para criar um novo projeto no Netbeans?


________________________________________________________________________
________________________________________________________________________

3. Qual é a localização do novo projeto apresentado como exemplo nesta aula?


________________________________________________________________________
________________________________________________________________________

4. O que acontece com os arquivos .java quando salvo o meu projeto?


________________________________________________________________________
________________________________________________________________________

5. Em que nó são armazenados os arquivos .jar.


________________________________________________________________________
________________________________________________________________________

Anotações de Aula
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________

Professor José Ricardo Ferreira Cardoso 9


Introdução à Programação Orientada a Objetos

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

Visão Gerado do JFC


A plataforma Java oferece recursos sofisticados para construção de interfaces
gráficas de usuário GUI. Esses recursos fazem parte do framework Java Foundation
Classes (JFC). Eis uma visão geral do JFC:
Java Web Start: Permite que aplicações Java sejam facilmente implantadas nas
máquinas dos usuários.
Java Plug-In: Permite que applets executem dentro dos principais navegadores.
Java 2D: Possibilita a criação de imagens e gráficos 2D.
Java 3D: Possibilita a manipulação de objetos 3D.
Java Sound: Disponibiliza a manipulação de sons para as aplicações Java.
AWT (Abstract Window Toolkit): Conjunto básico de classes e interfaces que
definem os componentes de uma janela desktop. AWT é a base para Java Swing API.
Swing: Conjunto sofisticado de classes e interfaces que definem os componentes
visuais e serviços necessários para construir uma interface gráfica de usuário.

Professor José Ricardo Ferreira Cardoso 10


Introdução à Programação Orientada a Objetos

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.

É possível associar uma das ações abaixo ao botão de fechar janela.


 DO_NOTHING_ON_CLOSE: Não faz nada.
 HIDE_ON_CLOSE: Esconde a janela (Padrão no JFRAME).
 DISPOSE_ON_CLOSE: Fecha a janela (Mais utilizado em janelas internas).
 EXIT_ON_CLOSE: Fecha a aplicação (System.exit(0)).

Professor José Ricardo Ferreira Cardoso 11


Introdução à Programação Orientada a Objetos

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.

Professor José Ricardo Ferreira Cardoso 12


Introdução à Programação Orientada a Objetos

Resultado:

JTextArea
Para textos maiores podemos aplicar o componente definido pela classe
JTextArea, que resulta na tela abaixo.

Professor José Ricardo Ferreira Cardoso 13


Introdução à Programação Orientada a Objetos

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:

Professor José Ricardo Ferreira Cardoso 14


Introdução à Programação Orientada a Objetos

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:

Professor José Ricardo Ferreira Cardoso 15


Introdução à Programação Orientada a Objetos

JCheckBox
Podemos criar formulários com checkbox’s utilizando o componente da classe
JCheckBox. O código a seguir resulta na seguinte tela:

Professor José Ricardo Ferreira Cardoso 16


Introdução à Programação Orientada a Objetos

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.

Professor José Ricardo Ferreira Cardoso 17


Introdução à Programação Orientada a Objetos

Professor José Ricardo Ferreira Cardoso 18


Introdução à Programação Orientada a Objetos

Exercícios Teóricos
1.Qual ação devo associar ao método setDefaultCloseOperation, para apenas fechar
uma janela interna?
________________________________________________________________________
________________________________________________________________________

2.Qual componente apresentado nesta aula que tem a finalidade de agrupar um


determinado conteúdo em uma janela?
________________________________________________________________________
________________________________________________________________________

3.Qual a finalidade da Classe JTextField?


________________________________________________________________________
________________________________________________________________________

4.Quando é interessante utilizar um objeto baseado na classe JPasswordField?


________________________________________________________________________
________________________________________________________________________

5. É possível passar um vetor de Strings no construtor da classe JComboBox?


________________________________________________________________________
________________________________________________________________________

Anotações de Aula
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
_______________________________________________________

Professor José Ricardo Ferreira Cardoso 19


Introdução à Programação Orientada a Objetos

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.

Professor José Ricardo Ferreira Cardoso 20


Introdução à Programação Orientada a Objetos

O código acima resulta na seguinte tela:

FlowLayout: Esse Layout Manager arranja os componentes da esquerda para


direita e quando o tamanho horizontal não é suficiente ele “pula” para a próxima “linha”. O
FlowLayout não altera o tamanho preferencial dos componentes. O FlowLayout é o
Layout Manager padrão de um JPanel.

Professor José Ricardo Ferreira Cardoso 21


Introdução à Programação Orientada a Objetos

O código acima resulta na seguinte tela:

FlowLayout é o gerenciador padrão de todo JPanel, caso não seja especificado outro. FlowLayout posiciona os componentes
lado-a-lado.

BoxLayout: Esse Layout Manager arranja os componentes de cima para baixo


“quebrando linha” a cada componente adicionado. O BoxLayout não altera o tamanho
preferencial dos componentes.

Professor José Ricardo Ferreira Cardoso 22


Introdução à Programação Orientada a Objetos

O código acima resulta na seguinte tela:

GridLayout: Esse Layout Manager divide a área de um componente de


background em células semelhantemente a uma tabela. As células possuem o mesmo
tamanho.

Professor José Ricardo Ferreira Cardoso 23


Introdução à Programação Orientada a Objetos

O código acima resulta na seguinte tela:

Professor José Ricardo Ferreira Cardoso 24


Introdução à Programação Orientada a Objetos

Professor José Ricardo Ferreira Cardoso 25


Introdução à Programação Orientada a Objetos

Exercícios Teóricos
1. Para que o LayoutManager é utilizado?
________________________________________________________________________
________________________________________________________________________

2. Quais são os quatro principais Layout Manager’s do Java Swing?


________________________________________________________________________
________________________________________________________________________

3. Qual é o Layout Manager padrão de um JPanel?


________________________________________________________________________
________________________________________________________________________

Anotações de Aula
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________

Professor José Ricardo Ferreira Cardoso 26


Introdução à Programação Orientada a Objetos

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

Events, Listeners e Sources


A principal função de uma interface gráfica de usuário é permitir interação entre
usuários e aplicação. Os usuários interagem com uma aplicação clicando em botões,
preenchendo caixas de texto, movimentando o mouse, entre outros. Essas ações dos
usuários disparam eventos que são processados pela aplicação através de listeners
(callbacks).
Para criar um listener, devemos implementar a interface correspondente ao tipo de
evento que queremos tratar. Eis algumas das interfaces que devemos implementar
quando queremos criar um listener.
ActionListener: Essa interface deve ser implementada quando desejamos tratar
eventos como por exemplo cliques em botões, seleção de items de um menu ou teclar
enter dentro de uma caixa de texto.

Professor José Ricardo Ferreira Cardoso 27


Introdução à Programação Orientada a Objetos

MouseListener: Essa interface deve ser implementada quando desejamos tratar


eventos como clique dos botões do mouse.

Professor José Ricardo Ferreira Cardoso 28


Introdução à Programação Orientada a Objetos

Continua na próxima página 

Professor José Ricardo Ferreira Cardoso 29


Introdução à Programação Orientada a Objetos

KeyListener: Essa interface deve ser implementada quando desejamos tratar


eventos de pres-sionar ou soltar teclas do teclado.

Professor José Ricardo Ferreira Cardoso 30


Introdução à Programação Orientada a Objetos

Professor José Ricardo Ferreira Cardoso 31


Introdução à Programação Orientada a Objetos

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.

Professor José Ricardo Ferreira Cardoso 32


Introdução à Programação Orientada a Objetos

Exercícios Teóricos
1. O que são Listeners?
________________________________________________________________________
________________________________________________________________________

2. Como criar um Listener?


________________________________________________________________________
________________________________________________________________________

3.Cite 3 interfaces que devemos implementar quando queremos criar um listener?


________________________________________________________________________
________________________________________________________________________

Anotações de Aula
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________

Professor José Ricardo Ferreira Cardoso 33


Introdução à Programação Orientada a Objetos

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

Ponto de Entrada – Método Main


Para um programa Java executar, é necessário definir um método especial para
ser o ponto de entrada do programa, ou seja, para ser o primeiro método a ser chamado
quando o programa for executado. O método main precisa ser public, static, void e
receber um array de Strings como argumento.

Sua assinatura pode variar da seguinte forma:

Um método ou atributo static (estatico) é um método/atributo de classe e para


acessá-lo não é necessário que seja por meio de um objeto criado.

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.

Professor José Ricardo Ferreira Cardoso 34


Introdução à Programação Orientada a Objetos

Clique sobre o botão Próximo.


Na Tela seguinte de o nome view e clique em Finalizar.

Professor José Ricardo Ferreira Cardoso 35


Introdução à Programação Orientada a Objetos

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.

Professor José Ricardo Ferreira Cardoso 36


Introdução à Programação Orientada a Objetos

3. Clique sobre o botão Próximo.


4. Na tela que aparece de o nome de FSorteio e clique sobre o botão Finalizar.

Professor José Ricardo Ferreira Cardoso 37


Introdução à Programação Orientada a Objetos

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.

Professor José Ricardo Ferreira Cardoso 38


Introdução à Programação Orientada a Objetos

Para posicionar os componentes você poderá arrasta-los na tela para o local


desejado e para redimensionar um componente você pode fazer uso das suas alças de
redimensionamento (os quadradinhos brancos que aparecem na borda do componente ao
selecioná-lo).
Até o momento nós criamos duas classes Java no projeto, uma classe java está
no pacote sorteio e foi criada automaticamente pelo Netbeans no momento da criação do
projeto, esta é a classe Sorteio.java e contém o ponto de entrada de nosso projeto. É por
meio desta classe que chamaremos a execução do objeto criado a partir da classe
FSorteio.java que está no pacote view.
6. Para finalizar a parte do projeto que está neste capítulo, digite dentro do método
main (ponto de entrada) da classe Sorteio.java os seguintes comandos:

Professor José Ricardo Ferreira Cardoso 39


Introdução à Programação Orientada a Objetos

Perceba que o Tipo identificador da variável de referência fs está sublinhado em


vermelho. Isto acontece porque a classe FSorteio.java está em um pacote diferente do
que a classe Sorteio.java se encontra. Para resolver este problema você deverá, dentro
do arquivo onde está a classe Sorteio, realizar a importação da classe FSorteio por meio
da palavra import.
import view.FSorteio;
7. Após realizar a importação, execute o projeto.

Professor José Ricardo Ferreira Cardoso 40


Introdução à Programação Orientada a Objetos

Exercícios Teóricos
1. Quando é interessante definir um método ou um atributo como static?
________________________________________________________________________
________________________________________________________________________

2. Qual a finalidade da criação de pacotes?


________________________________________________________________________
________________________________________________________________________

3. Quando devemos utilizar o comando import?


________________________________________________________________________
________________________________________________________________________

Anotações de Aula
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________

Professor José Ricardo Ferreira Cardoso 41


Introdução à Programação Orientada a Objetos

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()

Em um projeto em Java, orientado a objetos, continuamos a fazer uso de tudo o


que aprendemos em lógica de programação como: variáveis, operadores lógicos e
operadores relacionais. Porém, além da utilização destes mecanismos podemos ainda
fazer uso de outras classes uteis, como a classe Math que possui, dentre outros, dois
métodos estáticos muito importantes para o desenvolvedor; estes métodos são o método
round() e o método random(). O método round() com o próprio nome sugere, realiza o
arredondamento de um valor real e retorna um valor do tipo real e o método random()
retorna um número aleatório que vai de 0 (zero) até 1 (um).
Iremos fazer uso destes mecanismos em nosso projeto iniciado no capítulo 5.

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.

Professor José Ricardo Ferreira Cardoso 42


Introdução à Programação Orientada a Objetos

3. Na tela seguinte de o nome de CSorteio para a classe e clique em Finalizar.

Professor José Ricardo Ferreira Cardoso 43


Introdução à Programação Orientada a Objetos

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:

Professor José Ricardo Ferreira Cardoso 44


Introdução à Programação Orientada a Objetos

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.

Para Pensar e responder


Para que servem as linhas de 24 à 26?

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:

Professor José Ricardo Ferreira Cardoso 45


Introdução à Programação Orientada a Objetos

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.

Para Pensar e responder


Para que serve o comando for neste código?

Professor José Ricardo Ferreira Cardoso 46


Introdução à Programação Orientada a Objetos

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.

Professor José Ricardo Ferreira Cardoso 47


Introdução à Programação Orientada a Objetos

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.

Professor José Ricardo Ferreira Cardoso 48


Introdução à Programação Orientada a Objetos

Da linha 27 à 33 temos o método construtor da classe FSorteio.java. É o conteúdo


deste método que é executado quando construímos, por meio do operador new, um
objeto baseado na classe FSorteio, como ocorreu no capítulo 5 deste material.
Na linha 28 deste código é realizada a chamada ao método initComponents() da
classe FSorteio. Este método é responsável por criar os objetos de formulário em tempo
de execução. É neste método que, dentre outras coisas, são criados o rótulo, o botão e a
lista.
Na linha 29 é chamado o método setExtendedState() herdado da classe JFrame
e definido o valor JFrame.MAXIMIZED_BOTH que faz com que o formulário seja
maximizado.
Na linha 31 é criado um objeto baseado na classe CSorteio e a referência a este
objeto é atribuída ao atributo sorteio.
O mesmo acontece na linha 32 só é o objeto criado é baseado na classe
DefaultListModel e a sua referência é armazenada no atributo lista.
Antes de darmos sequência na codificação do projeto, clique sobre o botão projeto.

Professor José Ricardo Ferreira Cardoso 49


Introdução à Programação Orientada a Objetos

Na tela do formulário iremos alterar o nome das variáveis


que identificam os componentes.
Clique com o botão auxiliar do mouse sobre o botão Sorteio e
escolha a opção Alterar o Nome da Variável.
Na tela Renomear de o nome de btnSortear.

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.

Professor José Ricardo Ferreira Cardoso 50


Introdução à Programação Orientada a Objetos

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.

Professor José Ricardo Ferreira Cardoso 51


Introdução à Programação Orientada a Objetos

Na linha 98 o valor contido na variável numero é acrescido de + 1, porque nosso


tabuleiro real (que é utilizado e mostrado ao usuário/usuários) vai do número 1 ao 100 e
não do 0 ao 99. Neste momento estamos tratando os dados antes de enviarmos para a
visualização. Nesta mesma linha o método toString da classe Integer converte
explicitamente o valor inteiro contido dentro dos parênteses para um valor do tipo String
(texto). Após converter para um valor do tipo texto é feito uso do método setText do objeto
lblNumero. Neste momento o valor é mostrado no componete Label na tela do programa.
Na linha 100 o conteúdo do componente Label (lblNumero) é pego pelo método
getText e adicionado na posição 0 (topo da lista) ao objeto referenciado pelo atributo lista.
O método do “objeto” lista utilizado para adicionar o valor é o método add.
Na linha 102 o objeto lista é adicionado ao componente de tela lista pelo método
setModel da classe JList.
Na linha 104 o método herdado da classe JFrame é utilizado para apresentar a
quantidade de números sorteados na barra de título do formulário.

Para Pensar e Responder


O que acontece na linha 97?

Professor José Ricardo Ferreira Cardoso 52


Introdução à Programação Orientada a Objetos

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.

Professor José Ricardo Ferreira Cardoso 53

Você também pode gostar