Title: Java
1Java
2Índice
- Referências
- UA 1 - Introdução a Java
- UA 2 - Tipos de dados, operadores e comandos de
fluxo - UA 3 - Uso classes e objetos String, arrays,
Math, outras - UA 4 - Criação de métodos, classes e objetos
- UA 5 - Herança e polimorfismo
- UA 6 - Classes abstratas e interfaces
- UA 7 - Tratamento de exceções
- UA 8 - Componentes gráficos em Java (AWT e Swing)
- UA 9 - Multithreading
- UA 10 - Acesso a banco de dados via JDBC
3Objetivos
- Posicionar a linguagem Java no contexto do
desenvolvimento de sistemas - Conceituar os vários termos usados em Java como
Swing, Applets, Servlets, JSP, EJB, etc. - Desenvolvimento de sistemas cliente servidor com
acesso a banco de dados usando JDBC.
4Pré-requisitos
- Noções de Programação
- Noções de Orientação a Objetos
- Noções de SQL
5Livros
- Java Como Programar
- Beginning Java 1.3
- The Java 2 Complete Certification Study Guide
- Core Java 2 Guia Autorizado
- The Java Class Libraries, Second Edition, Volumes
I e II
6Internet
- http//java.sun.com/
- http//www.javaboutique.com/
- http//www.javaworld.com
- http//www.componentsource.com/java
- http//www.jguru.com/portal
- http//www.theserverside.com/
- http//www.javareport.com/
Referências
7Introdução a Java
8O que é a linguagem Java?
9O que é a linguagem Java?
- Você aprenderá
- Histórico da linguagem.
- Características mais importantes.
- Versões existentes.
- Uma aplicação inicial.
10Histórico da Linguagem
- Projeto Oak
- 1990
- Integração de aparelhos
- Advento da internet
- 1994 lançamento oficial
- animações, applets e conexão com servidores
- JVM embutida nos browsers
- Panorama Atual
- Grande utilização nos servidores web
- Suportada pela grande maioria dos servidores de
aplicação - SGBD com JVM
11Características importantes
- Orientada a objeto
- Modificar é a regra e não a exceção
- Interpretada e independente de plataforma
- JVM com JIT - Just in Time Compilers
- Multithreaded
- Executa, por natureza, vários trechos de código
ao mesmo tempo - Robusta e segura
- Fortemente tipada, sem acesso direto a endereços
de memória evitando erros de acesso e perda de
ponteiros, applets sem acesso a disco, etc.. - Dinâmica e distribuída
- Alterações feitas apenas nas classes pertinentes
sem a necessidade de recompilação de todo o
sistema. Possibilidade de entrega de
componentes pela rede de forma transparente para
o usuário
12Versões existentes
- Versão 1.0
- Versão 1.1 - Ainda muito usado
- Versão 1.2 (Java 2) - Grandes mudanças
- Versão 1.3
- Versão 1.4
- De uma versão para outra um método, atributos ou
mesmo uma classe inteira pode ficar deprecated
ou depreciada, obsoleta. Tenha sempre em mãos a
documentação apropriada.
13Especializações do JDK
- JRE - Java Runtime Edition
- É o próprio interpretador Java, o mínimo
necessário para executar programas em Java.
Browsers instalam apenas o JRE (5Mb aprox.). - J2SE - Java 2 Standard Edition
- Também conhecido como JDK - Java Development Kit.
É composto do JRE, ferramentas de desenvolvimento
e compilador (45Mb aprox). - J2EE - Java 2 Enterprise Edition
- Complemento ao JDK que instala um conjunto de
bibliotecas necessárias para suportar Servlets,
JSP, JDBC e outras (aprox. 17Mb). - J2ME - Java 2 Micro Edition
- Simplificação da linguagem usada para
desenvolvimento de aplicações para palmtops e
dispositivos hand-held - Documentação
- Fornecido separadamente. Existem versões próprias
para cada especialização do JDK (aprox. 20Mb).
14Alguns Ambientes de Desenvolvimento
- Ferramentas de linha de comando
- Notepad )
- TextPad
- UltraEdit
- Ferramentas visuais
- Borland JBuilder
- IBM Visual Age for Java
- Visual Café
- Oracle JDeveloper (facilidades para o DB)
- MS Visual J (Evitem problemas de
compatibilidade) - iPlanet Fortè
15Uma aplicação inicial
Comentários // - uma única linha./ .../ -
várias linhas/ .... / javadoc
Nome da classe, também define o nome do
arquivo.java
Método main( ). Ponto de entrada no sistema
- 1 // Isso é um programa exemplo
- 2 public class HelloWorld
- 3 public static void main (String args)
- 4 System.out.println(Oi mundo!)
- 5
- 6
Case sensitive, sensívelà maiúsculas e
minúsculas
- ponto-e-vírgulaé obrigatório ao finalde
cada instrução.
- chaves delimitam um bloco de comando.
Obs. Todo código Java tem que estar dentro de
uma classe (class). Classes serão
usadas para criação de objetos, mas aqui, foi
colocada apenas por compatibilidade.
16Lab 01-Bcaixa de mensagem
- Objetivo
- Aprofundar conceitos
- Tarefas
- Altere seu programa conforme o código abaixo
- Observe que as linhas 5 e 6 representam uma
mesma instrução.
1 // Programa exemplo 2 public class
HelloWorld2 3 public static void main
(String args) 4 System.out.println("Ant
es da mensagem") 5 javax.swing.JOptionPane
.showMessageDialog(null, 6 "Oi mundo!",
"exercício Java",1) 7 System.out.println("
Depois da mensagem") 8 9
17Máquina Virtual Java (JVM)
18Máquina Virtual Java (JVM)
- Você aprenderá
- O que é a máquina virtual Java.
- Por dentro da JVM
- Class Loader.
- Bytecode Verifier.
- Interpretador
- Garbage Collector.
19O que é a máquina virtual Java (JVM)
- É o ambiente onde os programas desenvolvidos na
linguagem Java são executados. - Responsável pela importante característica de
portabilidade de Java. - Vem junto com o JDK e em alguns browsers
(Microsoft Internet Explorer e Netscape
Navigator) para execução de applets.
20Por dentro da JVMClass Loader e Bytecode
Verifier
- Class Loader - Carregador de classe
- Faz a carga de todas as classes necessárias para
a execução do programa feito em Java. - Faz parte do esquema de segurança da linguagem.
- Bytecode Verifier - Verificador de Bytecode
- Testa o código contido no arquivo com extensão
class antes de executá-lo. - Verifica se há código ilegal.
- Também faz parte do esquema de segurança da
linguagem.
21Por dentro da JVM Interpretador
- Lê os bytecodes e os traduz para uma linguagem
que o computador pode entender. - Armazena valores dos dados enquanto executa o
programa.
22Por dentro da JVM Garbage Collector
- O GC ou coletor de lixo é responsável pelo
gerenciamento da memória usada pelo programa. - Evita que acessos a posições inválidas de memória
sejam feitas pelos programadores. - A implementação varia de acordo com a plataforma
considerada.
23Lab 1.Dobservação de erros comuns
- Objetivo
- Praticar o processo de edição-compilação-execução
de código Java - Tarefas
- Resolvendo pequenos problemas (bugs) ocorridos em
tempo de compilação e execução.
24Arquiteturas de Desenvolvimento
25O desenvolvimento de sistemas
- As arquiteturas para desenvolvimento de sistemas
podem ser dividas em 3 grupos - 1-tier (1 camada)
- 2-tier (2 camadas)
- 3-tier (3 camadas)
26Arquitetura 1-tier
- Arquitetura antiga onde as aplicações e os dados
residem em um único ambiente, geralmente um
computador central como os mainframes. Os
clientes são terminaissem poder de processamento.
27Arquitetura 2-tier
- Arquitetura recente e muito utilizada. Mais
conhecida como arquitetura cliente/servidor (nome
muito comum) - Os componentes são geralmente o cliente,
residente em estações de trabalho, e o servidor,
residente em máquinas centrais, de maior
capacidade - O componente cliente faz solicitações que são
atendidas pelo componente servidor, criando um
interação contínua.
28Arquitetura 2-tier
- Na arquitetura cliente/servidor, os dados ficam
armazenados em bancos de dados e é necessário
instalar o software nos clientes.
servidor (banco de dados)
Clientes (Front-End)
Oracle Informix Sybase SQL Server ...
29Arquitetura 3-tier
- Arquitetura diretamente derivada da
cliente/servidor, o modelo 3-tier foi uma divisão
lógica feita em relação ao modelo precursor e que
pode ser considerada o padrão para o
desenvolvimento de aplicações baseadas na Web
(Web-based applications). - Isola o cliente da base de dados.
30Características
1a. CamadaServiço de Apresentação
3a. CamadaServiço deDados
2a. CamadaServiço deNegócios
cliente (browser)
servidor (servidor Web)
servidor (banco de dados)
Oracle Informix Sybase SQL Server ...
aplicação dinâmica
31Conceitos de Java no Desenvolvimento de Sistemas
32Programação JavaConceitos Fundamentais
- Regras da linguagem - sintaxe
- Estruturas de controle de fluxo
- Métodos e classes - Programação Baseada em
Objetos - O estudo destes tópicos será foco deste curso.
33Programação Java Conceitos Avançados
- Herança, polimorfismo, interfaces - programação
Orientada a Objetos - Tratamento de exceções
- Capacidade multithreding
34AWT e Swing
- Classes Java usadas para criação de interfaces
gráficas para sistemas cliente/servidor (2
camadas)
35Applet
- Classe Java usada na arquitetura Web (3 camadas),
mais especificamente na primeira camada,
encapsulado ao Browser.
36Conectividade de banco de dados Java - JDBC
- Tecnologia que permite acessar banco de dados.
- Possui várias características importantes
- Modelo próprio de Serviços de Negócios
- Reduz o risco do negócio
- Permite a portabilidade entre plataformas
- Especificado por Comitê
- O estudo de JDBC será foco deste curso.
37Servlets
- Classes Java que executam dentro do servidor Web
(2ª camada) - Possui várias características importantes
- É executada dentro de processos especiais
- Pode ser chamado por múltiplos clientes, sejam
eles feitos em Java ou não. - Processamento de pedidos concorrentes.
- Os métodos de um servlet são executados em
threads. - As instâncias de um servlet são reutilizadas
quando necessárias.
38Java Server Pages - JSP
- Páginas HTML geradas dinamicamente no Servidor
Web (2ª camada) - Possui várias características importantes
- São independentes de plataforma, eficientes e
seguros. - Separa a interface do usuário do conteúdo
dinâmico. - Podem conectar-se a um JavaBean .
- O estudo de servles é foco do curso Java II -
Servlets e JSP do Instituto Infnet.
39Enterprise JavaBeans - EJB
- Empacotamento de classes definidas como
componentes de software reutilizáveis. - Possui várias características importantes
- Modelo próprio de Serviços de Negócios
- Reduz o risco do negócio
- Permite a portabilidade entre plataformas
- Especificado por Comitê
UA Introdução a Java - BCA Arquiteturas de
Desenvolvimento e o Java
40Tipos de Dados, Operadores e Comandos de Fluxo
41Tipos de Dados Primitivos
42Identificadores
- Usados para identificar variáveis, constantes,
classes, instâncias de classe (objetos), métodos,
etc.. - Regras de formação de identificadores
- Algumas convenções estabelecidas
43IdentificadoresPrincipais regras
- Começa com letras ou _(sublinhado). é válido
mas deve ser evitado - Pode conter dígitos no meio ou no final
- Há distinção entre maiúsculas e minúsculas
- Não podemos usar caracteres acentuados de
qualquer tipo - Não podemos usar palavras reservadas.
44IdentificadoresPrincipais convenções
- Métodos e variáveis
- Palavras simples - tudo em minúsculo
- Palavras compostas - Começa com minúscula e a
inicial das outras palavras em maiúscula. - Constantes
- Tudo em maiúsculo. Palavras compostas separadas
com _ (sublinhado). - Classes
- Palavras simples - Começa com maiúscula
- Palavras compostas Começa com maiúscula e a
inicial das outras palavras em maiúscula. - Arquivos
- Mesmas convenções das classes.
45Identificadores
- Exemplos de identificadores válidos
- Botafogo
- _teste20
- dinheiro
- futebolProfissionalBrasileiro
- nome_jogador
- thisOne
- TAXA_SERVICO
46Os 8 Tipos Primitivos
- byte (8 bits)
- short (16 bits)
- int (32 bits)
- long (64 bits)
- float (32 bits)
- double (64 bits)
- char (16 bits)
- boolean (1 bit)
Numéricos sem casa decimal
Numéricos com casa decimal
Caracter da tabela unicode
true/false (não pode ser numérico)
47Os 8 Tipos Primitivos
- Lógico boolean
- boolean status true
- // os literais sempre em letra minúscula
48Os 8 Tipos Primitivos
- Textual char - 16 bits - 2 bytes
- char meuCaracter L
- char meuCharUnicode \u0058
- A contrabarra indica uma seqüência de escape.
49Os 8 Tipos Primitivos
- \b - backspace
- \t - tab
- \f - form feed
- \n - line feed
- \r - carriage return
- \ - aspas simples
- \ - aspas duplas
- \\ - contrabarra
50Os 8 Tipos Primitivos
- Inteiros byte, short, int e long
- A diferença entre eles está no intervalo de
valores que cada um pode suportar - byte menor 10 // 1 byte -128 a 127
- short pequeno 456// 2 bytes
- int normal 10252 // 4 bytes
- long muitoGrande 6263732239 // 8 bytes
51Os 8 Tipos Primitivos
- Ponto flutuante float e double
- float - precisão simples que utiliza 32 bits de
armazenamento. Tornam-se imprecisas para valores
muito grandes ou muito pequenos. Úteis quando
precisamos de um valor fracional sem grande
necessidade de precisão. Exemplo reais e
centavos. - Double - precisão dupla que utiliza 64 bits de
armazenamento. - float numeroReal 10.9f// 4 bytes
- double numero 6745.9E13// 8 bytes
52Variáveis
- Java é uma linguagem fortemente tipada
- Cada variável pode armazenar um único tipo de
dado. - Cada variável possui
- Um identificador
- Um tipo de dado
- Um valor (pode ser null)
- Um tamanho (definido pelo tipo)
53Declaração de variáveis
- Toda variável deve ser declarada explicitamente
- lttipo primitivogtlt identificador gt ,lt
identificador2, ... gt valor inicial - Exemplos
- int numeroDias
- char opcao
- float cotacaoDolar
- boolean status
- double qtd1, preco1
54Inicialização de variáveis
- Variáveis possuem um escopo que determina em que
locais do código-fonte elas podem ser
visualizadas. - Dependendo do local onde a variável for declarada
esta receberá um valor padrão (default). - Exemplo
- int numeroDias
- numeroDias 15
- ou
- int numeroDias 15, cont, f 5
55Conversões e casting
- Não existe downcasting
- A conversão deve ser explícita
public class TiposPrimitivos public static
void main(String args) int a 4, b
5 int c c a / b
System.out.println("c " c) double d
d a / b System.out.println("d "
d) double e e (double) a / b
//Conversão deve ser explícita
System.out.println("e " e)
c 0 d 0.0 e 0.8 Press any key...
56Conversões e casting
long grande 890L// inicialmente com 64
bits int pequeno (int) (grande) //coerção
explícita char letra (char) 87 // Letra
W Lembre-se que fazer a coerção explícita,
podem surgir resultados imprevisíveis.
57Operadores
58Operador de atribuição
- Atribuição simples ( )
- A expressão da direita é atribuída à variável que
está à esquerda. - Pode ser utilizado de forma encadeada
x 110 Y x 12
x y z 55
59Operadores aritméticosoperadores binários
- Requerem dois operandos
- Operações aritméticas básicas
- Funciona com variáveis numéricas e literais
int x, y, z x 229 23 // adição y 73
9 // subtração z 72 6 // multiplicação x
y / z // divisão y x z // resto da divisão
60Operadores aritméticosoperadores unários
- O operador incrementa de 1
- O operador -- decrementa de 1
- Duas formas de utilização pré-fixada e
pós-fixada.
int x, y x 2 y x // pós-fixado gt x 3
e y 2 x 2 y x // pré-fixado gt x 3
e y 3
61Operadores relacionais
gt Maior que gt Maior ou igual a lt Menor
que lt Menor ou igual a Igual a ! Diferente
de
62Operadores lógicos
E (longo) E (curto) Ou (longo) Ou
(curto) Ou exclusivo ! Não
- longo - significa que todas as condições são
avaliadas - curto - a avaliação da condição da esquerda já
define o resultado - exclusivo - se uma e apenas uma condição for
true. Se duas forem true resulta em false.
63Operadores compostos
- O operador de atribuição pode ser combinado com
qualquer operador binário.
x 110 x 12 // mesmo que x x 12 x /
4 // mesmo que x x / 4
64Precedência
Ordem Operador Associatividade 1 -- -
!(tipo) D para E 2 / E para D 3 -
E para D 4 lt gt lt gt instanceof E para
D 5 ! E para D 6 E para
D 7 E para D 8 E para D 9 E
para D 10 ? D para E 11 - / D
para E
Parênteses podem ser usados para alterar a
precedência.
65Comandos de Fluxo
66Comandos de Decisão
67if...else
- Executa, condicionalmente, um grupo de comandos,
dependendo do valor de uma expressão. Caso só
haja uma instrução no bloco, as chaves poderão
ser omitidas. - Sintaxe
if (condição) comandos else comandos
if (condição) instrução ou bloco de instruções
cercados por chaves else if (condição-n)
instrução ou bloco de instruções cercados por
chaves else instrução ou bloco de instruções
cercados por chaves
68ifelse exemplos
int x 7 if (x gt abc) // abc é uma
variável definida //em outra parte do
programa System.out.println(x é maior que
abc) else x abc abc if ( k lt
20 ) j 5 //é válido
69ifelse exemplosif aninhado
if ((salario gt 1000) (salario lt 2500)) IR
salario 0.1 else if (salario lt
5000) IR salario 0.2 else IR
salario 0.25
70Operador Condicional ?
- Alternativa para o comando if... else.
- Sintaxe
(expressão lógica) ? expressão 1 expressão
2 int total (salario lt 1000) ? salario
salario IR
71switch
- Executa um de vários grupos de comandos,
dependendo do valor de uma expressão. - Sintaxe
- expressão_teste só pode ser do tipo byte, short,
int ou char
switch (expressão_teste) case expressão
constante 1 comandos default expressão
constante n comandos
72switch exemplos
switch (diaSemana) case 1 System.out.printl
n(Hoje é segunda-feira) break case
2 System.out.println(Hoje é
terça-feira) break ... case
6 System.out.println(Hoje é
sábado) break case 7 System.out.println(
Hoje é domingo) break default System.out.
println(Opção inválida!!!) break
73switch exemplos
switch (diaSemana) case 1 case 2 case
3 case 4 case 5 System.out.println(Hoje é
dia de trabalho!!) break case 6 case
7 System.out.println(Hoje é fim de
semana!!!) break default System.out.printl
n(Opção inválida!!!) break
74Comandos de Repetição
75while
- Executa uma série de comandos enquanto uma
condição for verdadeira. - Sintaxe
while (condição) comandos
76while - exemplo
int i 0 while (i lt 10) a 45 i
77do...while
- Repete um bloco de comandos enquanto uma condição
for verdadeira ou até que uma condição seja
verdadeira. - Sintaxe
- Pode-se omitir as chaves se o bloco tiver apenas
uma linha ou uma instrução.
do instrução ou bloco de instruções while
(condição)
78for
- Repete um grupo de comandos em um número
específico de vezes. - Sintaxe
- inicialização - pode ser uma ou mais separadas
por vírgula - terminação - uma expressão lógica
- incremento - pode ser um ou mais separados por
vírgula
for (inicialização terminação incremento)
instrução ou bloco de instruções
79for
public class TestaFor public static void
main(String args) for (int i 0 i
lt10 i) System.out.println("i "
i) for (int j 1 j lt 20 j)
System.out.println("\tj " j)
if (j 5) break
80Comandos de Desvio
- break.
- continue.
- break e continue rotulados
81break
- Sai incondicionalmente para primeira instrução
após um laço ou de uma instrução switch.
1 for (int i 1 i lt limite i)
2 fatorial 1 3 for (int j 2 j lt i
j) 4 fatorial j 5 if (fatorial
120) 6 break// vai para linha
8 7 8 System.out.println(i "! é "
fatorial) 9 10 System.out.println(O valor do
fatorial é fatorial)
82continue
- Abandona a iteração em que o laço se encontra e
vai incondiconalmente para a próxima.
1 for (int i 1 i lt limite i)
2 fatorial 1 3 for (int j 2 j lt i
j) 4 if (fatorial 120) 5 continue//v
ai para linha 3 6 fatorial
j 7 8 System.out.println(i "! é "
fatorial) 9 10 System.out.println(O valor do
fatorial é fatorial)
83break e continue rotulados
- É utilizado para sair ou ir para a próxima
iteração dentro de laços aninhados.
1 loop_fora 2 for (int i 1 i lt limite i)
3 fatorial 1 4 for (int j 2 j lt i
j) 5 if (fatorial 120) 6 break
loop_fora// vai para linha 11 7 fatorial
j 8 9 System.out.println(i "! é "
fatorial) 10 11 System.out.println(O valor
do fatorial é fatorial)
84Lab 02.Agráfico de barras horizontais
- Objetivo
- Exercitar o uso de tipos de dados primitivos,
declaração de variáveis e controles de fluxo de
programa. - Tarefas da etapa A
- Usando a estrutura for faça um código que desenhe
na tela do sistema n pontinhos horizontais.
85Lab 02.Bgráfico de barras horizontais
- Objetivo
- Exercitar o uso de tipos de dados primitivos,
declaração de variáveis e controles de fluxo de
programa. - Tarefas da etapa B
- Usar uma caixa de mensagem (input) que
possibilite ao usuário entrar com o número de
pontinhos.
86Lab 02.Cgráfico de barras horizontais
- Objetivo
- Exercitar o uso de tipos de dados primitivos,
declaração de variáveis e controles de fluxo de
programa. - Tarefas da etapa C
- Dado um programa que calcula a soma de dois
números entrados pelo usuário, faça um outro que
calcule a média dos números.