Java - LPI - 2005/02   LOIANE GRONER
                                 1
POR QUE
                  JAVA?
•Java está presente em mais de 1.5 bilhões de
dispositivos em todo o mundo:




                      Java - LPI - 2005/02      2
250 milhões de celulares;
Câmeras fotográficas;

                     Java - LPI - 2005/02   3
Dispositivos e aparelhos médicos

            Java - LPI - 2005/02   4
Veículo para a exploração de Marte
               Spirit
           Java - LPI - 2005/02      5
POR QUE JAVA?

 650 milhões de desktop e servidores
  500 milhões em smart cards e dispositivos
similares
 100 milhões em outros dispositivos:
   radares
   aparelhos domésticos
   entre outros


                    Java - LPI - 2005/02      6
O QUE É JAVA?
  • Linguagem de Programação
        • Ambiente de
         Desenvolvimento
   • Ambiente de Aplicativos




             Java - LPI - 2005/02   7
O QUE É JAVA?

• Orientada a Objetos

• Possui Coletor de Lixo
• Robusta (Tratamento de exceções)
•Arquitetura Neutra (Não suporta herança
múltipla)
• Simples
• Case Sensitive
• Internacionalização

                        Java - LPI - 2005/02   8
O QUE É JAVA?

• HTML – applets
•Processos automáticos na WEB




                   Java - LPI - 2005/02   9
PLATAFORMA
             JAVA
• Plataforma de Software
• Código Compilado + Interpretado = Híbrido




                     Java - LPI - 2005/02     10
PLATAFORMA JAVA

• Programa pode rodar em qualquer plataforma,
desde que tenha a JMV




                    Java - LPI - 2005/02        11
PLATAFORMA JAVA

•Outro componente:
  • Java API
     • grupo de bibliotecas (pacotes) com classes e interfaces
     • java.lang, java.awt, java.io, java.math




                        Java - LPI - 2005/02              12
HISTÓRIA
• Lançada pela Sun Microsystems
• 1991 - Projeto Green
• Nasce a OAK
• James Gosling



                   Java - LPI - 2005/02   13
HISTÓRIA


• Star – 7 (*7) – personagem Duke
• Hot Java
• E nasce um novo sucesso!!!



                  Java - LPI - 2005/02   14
CARACTERÍSTICA
      S
  GERAIS DA
  LINGUAGEM
    JAVA
     Java - LPI - 2005/02   15
TIPOS
PRIMITIVOS




   Java - LPI - 2005/02   16
TIPOS
      COMPOSTOS
• Arrays
• Strings
• Ponteiros
• Registros
• Tipos Enumerados
              Java - LPI - 2005/02   17
ARRAYS
     UNIDIMENSIONAIS
• int vet[ ] = new int [10];
• int vet[ ] = {1,2,3,4,5,6};
• vet[5] = 6;
• vet[0] = 1;   Java - LPI - 2005/02   18
ARRAYS
MULTIDIMENSIONAIS
• Java não suporta
• Solução: array de arrays
• int matriz [ ][ ] = new int [2][ ];
• int matriz [ ][ ] = new int [3][2];
• int matriz [ ][ ] = {{1,2},{3,4},{5,6}};
                 Java - LPI - 2005/02   19
ARRAYS MULTIDIMENSIONAIS

• int mat[ ] [ ] = new int [3];
• mat[0] = new int [2];
• mat[1] = new int [1];
• mat[2] = new int [3];
• int mat [ ][ ] = {{1,2},{3},{4,5,6}};

                 Java - LPI - 2005/02     20
STRINGS
• String é um objeto em Java;
• Classe String (pacote java.lang)
• Aspas duplas “ ”
• EX:
    String s = “olá”;
                Java - LPI - 2005/02   21
STRINGS

• Método construtor:
   String s = new String (“olá”);
• Outros argumentos:
   char vetchar[ ] = {‘o’, ‘l’, ‘á’};
   String s = new String (vetchar);
   // s = “olá”
                  Java - LPI - 2005/02   22
PONTEIROS
• Não existem em Java, são invisíveis
para o programador.
• Constatou-se que geravam bugs
• Referências => uso do “new” =>
alocados dinamicamente

               Java - LPI - 2005/02   23
REGISTROS
• Java não dá suporte
• Recurso: usar uma classe:
  • classe => tipo registro
  • objeto => variável
  • atributos => campos do registro
                Java - LPI - 2005/02   24
