Introdução ao Java para Iniciantes
Introdução ao Java para Iniciantes
/DERUDWyULRGH
,QWURGXomRD/LQJXDJHP-DYD
Apresentação do Laboratório :
SEMINFO
/DERUDWyULRGH
,QWURGXomRD/LQJXDJHP-DYD
• Parte III: Tratamento de Exceções em Java
O que é uma exceção
Classes de Exceções
Exceções mais comuns em Java
• Parte IV: Componentes para Interfaces Gráficas (JFC)
Criação de interface de usuário com Swing
Gerenciadores de Layout
Tratamento de eventos de usuário com Swing
• Parte V: Applets
O que são applets
Principais atividades de uma applet
Incluindo um applet em uma página HTML
1
SEMINFO
Ítem I
O Ambiente de
Desenvolvimento Java
SEMINFO
O Ambiente de Desenvolvimento
Java
❂ Histórico
hEm 1991 um grupo da Sun Microsystems trabalhava para
desenvolver software a fim de controlar dispositivos
eletrônicos para o consumidor.
h O objetivo era construir uma linguagem que pudesse
fazer funcionar os utensílios domésticos inteligentes.
h Desenvolveram um protótipo de dispositivo chamado de
Star7 que se comunicava com outros iguais. O So do Star7
era em C++.
h No entanto, James Gosling aborreceu-se com a maneira
que o C++ estava desempenhando a tarefa e resolveu
escrever uma nova linguagem para manipular o Star7.
h Inicialmente foi denominada Oak.
2
SEMINFO
O Ambiente de Desenvolvimento
Java
❂ Características do Java
1) Simples
h Como foi projetada para utensílios domésticos a
linguagem Java tinha de ser pequena, eficiente e facilmente
portável para uma ampla gama de dispositivos. Para isso
ela deveria ser simples.
h Aproveita conceitos e sintaxe do C++ mas não trabalha
com os conceitos abaixo:
(ponteiros e aritimética de ponteiros, herança múltipla.
h Gerenciamento de memória é bem mais simples.
SEMINFO
O Ambiente de Desenvolvimento
Java
2) Orientada a Objetos
h Diferente do C++, uma combinação de objetos e funções,
cada elemento do Java é um objeto.
h Classes, objetos, mensagens, variáveis de instâncias
etc.
h Construção de novas classes a partir de outras classes
existentes - reutilizável.
h Extensibilidade
3
SEMINFO
O Ambiente de Desenvolvimento
Java
3) Interpretada
h O compilador Java gera bytecodes que são
interpretados durante a execução.
h Os bytecodes gerados se baseiam na especificação de
uma Máquina Virtual Java que não é uma plataforma
específica mas uma máquina implementada em software.
h A máquina virtual é semelhante a uma CPU mas por ser
escrita em software, ela é portável.
[Link] Compilador
[Link]
Interpretador
SEMINFO
O Ambiente de Desenvolvimento
Java
4
SEMINFO
O Ambiente de Desenvolvimento
Java
5) Segura
h O compilador Java impede a geração de bytecodes que
não seguem completamente as regras de segurança
extensivas.
h Existe um verificador de bytecodes que inspeciona os
bytecodes à medida que eles são carregados no sistema.
h Depois de verificado, o código precisa ser carregado em
um namespace runtime. Isso é feito por um módulo
chamado Class Loader. Diferença de classes da rede para
classes locais.
h A camada final realiza testes no código a medida que ele
está sendo executado. Assegura que o código não irá
violar nenhuma das restrições de segurança. Este módulo
é denominado Security Manager.
SEMINFO
O Ambiente de Desenvolvimento
Java
Carregador
Código Compilador Interpretador
de classes
fonte
Código
de Bytes Classes
Runtime
Verificador
de
Código de Security
Bytes Manager
5
SEMINFO
O Ambiente de Desenvolvimento
Java
6) Permite multithread
h Fluxos de processamento independentes
h Light Weight Processes
7) Gerenciamento de Memória
h Garbage Collection
8) Distribuição e Interatividade
h Objetos e aplicações espalhados na rede
h Java RMI
SEMINFO
O Ambiente de Desenvolvimento
Java
6
SEMINFO
O Ambiente de Desenvolvimento
Java
❂ Ambiente JDK1.2
hPara se compilar um programa fonte em java deve-se
utilizar a seguinte linha de comando:
javac [opções] nome_do_programa.java
O javac é o compilador do JDK. O nome do programa fonte
deve ter a extensão .java e o resultado da compilação será
um ou mais arquivos com extensão .class.
h Um Java Bytecode não pode ser executado diretamente.
Para executa-lo deve-se digitar:
java [opções] nome_do_programa [argumentos]
O java é o interpretador do JDK e cabe a ele transformar o
bytecode em código executável pelo hardware
SEMINFO
O Ambiente de Desenvolvimento
Java
7
SEMINFO
O Ambiente de Desenvolvimento
Java
2) Variáveis / Comentários
h Declaração : <tipo> <nome_variavel>
Ex: int var1;
int var1=10; declaração e atribuição
SEMINFO
O Ambiente de Desenvolvimento
Java
8
SEMINFO
O Ambiente de Desenvolvimento
Java
3) Operadores
3.1) Operadores Aritméticos
+, -, /, %, *
Ex: int a=10, b=20, div;
div = b%a; // div terá valor igual a 0
SEMINFO
O Ambiente de Desenvolvimento
Java
9
SEMINFO
O Ambiente de Desenvolvimento
Java
4) Condicionais (switch)
Ex:
int escolha;
// lê um valor para escolha do teclado
switch(escolha){
case 1:
//comandos
break;
case 2:
//comandos
break;
default:
// entrada inválida
break;
}
Obs: Pode selecionar apenas valores inteiros ou char.
SEMINFO
O Ambiente de Desenvolvimento
Java
10
SEMINFO
O Ambiente de Desenvolvimento
Java
k=0;
while (k < 10){
// faz algo
k++;
}
SEMINFO
O Ambiente de Desenvolvimento
Java
k=0;
do {
// faz algo
k++;
} while (k < 10);
11
SEMINFO
O Ambiente de Desenvolvimento
Java
6) Vetores
h Vetores podem ser usados tanto para tipos de dados
primitivos quanto para classes.
h Arrays são criados utilizando-se a palavra reservada
new. É possível criar arrays de arrays.
Exemplos:
// declarando
int [ ] Vet;
Vet = new int[12]; ou int [ ] Vet = new int[12]
// declarando e inicializando
int [ ] Vet2 = { 0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 66};
SEMINFO
O Ambiente de Desenvolvimento
Java
7) Matrizes
O Java não admite arrays multidimensionais. Entretanto,
eles podem ser simulados de forma eficaz pelo uso de
arrays de arrays.
Exemplos:
// declarando
int[ ][ ] Mat;
Mat = new int [5] [2]; ou int Mat[ ][ ] = new int [5] [2];
12
SEMINFO
O Ambiente de Desenvolvimento
Java
SEMINFO
O Ambiente de Desenvolvimento
Java
13
SEMINFO
O Ambiente de Desenvolvimento
Java
SEMINFO
O Ambiente de Desenvolvimento
Java
14
SEMINFO
O Ambiente de Desenvolvimento
Java
SEMINFO
O Ambiente de Desenvolvimento
Java
h Entrada de um caracter :
[Link]("Entre com uma letra qualquer");
char letra = (char)[Link]( ); // pega o valor decimal do
// caracter
[Link]("A letra digitada é a letra " + letra);
h package de Entrada e Saída de Dados:
15
SEMINFO
O Ambiente de Desenvolvimento
Java
Exemplo de uma Classe que requer entrada de dados
import [Link].* ;
class NomeDaClasse{
public static void main (String args[ ] ) throws [Link]
{
BufferedReader bf = new BufferedReader(new
inputStreamReader([Link]));
String line;
[Link]("Digite um numero inteiro ");
line = [Link]();
int i = [Link](line).intValue();
[Link]("O numero digitado é = " + i);
}
}
SEMINFO
O Ambiente de Desenvolvimento
Java
8) Palavras Chaves
16
SEMINFO
O Ambiente de Desenvolvimento
Java
1) Aplicações Independentes
h São aplicativos do Java de uso geral que não
necessitam de um navegador para serem executados.
h São inicializados por uma chamada ao método main(),
da mesma maneira que os programas C.
SEMINFO
O Ambiente de Desenvolvimento
Java
Exemplo
class PrimeiroProgramaJava{
public static void main (String args[ ] ) {
[Link](”Meu 1º programa em Java”);
}
}
2) Applets
h São programas executados como parte de uma página
da Web e exibidos por um navegador capaz de executar
código em Java.
h Para executar um applet é necessário criar um arquivo
HTML.
17
SEMINFO
O Ambiente de Desenvolvimento
Java
Exemplo
import [Link];
class PrimeiraApplet extends Applet{ [Link]
// código
}
appletviewer [Link]
SEMINFO
Ítem II
Programação
Orientada Objetos em
Java
18
SEMINFO
Airport
SEMINFO
19
SEMINFO
SEMINFO
Comportamento Comportamento
Pensar Andar
Falar Parar
Dormir Abastecer
Airport
Estrutura Estrutura
Olho Acentos
Ouvido Volante
Braço
Pessoa Meios_De_Transportes
20
SEMINFO
Meios_De_Transportes Pessoa
SEMINFO
1) Classe
h É uma entidade abstrata que serve para modelar objetos
e seus comportamentos. Especificação genérica para um
número arbitrário de objetos.
h Pode ser definida ainda com “Abstrações sobre objetos
de estrutura e comportamento comum”.
h Fornecem modelos para a especificação do estado e
comportamento de um objeto durante a execução.
h Uma classe é composta por nome, atributos (variáveis)
e métodos.
21
SEMINFO
SEMINFO
2) Objeto
Objetos são entidades modeladas por uma classe.
Podemos dizer que um objeto é uma ocorrência, uma
instância, de uma classe. Um objeto pode ser representado
por um par Estrutura/Comportamento. Cada objeto é
diferenciado de outros pela sua identidade e não pelos
valores de seus atributos (estado interno).
Como instanciar um objeto da Classe Pessoa :
Pessoa objetoPessoa = new Pessoa();
22
SEMINFO
3) Métodos
Métodos são as operações, simples ou complexas,
oferecidas pela classe, que podem ser utilizadas sobre
qualquer objeto que está sendo modelado. De forma bem
simples, podemos dizer que são as ações que podem ser
feitas sobre os objetos de uma classe. Tais ações são na
verdade os procedimentos escritos dentro de cada classe.
Também são chamados de serviços.
SEMINFO
3) Métodos
Controle de acesso a Métodos (serviços) e Atributos :
• public : Acesso amplo, geral e irrestrito.
• protected : Acesso permitido para a classe, subclasses e
classes do mesmo package.
• private : Acesso permitido somente a métodos da classe.
23
SEMINFO
3) Métodos
Exemplo:
....
String nome;
int idadeAtual, anoNascimento;
Pessoa P = new Pessoa();
[Link](18, “Maria Eduarda”);
nome = [Link]( );
idadeAtual = [Link]( );
anoNascimento = [Link]( );
[Link](nome + “ tem “ + idadeAtual + “anos e
nasceu em ” + anoNascimento);
....
Quem chama é um outro programa ou seja uma outra classe
SEMINFO
3) Métodos - Sobrecarga
Sobrecarga é a capacidade de um objeto responder à
mesma mensagem, com métodos distintos, a depender dos
tipos dos parâmetros recebidos.
Exemplo :
24
SEMINFO
3) Métodos - Construtores
Os construtores constituem um tipo especial de método,
chamado quando um objeto é inicializado.
O construtor têm o mesmo nome da Classe em questão.
O construtor é sempre invocado pela palavra new.
Pode ocorrer sobrecarga de construtor
public Pessoa( ) { ou public Pessoa (String profissao){
} profissaoPessoa = profissao;
}
Se não houver um construtor na classe o construtor da
superclasse da classe em questão é chamado. Isso
acontece desta forma por causa do conceito de Herança.
SEMINFO
4) Herança
Herança é a capacidade de uma classe definir o seu
comportamento e sua estrutura aproveitando definições de
outra classe, normalmente conhecida como classe base ou
classe pai.
25
SEMINFO
Pessoa superclasse
Professor Aluno
subclasse
SEMINFO
4) Herança
Classe Professor herda as
Exemplo: características de Pessoa, com
class Professor extends Pessoa { seus atributos e métodos.
int numeroalunos;
public Professor ( int numAlunos ){
numeroAluno = numAlunos;
}
}
26
SEMINFO
SEMINFO
Exemplo
27
SEMINFO
....
quadrado q = new quadrado(20,30,10);
[Link]();
[Link](50,40);
[Link]();
...
SEMINFO
6) Polimorfismo
É a possibilidade de se solicitar um serviço a um objeto, cujo
execução vai depender do tipo de objeto instanciado.
Suponha que existam três classes disponíveis numa
biblioteca: Triângulo, Retângulo e Quadrado. Todas elas
possuem um serviço ou método chamado Desenhar() com os
mesmo parâmetros de entrada e saída.
Classe
Triângulo
Desenhar()
Classe
Retângulo
Classe
Retângulo
28
SEMINFO
7) Interfaces
Se uma classe é definida por apenas métodos abstratos
então é melhor não usar a palavra-chave abstract. Para
estes caso o Java fornece uma técnica chamada de
interfaces que pode ser usada para definir um modelo de
comportamento.
As interfaces diferem dos métodos abstratos no fato de
que nenhum método de interface pode ter um corpo.
As interfaces são estritamente modelos.
Forma do Java lidar com as limitações de herança simples
As interfaces não podem ser instanciadas.
SEMINFO
Exemplo
interface figura {
public void desenha();
public void apaga();
public void move (int x1, int y1);
}
29
SEMINFO
Exemplo
class quadrado implements figura {
int l; // lado do quadrado
int x ; // centro da fig. x
int y ; // centro da fig. y
public quadrado(int x1, int y1, int l1) {
x = x1; y=y1; l = l1;
}
public void desenha( ) {
[Link]("Desenhando quadrado (" + x + "," + y + ") lado "+ l );
}
public void apaga( ) {
[Link]("Apagando quadrado (" + x + "," + y + ") lado " + l );
}
public void move (int x1, int y1){
[Link]();
x = x1;
y = y1;
[Link]();
}
}
SEMINFO
8) Pacotes
Os pacotes constituem um mecanismo para agrupamento
de classes e interfaces. Toda classe ou interface tem um
pacote. Pode-se nomear de forma explícita o pacote
utilizando a instrução package:
package [Link];
A declaração de package tem de ser a primeira linha sem
comentários ou espaço em brando no arquivo.
A instrução import permite utilizar uma classes definida em
outro pacote.
import [Link];
ou ainda import [Link].*;
30
SEMINFO
Classe Strings
Os literais strings são implementados como objetos da
classe String.
Métodos interessantes: length( ), equals( ) entre outros.
SEMINFO
Wrappers de Tipos
Cada um dos tipos primitivos de dados tem uma classe
wrapper de tipo associada.
São as classes Boolean, Character, Double, Float, Integer,
Long e Number.
Exemplo criação de um objeto da classe Integer
Integer I = new Integer(6) ou Integer I = new Integer(“6”)
Uma vez criada a instância, pode-se aplicar um conjunto de
métodos tais como equals( ), compareTo( ), toString( ), etc.
31
SEMINFO
Ítem III
Tratamento de
Exceções em Java
SEMINFO
32
SEMINFO
Exemplo:
int z = 0;
try{
z=x/y;
[Link]( “Z = “ + Z);
} catch ( Exception e) {
[Link]( “Erro”);
}
finally {
[Link]( “Fará sempre”);
}
SEMINFO
33
SEMINFO
Exemplo:
String s=“100”, s2=“Não e numero”;
try {
[Link](“O primeiro numero e : “ +
[Link](s);
[Link](“O segundo numero e : “ +
[Link](s2);
}
catch ( NumberFormatException e ) {
[Link](“ Não e possivel converter String em
numero!!”);
SEMINFO
Exemplo:
String s=“100”, s2=“40”;
try {
[Link](“O primeiro numero e : “ +
[Link](s);
[Link](“O segundo numero e : “ +
[Link](s2);
throw new NumberFormatException( );
}
catch ( NumberFormatException e ) {
[Link](“ Não e possivel converter String em
numero!!”);
34
SEMINFO
Exemplo :
class Vetor {
int s[ ]; Em outra classe
int elementos, indice=0; ...
public Vetor(int tamanho) { Vetor obj = new Vetor(5);
elementos = tamanho;
try{
s = new int [tamanho];
[Link](10);
}
public void insereElemento(int num)
}
throws ArrayIndexOutOfBoundsException { catch {
if (indice > elementos -1) { (ArrayIndexOutOfBoundsExc
throw new eption e){
ArrayIndexOutOfBoundsException();} [Link](“Erro”);
else{ }
s[indice] = num; ...
indice++;
}
}
}
SEMINFO
❂ Classes de Exceções
Throwable
Error Exception
...
RuntimeException IOException
...
ArrayIndexOutofBounds
... NullPointerException
35
SEMINFO
SEMINFO
Ítem IV
Componentes para
Interfaces Gráficas
(JFC)
36
SEMINFO
SEMINFO
Estrutura de aplicativo
h O primeiro passo de um aplicativo Swing é gerar uma
classe que seja uma subclasse de JFrame.
import [Link].*;
import [Link].*;
public class Framework extends JFrame{
public Framework( ){
} Inclui os componentes aqui
public static void main (String args[]){
JFrame frame = new Framework();
WindowListener l = new WindowAdapter(){
public void windowClosing(WindowEvent e){
[Link](0);
} Tratamento de eventos
};
[Link](l);
[Link](); Redimensionar para conter
[Link](true); todos componentes e tornar
}
} visível o quadro
37
SEMINFO
SEMINFO
38
SEMINFO
SEMINFO
39
SEMINFO
SEMINFO
...
public Framework( ){
JCheckBox opcao1 = new JCheckBox("Negrito");
JCheckBox opcao2 = new JCheckBox("Itálico", true);
JPanel painel = new JPanel();
[Link](opcao1); Criação de dois
[Link](opcao2); objetos JCheckBox
sendo que o objeto
setContentPane(painel); opcao2 será por
} default selecionado.
...
40
SEMINFO
public Framework5( ){
ButtonGroup opcao = new ButtonGroup();
JCheckBox homem = new JCheckBox("Masculino", true);
JCheckBox mulher = new JCheckBox("Feminino", false);
[Link](homem);
[Link](mulher); Cria um objeto
JLabel sexo = new JLabel("Sexo :"); ButtonGroup para que
JPanel painel = new JPanel(); este controle que
[Link](sexo); apenas um dos itens
[Link](homem); seja selecionado. Em
[Link](mulher); seguida adiciona os
setContentPane(painel); objetos JCheckBox ao
} objeto ButtonGroup.
SEMINFO
41
SEMINFO
SEMINFO
42
SEMINFO
❂ Gerenciadores de Layout
Um gerenciador de layout determina como os componentes
serão organizados. O gerenciador de layout padrão é o
FlowLayout.
h A classe FlowLayout
Esta classe permite que os componentes fluam da
esquerda para a direita, na ordem em que eles forem
inseridos. Quando não há mais espaço então uma nova
linha de componentes começará imediatamente abaixo da
primeira e na ordem da esquerda para a direita, exceto se
for especificado diferente.
FlowLayout objetoexemplo = new FlowLayout (FlowLayout .RIGHT);
setLayout(objetoExemplo);
SEMINFO
Aparência do FlowLayout
h A classe GridLayout
Este gerenciador organiza os componentes em uma grade de
linhas e colunas. Os componente são incluídos primeiramente na
linha superior da grade, começando da esquerda para a direita.
Quando todas as células estão preenchidas, o próximo
componente será inserido na célula mais a esquerda na segunda
linha, se houver uma segunda linha.
Linhas e
GridLayout objetoexemplo = new GridLayout (10, 3); colunas
setLayout(objetoExemplo);
43
SEMINFO
Aparência do GridLayout
h A classe BorderLayout
Esta classe divide o contêiner em cinco seções: North, South,
East, West, Center.
SEMINFO
Aparência do BorderLayout
h Classe CardLayout
Este gerenciador difere dos anteriores porque ele pode ocultar
alguns componentes, mostrando apenas um por vez.
h Classe GridBagLayout
É o mais flexível e complexo dos gerenciadores de Layout. Um
componente pode ocupar mais de uma célula na grade e as
proporções entre as linhas e colunas não precisam ser iguais.
44
SEMINFO
45
SEMINFO
SEMINFO
46
SEMINFO
h Receptores de eventos:
SEMINFO
Exemplo
public class Exemplo extends Jframe implements WindowListener,
ItemListener, ActionListener {
// código da classe
// tem de implementar os métodos destas três interfaces
}
47
SEMINFO
SEMINFO
48
SEMINFO
SEMINFO
Compara com o
public void itemStateChanged (ItemEvent evt ){ nome do JComboBox
Objeto src = [Link]( );
if (src == nomeJComboBox){
Pega o item do
Objetct novoNome = [Link]( ); JComboBox
String itemSelecionado = [Link]( );
}
Sobre: (Jbutton,
}
JCheckBox, JComboBox, ou
JRadioButton)
49
SEMINFO
SEMINFO
50
SEMINFO
Ítem V
Applets com
(JFC)
SEMINFO
Applets Java
51
SEMINFO
Applets Java
import [Link];
public class minhaApplet extends JApplet{
// código aqui
}
SEMINFO
Applets Java
52
SEMINFO
Applets Java
3) Interrupção:
A interrupção ocorre quando o usuário sai da página
que contém um applet que esteja em execução. Por
definição todas as threads que o applet inicializou
continuam a menos que seja redefinido o método stop( )
indicando que elas devem parar.
4) Destruição:
O método destroy( ) permite que o applet faça uma
limpeza antes de ser liberado da memória. Este método
pode ser usado para acabar com todos os threads que
estiverem sendo executados ou para liberar todos os
outros objetos.
SEMINFO
Applets Java
5) Pintura:
Atráves da pintura é que o applet apresenta algo na
tela, seja um texto, uma linha, uma imagem, etc. Para
apresentar algo redefina o método paint ( ) colocando o
código desejado.
Este método recebe como argumento um objeto da classe
Graphics, que deve ser também importada
([Link] ).
import [Link];
public void paint ( Graphics g ) {
//código da pintura
}
53
SEMINFO
Applets Java
Na página [Link]
CODE : Especifica o nome
<HTML> do arquivo de classe da applet
<BODY>
<APPLET CODE="[Link]", WIDTH=300 HEIGHT=300>
</APPLET>
</BODY> WIDTH : Especifica a largura da
</HTML> janela do applet na página WEB
SEMINFO
Applets Java
54
SEMINFO
Bibliografia
Bibliografia utilizada:
55