public class Data {
       public int dia, mes, ano;
       //métodos da classe Data
}
class UsaData {
       public static void main (String args[ ]) {
              Data hoje = new Data( );
              hoje.dia = 29;
              hoje.mes = 11;
              hoje.ano = 2005;
       }
}                          Java - LPI - 2005/02     25
TIPOS ENUMERADOS
• Definidos como “enum”
• Conjunto de constantes
• Novidade no JAVA 5.0
• enum Acao {ANDAR, CORRER, SENTAR};
• Podem ser usados no laço for

                 Java - LPI - 2005/02   26
CLASSES
     EMPACOTADORAS
• Todo tipo primitivo possui uma classe
epacotadora de tipo
• Tipos primitivos não têm métodos
• Exemplo: métodos de casting

               Java - LPI - 2005/02   27
CONVERSÃO
       ENTRE TIPOS
• Único tipo primitivo que não pode
sofrer conversão de/para é o booleano
• Conversões automáticas:
    int x = 25;
    long y;
    y = x;        Java - LPI - 2005/02   28
CONVERSÃO ENTRE TIPOS

• Conversões Explícitas:




               Java - LPI - 2005/02   29
VARIÁVEIS
• Pode-se declarar variáveis em qualquer
lugar do código, mas não é uma boa prática
de programação.
• Podem começar com letra, sublinhado ( _ )
ou cifrão ($), mas não podem começar com
números.


                 Java - LPI - 2005/02   30
PALAVRAS
ESPECIAIS




  Java - LPI - 2005/02   31
CONSTANTES
        NOMEADAS
• Utilizam a palavra chave “final” para
especificar que uma variável é constante.
• São escritas em letras maiúsculas
(convenção).
• Podem ser inicializadas na delcaração ou
no método construtor.
                 Java - LPI - 2005/02   32
CONSTANTES NOMEADAS
Exemplo:
class Constantes {
      final int VALOR1 = 250;
      final float VALOR2;
      //método construtor
      public Constantes (float num) {
            VALOR2 = num;
      }
}                     Java - LPI - 2005/02   33
OPERADORES
       Aritméticos
       Atribuição
 Incremento / Decremento
      Comparação
          Lógicos
        Ternários
        Java - LPI - 2005/02   34
OPERADORES ARITMÉTICOS




• Não tem um operador para potência
(Como em ADA e FORTRAN)
=> Math.pow(x,y) => tipo double
              Java - LPI - 2005/02    35
OPERADORES DE ATRIBUIÇÃO




          Java - LPI - 2005/02   36
OPERADORES
INCREMENTO/DECREMENTO




        Java - LPI - 2005/02   37
OPERADORES DE COMPARAÇÃO




          Java - LPI - 2005/02   38
OPERADORES LÓGICOS




       Java - LPI - 2005/02   39
OPERADORES LÓGICOS




       Java - LPI - 2005/02   40
OPERADORES TERNÁRIOS

• Condicional ( ? : ), como em C, C++
• Notação compacta da estrutura if – else
• x = (y == z ? 10 : 20);
equivale a     if (y == z)
                        x = 10;
               else
                        x = 20;
                      Java - LPI - 2005/02   41
INSTRUÇÕES
       DE CONTROLE
• Tomada de Decisões => if-else, switch-case
• Laços ou Repetições => for, while, do-
while
• Outros => break, continue, label

                   Java - LPI - 2005/02    42
Seletor Bidirecional
if (condição) {
    <comandos>;
}
else {
    <comandos>;
}                 Java - LPI - 2005/02   43
Seletor Múltiplo
switch (expressão) {
    case (constante1) : <comando>;
                                      break;
    ...
    default : <comando>;
}              Java - LPI - 2005/02            44
Laço de Contagem
for (inicialização; condição; incr/decr)
{
    <comandos>;
}
• Bastante flexível

                Java - LPI - 2005/02   45
Laço Interação
     Enquanto - Faça

while (condição) {
    <comandos>;
}

            Java - LPI - 2005/02   46
Laço Interação
       Faça - Enquanto

do {
   <comandos>;
} while (condição);
            Java - LPI - 2005/02   47
Break - Continue
• Break – usado para interromper a
execução do laço, muito usado no
switch
• Continue – interrompe, mas continua
executando o próximo passo do laço
• Goto – é feito em Java através do
break ou continue com rótulo (label)
               Java - LPI - 2005/02   48
Escopo
• Variáveis de Instância:
• Depende do modificador de acesso:
• PUBLIC: qualquer outra classe;
• PRIVATE: métodos da própria
classe;
• PROTECTED: pacote e herança;
                Java - LPI - 2005/02   49
• FRIENDLY: pacote (default);
Escopo

• Variáveis de Métodos:
•Restrição ao bloco em que foi
declarada;
• Visível a partir do momento da
declaração;

               Java - LPI - 2005/02   50
Tempo de Vida
• Variáveis de Métodos: apenas
durante a execução do método;
• Objeto: enquanto for referenciado;




               Java - LPI - 2005/02   51
MEMÓRIA
• Tipos compostos são armazenados
como objetos na heap e manipulados
através de uma referência (variável),
guardada na pilha.
• Tipos primitivos são guardados na
pilha
               Java - LPI - 2005/02   52
MEMÓRIA




 Java - LPI - 2005/02   53
TRATAMENTO
  DE EXCEÇÕES
• Exceções são situações indesejáveis
que podem ocorrer durante a execução
de um programa.
• Erro => dispara exceção => captura

               Java - LPI - 2005/02   54
TRATAMENTO DE EXCEÇÕES

Tipos comuns de exceções:
• divisão por zero;
• objeto não instanciado é referenciado;
• acesso a um elemento de um array que não
existe;
• ler inteiro => entra com real;
• etc;            Java - LPI - 2005/02     55
TRATAMENTO DE EXCEÇÕES
Try {
        //código que pode gerar exceção
}
Catch (tipo_de_exceção) {
        //código para tratar a exceção
}
Finally {
        //código que deve ser executado em qualquer caso
}                       Java - LPI - 2005/02       56
REFERÊNCIAS
• Conteúdo e figuras – referências no trabalho escrito
• Vídeo:
   The “JAVA IS EVERYWHERE" cartoon:
   * Rendering software: Lightwave3D from NewTek
   * Video editing software: Final Cut
   * Sound clips: sound-ideas.com
   * Voice: Kelsey Gosling
   * Disponível em: <http://today.java.net/jag/je/>
                        Java - LPI - 2005/02          57
CRÉDITOS
                                            Bye!
• Editado por:
     Loiane Groner




•Trabalho apresentado à disciplina LPI
•3° A – Ciência da Computação - FAESA
• Vitória – ES, 29 de novembro de 2005

                     Java - LPI - 2005/02          58

Linguagem Java

  • 1.
    Java - LPI- 2005/02 LOIANE GRONER 1
  • 2.
    POR QUE JAVA? •Java está presente em mais de 1.5 bilhões de dispositivos em todo o mundo: Java - LPI - 2005/02 2
  • 3.
    250 milhões decelulares; Câmeras fotográficas; Java - LPI - 2005/02 3
  • 4.
    Dispositivos e aparelhosmédicos Java - LPI - 2005/02 4
  • 5.
    Veículo para aexploração de Marte Spirit Java - LPI - 2005/02 5
  • 6.
    POR QUE JAVA? 650 milhões de desktop e servidores 500 milhões em smart cards e dispositivos similares 100 milhões em outros dispositivos: radares aparelhos domésticos entre outros Java - LPI - 2005/02 6
  • 7.
    O QUE ÉJAVA? • Linguagem de Programação • Ambiente de Desenvolvimento • Ambiente de Aplicativos Java - LPI - 2005/02 7
  • 8.
    O QUE ÉJAVA? • Orientada a Objetos • Possui Coletor de Lixo • Robusta (Tratamento de exceções) •Arquitetura Neutra (Não suporta herança múltipla) • Simples • Case Sensitive • Internacionalização Java - LPI - 2005/02 8
  • 9.
    O QUE ÉJAVA? • HTML – applets •Processos automáticos na WEB Java - LPI - 2005/02 9
  • 10.
    PLATAFORMA JAVA • Plataforma de Software • Código Compilado + Interpretado = Híbrido Java - LPI - 2005/02 10
  • 11.
    PLATAFORMA JAVA • Programapode rodar em qualquer plataforma, desde que tenha a JMV Java - LPI - 2005/02 11
  • 12.
    PLATAFORMA JAVA •Outro componente: • Java API • grupo de bibliotecas (pacotes) com classes e interfaces • java.lang, java.awt, java.io, java.math Java - LPI - 2005/02 12
  • 13.
    HISTÓRIA • Lançada pelaSun Microsystems • 1991 - Projeto Green • Nasce a OAK • James Gosling Java - LPI - 2005/02 13
  • 14.
    HISTÓRIA • Star –7 (*7) – personagem Duke • Hot Java • E nasce um novo sucesso!!! Java - LPI - 2005/02 14
  • 15.
    CARACTERÍSTICA S GERAIS DA LINGUAGEM JAVA Java - LPI - 2005/02 15
  • 16.
    TIPOS PRIMITIVOS Java - LPI - 2005/02 16
  • 17.
    TIPOS COMPOSTOS • Arrays • Strings • Ponteiros • Registros • Tipos Enumerados Java - LPI - 2005/02 17
  • 18.
    ARRAYS UNIDIMENSIONAIS • int vet[ ] = new int [10]; • int vet[ ] = {1,2,3,4,5,6}; • vet[5] = 6; • vet[0] = 1; Java - LPI - 2005/02 18
  • 19.
    ARRAYS MULTIDIMENSIONAIS • Java nãosuporta • Solução: array de arrays • int matriz [ ][ ] = new int [2][ ]; • int matriz [ ][ ] = new int [3][2]; • int matriz [ ][ ] = {{1,2},{3,4},{5,6}}; Java - LPI - 2005/02 19
  • 20.
    ARRAYS MULTIDIMENSIONAIS • intmat[ ] [ ] = new int [3]; • mat[0] = new int [2]; • mat[1] = new int [1]; • mat[2] = new int [3]; • int mat [ ][ ] = {{1,2},{3},{4,5,6}}; Java - LPI - 2005/02 20
  • 21.
    STRINGS • String éum objeto em Java; • Classe String (pacote java.lang) • Aspas duplas “ ” • EX: String s = “olá”; Java - LPI - 2005/02 21
  • 22.
    STRINGS • Método construtor: String s = new String (“olá”); • Outros argumentos: char vetchar[ ] = {‘o’, ‘l’, ‘á’}; String s = new String (vetchar); // s = “olá” Java - LPI - 2005/02 22
  • 23.
    PONTEIROS • Não existemem Java, são invisíveis para o programador. • Constatou-se que geravam bugs • Referências => uso do “new” => alocados dinamicamente Java - LPI - 2005/02 23
  • 24.
    REGISTROS • Java nãodá suporte • Recurso: usar uma classe: • classe => tipo registro • objeto => variável • atributos => campos do registro Java - LPI - 2005/02 24
  • 25.
    public class Data{ public int dia, mes, ano; //métodos da classe Data } class UsaData { public static void main (String args[ ]) { Data hoje = new Data( ); hoje.dia = 29; hoje.mes = 11; hoje.ano = 2005; } } Java - LPI - 2005/02 25
  • 26.
    TIPOS ENUMERADOS • Definidoscomo “enum” • Conjunto de constantes • Novidade no JAVA 5.0 • enum Acao {ANDAR, CORRER, SENTAR}; • Podem ser usados no laço for Java - LPI - 2005/02 26
  • 27.
    CLASSES EMPACOTADORAS • Todo tipo primitivo possui uma classe epacotadora de tipo • Tipos primitivos não têm métodos • Exemplo: métodos de casting Java - LPI - 2005/02 27
  • 28.
    CONVERSÃO ENTRE TIPOS • Único tipo primitivo que não pode sofrer conversão de/para é o booleano • Conversões automáticas: int x = 25; long y; y = x; Java - LPI - 2005/02 28
  • 29.
    CONVERSÃO ENTRE TIPOS •Conversões Explícitas: Java - LPI - 2005/02 29
  • 30.
    VARIÁVEIS • Pode-se declararvariáveis em qualquer lugar do código, mas não é uma boa prática de programação. • Podem começar com letra, sublinhado ( _ ) ou cifrão ($), mas não podem começar com números. Java - LPI - 2005/02 30
  • 31.
    PALAVRAS ESPECIAIS Java- LPI - 2005/02 31
  • 32.
    CONSTANTES NOMEADAS • Utilizam a palavra chave “final” para especificar que uma variável é constante. • São escritas em letras maiúsculas (convenção). • Podem ser inicializadas na delcaração ou no método construtor. Java - LPI - 2005/02 32
  • 33.
    CONSTANTES NOMEADAS Exemplo: class Constantes{ final int VALOR1 = 250; final float VALOR2; //método construtor public Constantes (float num) { VALOR2 = num; } } Java - LPI - 2005/02 33
  • 34.
    OPERADORES Aritméticos Atribuição Incremento / Decremento Comparação Lógicos Ternários Java - LPI - 2005/02 34
  • 35.
    OPERADORES ARITMÉTICOS • Nãotem um operador para potência (Como em ADA e FORTRAN) => Math.pow(x,y) => tipo double Java - LPI - 2005/02 35
  • 36.
    OPERADORES DE ATRIBUIÇÃO Java - LPI - 2005/02 36
  • 37.
    OPERADORES INCREMENTO/DECREMENTO Java - LPI - 2005/02 37
  • 38.
    OPERADORES DE COMPARAÇÃO Java - LPI - 2005/02 38
  • 39.
    OPERADORES LÓGICOS Java - LPI - 2005/02 39
  • 40.
    OPERADORES LÓGICOS Java - LPI - 2005/02 40
  • 41.
    OPERADORES TERNÁRIOS • Condicional( ? : ), como em C, C++ • Notação compacta da estrutura if – else • x = (y == z ? 10 : 20); equivale a if (y == z) x = 10; else x = 20; Java - LPI - 2005/02 41
  • 42.
    INSTRUÇÕES DE CONTROLE • Tomada de Decisões => if-else, switch-case • Laços ou Repetições => for, while, do- while • Outros => break, continue, label Java - LPI - 2005/02 42
  • 43.
    Seletor Bidirecional if (condição){ <comandos>; } else { <comandos>; } Java - LPI - 2005/02 43
  • 44.
    Seletor Múltiplo switch (expressão){ case (constante1) : <comando>; break; ... default : <comando>; } Java - LPI - 2005/02 44
  • 45.
    Laço de Contagem for(inicialização; condição; incr/decr) { <comandos>; } • Bastante flexível Java - LPI - 2005/02 45
  • 46.
    Laço Interação Enquanto - Faça while (condição) { <comandos>; } Java - LPI - 2005/02 46
  • 47.
    Laço Interação Faça - Enquanto do { <comandos>; } while (condição); Java - LPI - 2005/02 47
  • 48.
    Break - Continue •Break – usado para interromper a execução do laço, muito usado no switch • Continue – interrompe, mas continua executando o próximo passo do laço • Goto – é feito em Java através do break ou continue com rótulo (label) Java - LPI - 2005/02 48
  • 49.
    Escopo • Variáveis deInstância: • Depende do modificador de acesso: • PUBLIC: qualquer outra classe; • PRIVATE: métodos da própria classe; • PROTECTED: pacote e herança; Java - LPI - 2005/02 49 • FRIENDLY: pacote (default);
  • 50.
    Escopo • Variáveis deMétodos: •Restrição ao bloco em que foi declarada; • Visível a partir do momento da declaração; Java - LPI - 2005/02 50
  • 51.
    Tempo de Vida •Variáveis de Métodos: apenas durante a execução do método; • Objeto: enquanto for referenciado; Java - LPI - 2005/02 51
  • 52.
    MEMÓRIA • Tipos compostossão armazenados como objetos na heap e manipulados através de uma referência (variável), guardada na pilha. • Tipos primitivos são guardados na pilha Java - LPI - 2005/02 52
  • 53.
    MEMÓRIA Java -LPI - 2005/02 53
  • 54.
    TRATAMENTO DEEXCEÇÕES • Exceções são situações indesejáveis que podem ocorrer durante a execução de um programa. • Erro => dispara exceção => captura Java - LPI - 2005/02 54
  • 55.
    TRATAMENTO DE EXCEÇÕES Tiposcomuns de exceções: • divisão por zero; • objeto não instanciado é referenciado; • acesso a um elemento de um array que não existe; • ler inteiro => entra com real; • etc; Java - LPI - 2005/02 55
  • 56.
    TRATAMENTO DE EXCEÇÕES Try{ //código que pode gerar exceção } Catch (tipo_de_exceção) { //código para tratar a exceção } Finally { //código que deve ser executado em qualquer caso } Java - LPI - 2005/02 56
  • 57.
    REFERÊNCIAS • Conteúdo efiguras – referências no trabalho escrito • Vídeo: The “JAVA IS EVERYWHERE" cartoon: * Rendering software: Lightwave3D from NewTek * Video editing software: Final Cut * Sound clips: sound-ideas.com * Voice: Kelsey Gosling * Disponível em: <http://today.java.net/jag/je/> Java - LPI - 2005/02 57
  • 58.
    CRÉDITOS Bye! • Editado por: Loiane Groner •Trabalho apresentado à disciplina LPI •3° A – Ciência da Computação - FAESA • Vitória – ES, 29 de novembro de 2005 Java - LPI - 2005/02 58