SlideShare a Scribd company logo
1 of 193
Download to read offline
Curso Java Básico




Instrutora: Katia Cristina Lage dos Santos
Regional Belo Horizonte
                                             19/11/2007 a 30/11/2007
Curso Java Básico

                                                   Título da Apresentação
Visão geral

  O nome Java é usado para referir-se à:
      uma linguagem de programação orientada a objetos;
      uma coleção de APIs (classes, componentes, frameworks) para o
      desenvolvimento de aplicações multiplataforma;
      um ambiente de execução presente em navegadores, mainframes,
      sistemas operacionais, celulares, palmtops, cartões inteligentes,
      eletrodomésticos
  Java foi lançada pela Sun Microsystems em 1995
      write once, run everywhere; programe uma única vez, execute em
      qualquer lugar;
      o projeto é controlado pela Sun (http://java.sun.com/) e pela
      comunidade de usuários JPC (Java Community Process -
      http://jcp.org/en/home/index).
Curso Java Básico

                                                      Título da Apresentação
Visão geral

  Um programa escrito para a plataforma Java necessita de dois
  componentes para ser executado:
      a máquina virtual Java (Java Virtual Machine - JVM);
      um conjunto de bibliotecas de classe que disponibilizam um série de
      serviços para esse programa.
  O pacote de software que contém a máquina virtual e esta biblioteca de
  classes é conhecido como JRE (Java Runtime Environment).

                                JRE

                 JVM             +     Bibliotecas de Classe
Curso Java Básico


Máquina Virtual

  A máquina virtual Java, ou simplesmente JVM:
     é um dos principais componentes da plataforma Java;
     permite que o mesmo código possa ser executado em várias
     plataformas sem a necessidade de recompilação.
  Mas COMO?
     a JVM emula uma máquina real possuindo um conjunto de instruções
     próprio e atua em áreas de gerenciamento de memória;
     a JVM possui uma especificação que pode ser implementada nas
     diversas arquiteturas. Essa especificação visa não atender a nenhum
     tipo de tecnologia em específico, seja de hardware ou de sistema
     operacional;
     os ambientes de execução e de desenvolvimento são fornecidos por
     fabricantes de hadware e software (MacOS, Linux, etc).
                                                        Título da Apresentação
Curso Java Básico


Máquina Virtual

  A máquina virtual não trabalha diretamente com a linguagem de
  programação Java, mas sim com o arquivo de formato class.
  Esse tipo de arquivo contém os bytecodes, que são as instruções para a
  máquina virtual e uma tabela de símbolos.

                             CÓDIGO JAVA
        Ambiente de
      Desenvolvimento
                             COMPILADOR



      Distribuição           Byte Code Java


            VM Windows          VM Linux        VM Celular

            SO Windows          SO Linux        SO Celular
                         Ambiente de Execução
                                                             Título da Apresentação
Curso Java Básico


Máquina Virtual

  O código Java é compilado, gerando o conjunto de instruções chamado
  de byte-code;
  Esse byte-code é aplicado à Máquina Virtual Java (JVM) que se
  encarrega de interpretar os comandos para o sistema operacional onde o
  programa está rodando. Ou seja, a máquina virtual traduz as instruções
  do código Java para instruções válidas no sistema operacional em que
  está rodando;
  Esse byte-code poderá então ser interpretado por qualquer máquina
  virtual Java, rodando em Linux, Windows, Palm OS, Solaris ou qualquer
  outro sistema operacional que possua uma máquina virtual Java
  implementada.



                     Compile once, run anywhere.
                                                         Título da Apresentação
Curso Java Básico


Máquina Virtual

  Um programa Java só é executado caso o seu byte-code passe pela
  verificação de segurança da JVM, que consiste em:
     o programa foi escrito utilizando a sintaxe e semântica da linguagem;
     não existem violações de áreas restritas de memória no código;
     o código não gera Stack Overflow;
     os tipos de parâmetros dos métodos são corretos;
     não existe nenhuma conversão ilegal entre dados do programa
     o acesso a objetos está corretamente declarado.
  Caso alguma das condições acima não seja satisfeita, a máquina virtual
  Java causará um erro de execução (runtime error).
  A JVM não permite que um programa Java acesse recursos de hardware
  diretamente, protegendo o computador de operações perigosas.
                                                          Título da Apresentação
Curso Java Básico


Máquina Virtual

  Uma JVM possui definições concretas para a implementação dos
  seguintes itens:
     conjunto de instruções (equivalentes às instruções da CPU), conjunto
     de registradores, formato padrão de classes, pilha de memória, pilha
     de objetos coletados pelo garbage-collector e área de memória.
  Compilador JIT (just-in-time)
     desde a versão 1.2 da JRE, a implementação da Sun da JVM inclui
     um compilador just-in-time (JIT);
     com este compilador todo o bytecode de um programa é
     transformado em instruções nativas e carregado na máquina virtual
     em uma só operação, permitindo um ganho de desempenho muito
     grande em comparação com a implementação anterior, onde as
     instruções em bytecode eram interpretadas uma por vez.

                                                         Título da Apresentação
Curso Java Básico


Bibliotecas de Classes

  Na maioria dos sistemas operacionais modernos, um corpo formado por
  código reusável é organizado e disponibilizado para simplificar o trabalho
  do programador;
  Este código encontra-se, normalmente, na forma de bibliotecas dinâmicas
  que a aplicação utiliza durante a sua execução.
  Como a plataforma Java não é dependente de qualquer sistema
  operacional, as aplicações não podem depender das bibliotecas destes
  sistemas.
  Por isso, a plataforma Java disponibiliza um grande conjunto padronizado
  de bibliotecas de classe, que contém praticamente o mesmo número de
  funções encontradas nos sistemas operacionais modernos.




                                                           Título da Apresentação
Curso Java Básico


Bibliotecas de Classes

  Uma classe de biblioteca Java serve a três propósitos dentro da
  plataforma Java:
     disponibilizam ao programador um conjunto de funções bem
     conhecidas que realizam tarefas comuns, como a manutenção de
     listas de elementos ou manipulação de strings;
     contém uma interface para tarefas que dependem do hardware e do
     sistema operacional (exemplo, acesso a rede e manipulação de
     arquivos);
     se alguma plataforma não suportar alguma função que uma aplicação
     Java necessita, as bibliotecas implementam esta funcionalidade
     usando os recursos disponíveis, ou disponibilizam um meio
     consistente para que a aplicação verifique a presença de determinada
     funcionalidade.


                                                        Título da Apresentação
Curso Java Básico


Gerenciamento de Memória

  Durante a execução de um programa de computador, ocorre a alocação e
  liberação dinâmica de memória RAM. Dados são escritos e lidos da
  memória do computador satisfazendo os requisitos de cada programa.
  Em linguagens tradicionais como Pascal, Basic e C/C++, o programador
  é responsável por controlar essa alocação, impedindo o estouro de
  memória (stack overflow) e outros problemas, como o acesso indevido a
  áreas reservadas de memória.
  Para facilitar a vida dos programadores, e evitar os erros comuns
  associados à alocação de memória, a linguagem Java introduziu o
  conceito de garbage-collection.




                                                       Título da Apresentação
Curso Java Básico


Gerenciamento de Memória

  Garbage-collection
      é um mecanismo de controle automático de alocação e liberação de
      memória.
      Quando uma variável é declarada em um código de computador, a
      JVM cria um ponteiro para uma área de memória equivalente ao
      tamanho do tipo de dado utilizado por essa variável.

 public class Pessoa{                                          MEMÓRIA
   int intIdade;
   String strNome                              pessoa1
   (...)
   public static void main(){                                       Pessoa
        Pessoa pessoa1 = new Pessoa();
   }
 }
                                                         Título da Apresentação
Curso Java Básico


Gerenciamento de Memória

  Garbage-collection
       Quando essa variável é associada a outra região de memória, a JVM
       coloca o espaço alocado anteriormente em uma pilha de objetos em
       desuso.
                                                              MEMÓRIA
   (...)                                         pessoa1
   public static void main(){
        Pessoa pessoa1 = new Pessoa();
        Pessoa pessoa2 = new Pessoa();                            Pessoa
        pessoa1 = pessoa2;                       pessoa2
   }

     Caso o computador fique com pouca memória disponível, a JVM
     remove objetos dessa pilha, permitindo que esse espaço de memória
     seja re-alocado.
                                                       Título da Apresentação
Curso Java Básico


Gerenciamento de Memória

  O processo de garbage-collection ocorre automaticamente durante a
  execução de um programa Java.
     é possível sugerir ao JVM que execute a coleta de lixo;
     no entanto não haverá garantias de que todos os objetos não
     utilizados serão realmente removidos da memória;
     chamadas possíveis:Runtime.getRuntime() ou System.gc();
  O programador não precisa se preocupar com aritmética de ponteiros
  (grande dificuldade em linguagens como C e Pascal.




                                                       Exemplo 1

                                                          Título da Apresentação
Curso Java Básico


Plataforma Java

   A plataforma Java se divide          em   três   grandes   edições.
   http://www.javafree.org/wiki/Java
      Java Standard Edition (JavaSE);
      Java Mobile Edition (JavaME);
      Java Enterprise Edition (JavaEE).
Curso Java Básico


Plataforma Java

   Java Standard Edition (JavaSE)
      É a tecnologia Java para computadores pessoais, notebooks e
      arquiteturas com poder de processamento e memória consideráveis.
       Várias APIs acompanham esta versão e tantas outras podem ser
      baixadas opcionalmente no site da Sun.
      É com elas que a maioria das aplicações são construídas e
      executadas.
      O J2SE possui duas divisões:
         Java Development Kit (JDK) ou Standard Development Kit (SDK):
         um conjunto para desenvolvimento em Java: compilador (javac),
         depurador, gerador de documentação (javadoc), empacotador de
         componentes (jar);
         Java Runtime Edition (JRE): uma versão mais leve da JDK pois é
         preparada para o ambiente de execução.         Título da Apresentação
Curso Java Básico


Plataforma Java

   Java Mobile Edition (JavaME)
      É a tecnologia Java para dispositivos móveis com limitações de
      memória ou processamento.
      Possui APIs bem simples e leves para economizar espaço, memória
      e processamento.
      São utilizadas para sistemas em celulares, palm tops, pocket pcs,
      smartphones, javacards e demais dispositivos.
      O J2ME se divide em dois grupos de bibliotecas. É dividida em dois
      grupos:
         Connected Limited Device Configuration (CLDC): para celulares e
         smartphones, que são mais limitados;
         Connected Device Configuration (CDC): para Palmtops e Pocket
         pcs e alguns dispositívos mais poderosos.
                                                          Título da Apresentação
Curso Java Básico


Plataforma Java

   Java Enterprise Edition (JavaEE)
      É a tecnologia Java para aplicações corporativas que podem estar na
      internet ou não.
      Possui um grande número de APIs onde a segurança é a principal
      preocupação.
      É ideal para a construção de servidores de aplicação, integração de
      sistemas ou distribuição de serviços para terceiros.
      A plataforma Java EE não é um produto, mas sim de uma
      especificação definida pela Sun.
      A Java EE simplifica as aplicações empresariais e multi-camadas,
      baseada em componentes padronizados, modulares e reusáveis, e
      oferece um conjunto completo de serviços para estes componentes.


                                                         Título da Apresentação
Curso Java Básico


O ambiente Eclipse

   O Eclipse é um ambiente de desenvolvimento integrado (IDE – Integrated
   Development Environment)
   Contém um conjunto de funcionalidades embutidas, cuja finalidade é
   prover um modo mais fácil e interativo de construir e manipular seus
   programas.
   Dentre essas funcionalidades, destacam-se:
      um editor de texto com facilidades especialmente desenhadas para a
      linguagem;
      um compilador e um interpretador,         para   muitas   linguagens
      interpretadas, dentre elas o Java;
      um editor gráfico, com facilidades para criação e edição da interface
      gráfica      do       programa        a       ser      desenvolvido;

                                                          Título da Apresentação
Curso Java Básico


O ambiente Eclipse

      uma ferramenta, denominada debugger, que possibilita um
      monitoramento mais elegante do funcionamento do seu
      programa, facilitando a detecção e remoção dos erros de lógica do
      código.
   Além das funcionalidades inerentes ao conceito de IDE, é importante
   ressaltar que o Eclipse é tido como “meta-ambiente de desenvolvimento
   de software”, um “ambiente para construção de ambientes”. Em outras
   palavras, um framework para integração de diferentes tipos de aplicação.




                                                          Título da Apresentação
Curso Java Básico


O ambiente Eclipse

   Funcionalidades do ambiente Eclipse
      ao iniciar o Eclipse pela primeira vez, será solicitada a indicação de
      um diretório onde será armazenado o código a ser desenvolvido
      workspace;
      é possível existir mais de um workspace na mesma mídia de
      armazenamento. Entretanto, cada workspace poderá ser utilizado por
      somente uma instância do Eclipse em execução no momento.
      na janela de definição do workspace é possível definí-lo como o
      diretório padrão (default) onde os projetos a serem desenvolvidos por
      aquela instância do Eclipse serão armazenados.
Curso Java Básico


O ambiente Eclipse

   Funcionalidades do ambiente Eclipse
      após a definição do workspace, será exibida uma janela de boas-
      vindas(welcome).
      após fechá-la, será exibido o layout do ambiente sob a denominada
      perspectiva Java Perspective;




                                                       Título da Apresentação
Curso Java Básico


O ambiente Eclipse




                                         Título da Apresentação
Curso Java Básico


O ambiente Eclipse

   Funcionalidades do ambiente Eclipse
      o Eclipse destaca-se dentre as demais IDEs, pelo fato de possuir a
      funcionalidade de customização do ambiente de trabalho.
      trata-se de um programa open-source, originalmente escrito para ser
      uma IDE versátil e possível de ser adaptada para qualquer propósito
      relacionado ao desenvolvimento de software, desde a produção de
      plug-ins para ele mesmo e/ou outros programas, passando pela
      integração de ferramentas ao ambiente Eclipse e culminando no
      desenvolvimento do software final em si. Esta adaptabilidade já
      começa pela estética do ambiente.




                                                         Título da Apresentação
Curso Java Básico


O ambiente Eclipse

   Package Explorer (1)
      é um visualizador simples e elegante dos seus projetos;
      um projeto representa toda a estrutura do seu programa,
      armazenando os arquivos-fonte (.java), os bytecodes (.class), as
      configurações gerais do ambiente para o projeto, eventuais arquivos
      de backup e outros arquivos inerentes ao escopo do programa (por
      exemplo, quaisquer possíveis imagens relacionadas ao projeto);
      a navegação é semelhante à do Windows Explorer, bastante intuitiva
      e respeitando a hierarquia do projeto, com a qual ficaremos mais
      familiarizados com a prática, ao longo do desenvolvimento do projeto.




                                                          Título da Apresentação
Curso Java Básico


O ambiente Eclipse

   Editor de Textos (2)
      o editor de textos do Eclipse denota as palavras-chave de Java™ em
      letras destacadas para facilitar a leitura do código;
      esta é uma das funcionalidades mais utilizadas nesta ferramenta,
      possuindo um número expressivo de facilidades, ilustradas nas
      situações seguintes.




                                                        Título da Apresentação
Curso Java Básico


O ambiente Eclipse

   Editor de Textos (2)
      Função Autocompletar
          Suponha que estejamos escrevendo o método “transferir” de uma
          classe Conta
          este método é composto de uma chamada ao método “debitar” e
          outra chamada ao método “creditar”, como podemos na definição
          abaixo:




                                                       Título da Apresentação
Curso Java Básico


O ambiente Eclipse

   Editor de Textos (2)
          durante a implementação deste método, quando digitarmos o
          nome de alguma variável que denote um objeto e o ponto para
          chamada de método, o editor de textos do Eclipse nos mostrará
          uma janela com uma relação completa de todos os métodos e
          atributos que este objeto pode acessar em seu contexto, e a
          medida em que escrevermos as letras, ele filtrará tudo o que
          puder ir sendo descartado, como ilustra a imagem abaixo.




                                                         Título da Apresentação
Curso Java Básico


O ambiente Eclipse

   Editor de Textos (2)
      Detecção de erros de sintaxe
          uma grande funcionalidade das principais IDEs atuais é a
          detecção de erros de compilação em tempo de implementação;
          o editor de textos do Eclipse, ao perceber um erro de sintaxe (e
          até alguns poucos erros de lógica), imediatamente destaca o
          trecho que ele supõe estar errado, além de indicar as possíveis
          causas do erro e sugerir algumas soluções;
          como podemos ver na figura seguinte, ele sublinha o trecho e
          errado e marca as linhas que apresentam problema de sintaxe no
          lado direito da janela:
Curso Java Básico


O ambiente Eclipse
Curso Java Básico


O ambiente Eclipse

   Editor de Textos (2)
      Indicação de Escopo de Blocos de Código
          O editor também separa os trechos de código contido entre
          chaves, no lado esquerdo da janela, em azul.
          Podemos clicar nos triângulos azuis para exibir/esconder trechos
          entre chaves, facilitando a visualização do arquivo e sua
          navegação.
      Por último, o editor do eclipse nos poupa bastante tempo de pesquisa
      em documentação de classes nas APIs das mesmas com um recurso
      muito simples e interessante.
          Ao mantermos o mouse por cima de nomes de classe ou
          métodos, uma caixa de texto aparecerá na tela com toda a
          documentação da classe / método em questão. A figura seguinte
          exemplifica essa funcionalidade.
                                                         Título da Apresentação
Curso Java Básico


O ambiente Eclipse




                                         Título da Apresentação
Curso Java Básico


O ambiente Eclipse

   Console (3)
      o Eclipse oferece um terminal de console para a entrada de dados do
      teclado pela stream de entrada padrão e a saída de dados que o
      programa escreve na stream de saída padrão.
   Outline (4)
      a janela Outline funciona semelhantemente ao Package Explorer,
      sendo que voltada para a estrutura interna do seu arquivo .java -
      frequentemente a sua classe;
      existem ícones diferentes para cada parte do arquivo.




                                                          Título da Apresentação
Curso Java Básico


O ambiente Eclipse

   Criando um projeto
      primeiramente clique em
      File > New > Project;
      um wizard de criação de
      projetos aparecerá;




                                                    Título da Apresentação
Curso Java Básico


O ambiente Eclipse

   Criando um projeto
      em seguida, selecione a
      opção
      Java > Java Project;
      clique em Next.
      A seguinte tela irá aparecer:




                                                   Título da Apresentação
Curso Java Básico


O ambiente Eclipse

   Criando um projeto
      digite um nome para o seu projeto;
      se você quiser criar o projeto em um diretório diferente do workspace:
         marque a opção quot;Create project at external locationquot;;
         especifique o diretório onde o projeto será ser armazenado;
      marque também a opção “Create separate source and output folders”
      na caixa “Project Layout”. Essa opção permite que você não misture
      os arquivos que contém o código-fonte(source) com os arquivos
      gerados pelo compilador(output ou saída) , criando pastas diferentes
      para cada um desses tipos de arquivos;
      clique em Next.


                                                           Título da Apresentação
Curso Java Básico


O ambiente Eclipse

   Criando um projeto
      agora      você   terá    a
      oportunidade de escolher os
      diretórios do source e de
      saída;
      para deixar os valores
      default clique em Finish, ou
      então altere os valores de
      acordo        com        sua
      conveniência.
      possívelmente    aparecerá
      uma janela pedindo para
      confirmar uma mudança de
      perspectiva. Se aparecer,
      clique em quot;Yesquot;.
                                                  Título da Apresentação
Curso Java Básico


O ambiente Eclipse

   Criando uma classe
      agora, seu projeto já está
      criado, mas ainda não
      possui nenhuma classe;
      para criar uma classe,
      clique em
      File > New > Class
      a seguinte tela aparecerá:




                                                   Título da Apresentação
Curso Java Básico


O ambiente Eclipse

   Criando uma classe
      a parte superior da janela dá algumas indicações sobre o
      preenchimento - como campos obrigatórios, a sugestão de usar inicial
      maiúscula para nomes de classes, etc;
      em quot;Source Folderquot;, determine de que projeto sua classe fará parte e
      a localização do arquivo .java;
      selecione o nome da sua classe no campo quot;Namequot;;
      opcionalmente você pode pré-determinar os modificadores de acesso
      da sua classe e deixar prontos os esqueletos de alguns métodos, no
      campo Modifiers e nos campos abaixo de “Which method stubs would
      you like to create?”
      escolha quot;public static void main(String[] args)quot; – o método principal já
      será defido na classe;
                                                             Título da Apresentação
Curso Java Básico


O ambiente Eclipse

   Criando uma classe
      clique em Finish.
      sua classe será criada e aparecerá como a imagem seguinte.




                                                        Título da Apresentação
Curso Java Básico


O ambiente Eclipse

   Utilização de bibliotecas
      para adicionar uma
      biblioteca externa ao
      projeto:
          clique com o botão
          direito sobre a
          pasta do projeto no
          Package Explorer;
          selecione a opção
          Properties.
          a seguinte janela
          surgirá:


                                                    Título da Apresentação
Curso Java Básico


O ambiente Eclipse

   Utilização de bibliotecas
      no menu da esquerda, selecione a opção Java Build Path (como está
      selecionado na figura).
      A parte da direita mudará para mostrar o que está na figura;
      selecione a aba Libraries para visualizar as bibliotecas utilizadas pelo
      seu projeto. Provavelmente você poderá ver a biblioteca JRE System
      Library, que é a biblioteca padrão que vem com o JDK instalado na sua
      máquina, e que praticamente todo projeto Java deve utilizar;
      para adicionar mais bibliotecas, clique no botão Add External JARs (Java
      ARchives ou, extra-oficialmente, Java Application Resources, o último
      menos usado);
      por último, selecione o caminho da biblioteca a ser adicionada e clique
      em Open.
                                                         Exemplo 2
                                                           Título da Apresentação
Curso Java Básico


Características da linguagem

   Todos os programas Java possuem quatro elementos básicos:
      Pacotes;
      Classes;
      Métodos;
      Variáveis.




                                                       Título da Apresentação
Curso Java Básico


Características da linguagem

   Pacotes
      as classes que compõem o núcleo de funcionalidades Java estão
      organizadas em pacotes;
      um package Java é um mecanismo para agrupar classes de finalidades
      afins ou de uma mesma aplicação;
      além de facilitar a organização conceitual das classes, o mecanismo de
      pacotes permite localizar cada classe necessária durante a execução da
      aplicação;
      no entanto, a principal funcionalidade de um pacote Java é evitar a
      explosão do espaço de nome, ou seja, classes com o mesmo nome em
      pacotes diferentes podem ser diferenciadas pelo nome completo,
      pacote.classe.


                                                         Título da Apresentação
Curso Java Básico


Características da linguagem

   Entre os principais pacotes oferecidos como parte do núcleo Java estão:
      java.lang;
      java.util;
      java.io;
      java.net.
   Pacotes contêm classes e duas outras entidades de Java que veremos
   posteriormente: exceções e interfaces;
   Um package é uma coleção de classes e interfaces relacionadas fornecendo
   proteção de acesso e gerenciamento de nomes de diretórios.
   Usamos a declaração import para acessar essas classes.
   Se a declaração import não for utilizada e desejarmos utilizar alguma classe
   externa, será necessário colocar o caminho da classe a cada acesso.
                                                            Título da Apresentação
Curso Java Básico


Características da linguagem

   Exemplo:
            import java.lang.*;
   O asterisco no final diz ao compilador para importar todas as classes do
   pacote java.lang.
   Esse é um dos vários pacotes incluídos na API.
   O compilador Java define implicitamente um pacote para as classes no
   diretório atual e o importa implicitamente.
   Esse é o motivo porque não precisamos colocar explicitamente as classes
   que escrevemos em um pacote.
   Para colocarmos uma classe em um pacote, deve-se inserir a diretiva
   package com o nome do pacote no início da classe.


                                                        Título da Apresentação
Curso Java Básico


Características da linguagem

   Estrutura de um código Java
   Como todas linguagem de programação, Java possui um formato básico para a
   escrita de códigos. Tal formato é demonstrado abaixo:

   1 // Duas barras significam comentário
   2 /* comentários também podem seguir o formato de C++ */
   3
   4 public class NomeDoPrograma
   5 {
   6 // O método main indica que o código Java pode ser executado
   7       static public void main(String[] args)
   8       {
   9       // aqui virão os comandos
   10      }
   11 }

                                                             Título da Apresentação
Curso Java Básico


Características da linguagem

   Compreendendo o código Java
      linhas 1 e 2: representam comentários. Um comentário pode conter
      qualquer informação relevante ao comportamento do programa, autor,
      versão, etc;
      linha 3: está em branco, pois Java permite linhas em branco entre os
      comandos;
      linha 4: é a declaração do quot;nome do programaquot;, que é case-sensitive
      (existe diferença entre maiúsculas e minúsculas). O arquivo que contém
      o código Java deve ser salvo com o mesmo nome que aparece após a
      declaração public class e mais a extensão .java (o exemplo acima
      deveria ser salvo como NomeDoPrograma.java).




                                                          Título da Apresentação
Curso Java Básico


Características da linguagem

   Compreendendo o código Java
      linhas 5 e 8: a abertura de chave { indica início de bloco;
      linha 8: essa linha indica à Java Virtual Machine que o programa será
      executado. Os demais programas não conterão o método main();
      Quando um programa Java é executado, o interpretador da JVM executa
      os comandos que estiverem dentro do bloco indicado pelo método quot;static
      public void main(String)quot;.
      linha 9: aqui seria escrito o código propriamente dito;
      linhas 10 e 11: o fechamento de chave } indica fim de bloco.




                                                                Título da Apresentação
Curso Java Básico


Características da linguagem

   Compilando e Executando
   a seguir, apresentaremos um exemplo de criação, compilação e execução
   de um programa Java, sem o uso de uma IDE, utilizando apenas os
   programas da JSDK.
      1- Crie o arquivo HelloWorld.java em um diretório qualquer com o
      seguinte conteúdo:

      public class HelloWorld {
          public static void main (String args[])
          {
               System.out.println(quot;Hello World!quot;);
          }
      }
   Configurar variáveis de ambiente – referência artigo
   http://www.guj.com.br/java.tutorial.artigo.12.1.guj
                                                          Título da Apresentação
Curso Java Básico


Características da linguagem

   Compilando e Executando
      2 - Chame o compilador Java para este arquivo:

         $ javac HelloWorld.Java


      3- Seu diretório deve ter recebido um novo arquivo após essa
      compilação:

         HelloWorld.class




                                                          Título da Apresentação
Curso Java Básico


Características da linguagem

   Compilando e Executando
      4 - Chame o interpretador Java para este arquivo (omita a extensão
      .class do arquivo):

         $ j ava HelloWorld


      5- Observe o resultado na tela:

      Hello World!




                                                          Título da Apresentação
Curso Java Básico

Estrutura da linguagem

   Comentários
      Qualquer informação especificada entre os caracteres de comentário
      será ignorada pelo compilador;
      Os comentários em Java podem ser por linha ou em bloco:
         por linha:

         // isto é um comentário e inicia com duas barras.
             int valor; // e pode estar no final da linha

         em bloco:

         /*   Comentário em bloco
              Aceita múltiplas linhas
              Não utilize comentários aninhados
         */                                              Título da Apresentação
Curso Java Básico

Estrutura da linguagem

   Comentários
      As regras que tratam dos comentários em Java são:
         comentários não podem ser aninhados;
         não podem ocorrer dentro de strings ou literais;
         as notações /* e */ não tem significado dentro dos comentários //;
         a notação // não tem significado dentro dos comentários /* e /**.




                                                            Título da Apresentação
Curso Java Básico

Estrutura da linguagem

   Comentários javadoc
      É tipo especial de comentário, utilizado para gerar documentação da API
      do código Java.


         /** isto é um comentário para geração de javadoc
         */




                                                          Título da Apresentação
Curso Java Básico

Estrutura da linguagem

   Identificadores
      Identificadores são usados para determinar nomes de variáveis, atributos
      de classe ou de instância, parâmetros e métodos;
      Os identificadores em Java iniciam com:
          uma letra;
          um sublinhado (_ );
          ou um sinal de dólar quot;$quot;;
      Podem possuir números após o primeiro caractere da palavra;
      Pela premissa de ser case-sensitive existe uma diferenciação entre
      letras maiúsculas e minúsculas.



                                                          Título da Apresentação
Curso Java Básico

Estrutura da linguagem

   Convenções para Identificadores
      na linguagem Java é utilizada a seguinte convenção para formação de
      identificadores:
          constantes com todas as letras em maiúsculo: CONSTANTE
          variáveis e métodos começam com letra minúscula: variável
          classes e interfaces começam com letra maiúscula: Classe
          se o identificador for um nome composto por mais de uma palavra, cada
          nova palavra começa com letra maiúscula:

                  exemplo: variávelComNomeComposto
Curso Java Básico

Estrutura da linguagem

   Tipos Primitivos
      no Java, todos os objetos necessitam ter seu tipo especificado.
      existem 8 tipos primitivos em Java;
      seis deles são numéricos, um é o caractere e o outro é o booleano;
      os tipos Array e String não são tipos primitivos, são Classes e serão
      tratados a seguir.




                                                            Título da Apresentação
Curso Java Básico

Estrutura da linguagem

   Tipos Numéricos Inteiros
      os tipos inteiros guardam valores numéricos sem parte fracionária.
          Tipo      Tamanho      Faixa de Valores
          int       4 bytes      -2.147.483.648 até
                                 2.147.483.647
          short     2 bytes      -32.768 até 32.767
          byte      1 byte       -128 até 127
          long      8 bytes      -9.223.372.036.854.775.808 até
                                 9.223.373.036.854.775.807
      na maioria das ocasiões, o tipo int é suficiente;
      não se pode esquecer que como Java é portável, esses valores são os
      mesmos para qualquer plataforma de hardware.


                                                                  Título da Apresentação
Curso Java Básico

Estrutura da linguagem

   Tipos Numéricos de Ponto Flutuante
      os tipos primitivos que representam valores numéricos com ponto
      flutuante:
             Tipo     Tamanho     Faixa de Valores
             float    4 bytes     +/- 3.40282347E+38F
                                 (aproximandamente 7 dígitos
                                  significativos)
             double   8 bytes     +/- 1.79769313486231570E+308
                                 (15 dígitos significativos)

      normalmente utilizamos o double na maioria das situações onde é
      necessária a representação desse tipo de número, pois sua precisão é
      maior;
      números do tipo float aparecem com um sufixo F. (3.04F).
      se o número aparecer sem o F, ele é considerado double. da Apresentação
                                                        Título
Curso Java Básico

Estrutura da linguagem

   Tipo caractere
      O tipo char serve para representar apenas uma letra ou número.

          Tipo      Tamanho   Faixa de Valores
          char      2 bytes    0 até 65536


      Esse tipo serve para representar caracteres usando a tabela Unicode;
      Dessa tabela faz parte a tabela ASCII e mais alguns caracteres
      especiais.
      O tipo char é sempre representado por aspas simples (‘h’).
      Caracteres representados por aspas duplas (“h”) na verdade são Strings.
Curso Java Básico

Estrutura da linguagem

   Tipo booleano
      o tipo booleano pode assumir apenas dois valores, true ou false. Esse
      tipo é usado apenas para testes lógicos.


          Tipo      Tamanho    Faixa de Valores
          boolean   1 bit      true ou false
Curso Java Básico

Estrutura da linguagem

   Valores Padrão
      abaixo segue uma lista com os valores padrões de todos os tipos
      primitivos, sendo que não é necessário inicializar as variáveis com esses
      valores, a máquina virtual cuidará desse trabalho.

                     Tipo      Valor
                     byte      0
                     short     0
                     int       0
                     long      0
                     float     0.0
                     double    0.0
                     boolean   false
                     char      u0000

                                                           Título da Apresentação
Curso Java Básico

Estrutura da linguagem

   String
      String é uma classe que manipula cadeias de caracteres;
      incluída no pacote java.util;
      possui métodos para essas manipulações;
      a representação de um String é feita por um conjunto de caracteres entre
      aspas.
      Exemplo:
            String str = “Isto é uma String do Java”;
              String str = “”; //uma string vazia
                Concatenação de Strings
                String uniao = “use o sinal de + para ” + “concatenar Strings”;

                                                         Exemplo 3
                                                           Título da Apresentação
Curso Java Básico

Estrutura da linguagem

   Métodos da Classe java.lang.String
      a classe java.lang.String possui muitos métodos;
      abaixo apresentamos os mais significativos:
         charAt(int indice)
             retorna o caractere na posição especificada

         int compareTo(String outraString)
             retorna um valor negativo se a string vier antes de outraString
            na ordem do dicionário, um valor positivo se outraString vier
            antes e 0 (zero) caso forem iguais
         boolean endsWith(String sufixo)
             retorna true se a string terminar com sufixo
                                                            Título da Apresentação
Curso Java Básico

Estrutura da linguagem

   Métodos da Classe java.lang.String
      boolean equals(String outra)
          retorna true se a string for igual à outra
      boolean equalsIgnoreCase(String outra)
          retorna true se a string for igual à outra, ignorando maiúsculas e
          minúsculas
      String toLowerCase()
          retorna uma nova string convertendo maiúsculas para minúsculas
Curso Java Básico

Estrutura da linguagem

   Métodos da Classe java.lang.String
      String toUpperCase()
          retorna uma nova string convertendo minúsculas para maiúsculas
      String trim()
          elimina espaços iniciais e finais




                                                  Exemplos 4 e 5
                                                        Título da Apresentação
Curso Java Básico

Estrutura da linguagem

   StringTokenizer
      “Quando você lê uma frase, sua mente divide a frase em palavras
      individuais ou tokens...” Deitel&Deitel
      Tokens são separados entre si por delimitadores (espaços em branco,
      tabulação, nova linha e retorno de carro);
      Pertence ao pacote java.util;




                                                      Título da Apresentação
Curso Java Básico

Estrutura da linguagem

   StringTokenizer
      Há três construtores possíveis:
         o construtor que aceita um argumento String, utilizará o string
         delimitador padrão “ntr”;
         aquele que aceita dois argumentos String: o segundo String é o
         String delimitador;
         a versão que aceita três argumentos, o segundo String é o string
         delimitador e o terceiro argumento (um boolean) determina se os
         delimitadores também são retornados como tokens (somente se o
         argumento for true).




                                                       Exemplo 6
                                                           Título da Apresentação
Curso Java Básico

Estrutura da linguagem

   Array
      um array tipo de dados utilizado para armazenar um grupo de
      informações semelhantes;
      arrays são tipos indexados de dados que permitem a representação de
      agrupamento de dados como vetores e matrizes;
      todos os itens de um array devem ser do mesmo tipo em tempo de
      compilação.
      o código para declarar o array é:
              int nums[10];




                                                      Título da Apresentação
Curso Java Básico

Estrutura da linguagem

   Array
      arrays são inicializados com o uso do operador new;
      pense em cada elemento do array como um objeto distinto;
      o tipo mais simples de array é um array de dimensão de um tipo
      primitivo, por exemplo, um int.;
      o código para criar e inicializar o array é:
           int nums[ ] = new int [5];
      os colchetes depois do identificador nums, dizem ao compilador que
      nums é um array;
      o operador new instancia o array e chama o construtor para cada
      elemento;
      o construtor é do tipo int e pode conter cinco elementos.
                                                            Título da Apresentação
Curso Java Básico

Estrutura da linguagem

   Array
      arrays podem ser multimensionais;
      durante a instanciação, um array multidimensional deve ter pelo menos
      uma de suas dimensões especificadas;
      a seguir, exemplos de como criar um array bidimensional:
             int [ ][ ] numlist = new int [2][];
             int lista[ ][ ] = new int[5][5];




                                                         Título da Apresentação
Curso Java Básico

Estrutura da linguagem

   Array
      arrays podem ser inicializados na hora da criação, colocando-se os
      valores inicias desejados entre chaves {};
      não é necessário especificar o tamanho – Java irá inicializar o array com
      o número de elementos especificados.
      Exemplo:
            int nums[ ] = {1, 2, 3, 4, 5};
              int nums[ ][ ] = {(1,1), (2,2), (3,3), (4,4), (5,5)};




                                                                 Título da Apresentação
Curso Java Básico

Estrutura da linguagem

   Array
      os arrays podem ser indexados por um valor byte, short, int ou char;
      não se pode indexar arrays com um valor long, ponto flutuante ou
      booleano;
      se precisar usar um desses tipos deve-se fazer uma conversão explícita;
      os arrays são indexados de zero até o comprimento do array menos um.




                                                       Exemplo 7
                                                           Título da Apresentação
Curso Java Básico

Estrutura da linguagem

   Operador de Atribuição
      a atribuição é feita através do operador “=”:
          <identificador> = <valor>;
      Exemplos: (na declaração da variável)
            float umFloat = 0.5;
            char caracter = ‘i’;
      Exemplos: (após declaração da variável)
              idade = 18;
              existe = true;




                                                      Título da Apresentação
Curso Java Básico

Estrutura da linguagem

   Operadores Aritméticos
      operadores aritméticos são aqueles que efetuam operações aritméticas
      em um ou mais tipos primitivos.

          Operador    Nome             Exemplo
          +           Adição           23+29
          -           Subtração        29-23
          *           Multiplicação    0.5 * salario
          /           Divisão          100/42
          %           Módulo           57%5




                                                       Exemplo 8
Curso Java Básico

Estrutura da linguagem

   Operadores Relacionais
      os operadores relacionais utilizados para formar expressões
      condicionais, utilizados em testes e condições de entrada em um fluxo
      do programa.

           Operador    Nome             Exemplo
           ==          Igual            10 == 10
           !=          Diferente        3 != 2
           <           Menor            4 < 10
           >           Maior            10 > 6
           >=          Maior ou igual   3 >= 3
           <=          Menor ou igual   5 <= 6


                                                    Exemplo 9
                                                        Título da Apresentação
Curso Java Básico

Estrutura da linguagem

   Operadores Lógicos
      os operadores lógicos, assim como os relacionais, são utilizados para
      formar expressões condicionais, utilizados em testes e condições de
      entrada em um fluxo do programa.

        Operador      Nome            Exemplo
        &&            AND             (0 < 2) && ( 10 > 5)
        ||            OR              ( 10 >11 ) || (10 < 12 )
        !             NOT             !( 1= = 4 )
        ^             XOR             ( 1!= 0) ^ ( 3< 2 )
        ?:            Condicional     3>2?             (comando):
                                      (comando)


                                                       Exemplo 10
                                                            Título da Apresentação
Curso Java Básico

Estrutura da linguagem

   Atribuição Composta
      para facilitar a programação, Java oferece um tipo de atribuição
      chamada atribuição composta, que pode ser formada com operadores
      aritméticos ou lógicos;
      Exemplos:
            a += b;      // Equivalente a: a = a + b;
            a *= 3;      // Equivalente a: a = a * 3;




                                                        Título da Apresentação
Curso Java Básico

Estrutura da linguagem

   Incremento e Decremento
      o incremento é dado pelo operador ++ e o decremento pelo operador --.;
      este decremento ou incremento pode ser feito antes ou depois da
      utilização da variável;
         colocando–se antes (++var), será realizado o incremento ou
         decremento e depois o valor da variável será utilizado;
         ao contrário (var++), o operador após a variável, faz com que o valor
         da variável seja utilizado primeiro e o incremento ou decremento seja
         feito depois.
         Exemplos:
               i++;      //Equivalente a:   i = i +1;
               --i;      //Equivalente a:   i = i -1;


                                                        Exemplo 11
                                                           Título da Apresentação
Curso Java Básico

Estrutura da linguagem

   Precedência dos Operadores
      a tabela abaixo apresenta os operadores em ordem decrescente de
      precedência, isto é, o que está mais acima ocorre antes:

                            ++     -- !
                            * / %
                                 + -
                            <> <= >=
                             == !=
                                  ^
                                 &&
                                  ||
                     = *=   /=    %= +=   -=
                                                   Título da Apresentação
Curso Java Básico

Estrutura da linguagem

   Comandos de Fluxo
      a maioria dos programas tomam decisões que afetam seu fluxo;
      as declarações que tomam essas decisões são chamadas de comandos
      de controle de fluxo.




                                                        Título da Apresentação
Curso Java Básico

Estrutura da linguagem

   Comandos de Fluxo: Comandos de Decisão
      if...else
          executa, condicionalmente, um bloco de comandos, dependendo do
          valor de uma expressão;
          Sintaxe:
        if (condição) {bloco de comandos} [else {bloco de comandos} ]
          Exemplo:
                if ( fim == true )
                      System.out.println(“Término!”);
                else System.out.println(“Continuando...”);




                                                       Título da Apresentação
Curso Java Básico

Estrutura da linguagem

   Comandos de Fluxo: Comandos de Decisão
      if...else
          para mais de um comando ser executado depois da declaração,
          utiliza-se o conceito de blocos, delimitados por { };
          Exemplo:
                if ( fim == true ){
                      cont = 0;
                      System.out.println(“Término!”);
                }
                else {
                      cont = cont +1;
                System.out.println(“Continuando...”);
                      }

                                                   Exemplo 12
                                                        Título da Apresentação
Curso Java Básico

Estrutura da linguagem

   Comandos de Fluxo: Comandos de Decisão
      Operador Condicional ?:
         uma alternativa para o comando if...else é a utilização do operador
         condicional “?:”;
         ele é o único operador ternário do Java;
         sintaxe:
             (expressão lógica) ? expressão 1 : expressão 2;
         caso a expressão booleana retorne um valor verdadeiro (true), a
         expressão 1 é executada; caso retorne um valor falso (false), a
         expressão 2 é executada.




                                                        Título da Apresentação
Curso Java Básico

Estrutura da linguagem

   Comandos de Fluxo: Comandos de Decisão
      Operador Condicional ?:
         Exemplo:

             int total = (salario < 1000) ? salario : salario – desconto;
         no exemplo acima, se a variável salario for menor que 1000, é
         atribuído o valor de salario a variável total, mas se a variável salário
         for maior ou igual a que 1000, a variável total recebera o valor da
         variável salário menos a variável desconto.




                                                            Título da Apresentação
Curso Java Básico

Estrutura da linguagem

   Comandos de Fluxo: Comandos de Decisão
      switch
         a instrução switch é utilizada quando precisamos selecionar uma
         ação dentro de um número de possibilidades;
         switch executa um, de vários grupos de comandos, dependendo de
         uma expressão inteira;
         a expressão de comparação do switch deve ser um char, um byte,
         um short ou um int;
         não é permitido outro tipo primitivo ou objeto;
         o valor resultante da expressão inteira é comparado com cada um
         dos itens constantes nas cláusulas case;
         a ordem em que as cláusulas aparecem é importante, visto que a
         comparação é feita seqüencialmente;
         uma cláusula opcional default pode aparecer no final do comando.
                                                           Título da Apresentação
Curso Java Básico

Estrutura da linguagem

   Comandos de Fluxo: Comandos de Decisão
      switch
         sintaxe:
                    switch ( expressão_teste ) {
                        [case expressão constante 1:
                           comandos]
                        ...
                        [default: comandos;]
                    }




                                                       Título da Apresentação
Curso Java Básico

Estrutura da linguagem

   Comandos de Fluxo: Comandos de Decisão
      switch
         Exemplo:
         switch ( diaSemana ){

               case 1: System.out.println(“Hoje é segunda-feira”);

                break;

               case 2: System.out.println(“Hoje é terça-feira ”);

                     break;            ...

               case 7: System.out.println(“Hoje é domingo”);

                     break;

               default: System.out.println(“Opção inválida!”); }
                                                                     Exemplo 13
                                                                     Título da Apresentação
Curso Java Básico

Estrutura da linguagem

   Comandos de Fluxo: Comandos de Decisão
      while
         executa um bloco de comandos enquanto uma condição for
         verdadeira;
         é a mais simples das estruturas de repetição (ou loop), onde a
         expressão de comparação é avaliada antes que o laço seja
         executado;
         utilizada quando não se quer que o corpo do laço seja
         necessariamente executado;
         Sintaxe:
                 while (expressão booleana) { bloco de comandos; }
         Exemplo:
                while ( i != 0 ){
                    salario = salario * 0.5;
                    i--;       }                          Exemplo 14
Curso Java Básico

Estrutura da linguagem

   Comandos de Fluxo: Comandos de Decisão
      do...while
         executa um bloco de comandos enquanto uma condição for
         verdadeira;
         a expressão de comparação é avaliada depois que o laço for
         executado;
         utilizada quando se quer que o corpo do laço seja necessariamente
         executado;
Curso Java Básico

Estrutura da linguagem

   Comandos de Fluxo: Comandos de Decisão
      do...while
         Sintaxe:
                 do { bloco de comandos; }
                 while (expressão booleana);

             Exemplo:
                 do {
                     salario = salario * 0.5;
                     i--;
             } while ( i != 0 );




                                                  Exemplo 15
                                                  Título da Apresentação
Curso Java Básico

Estrutura da linguagem

   Comandos de Fluxo: Comandos de Decisão
      for
            repete um grupo de comandos em um número específico de vezes;
            fornece uma expressão para inicializar as variáveis, seguida por uma
            expressão de comparação e depois um lugar para incrementar ou
            decrementar as variáveis de laço;
            a declaração pode ser um comando simples ou um bloco de
            comandos;
            Sintaxe:
                    for (inicialização; terminação; incremento)
                    { bloco de comandos; }
            Exemplo:
                  for (i = 0; i < 20; i ++)
                      salario = salario * 0.5;
                                                            Título da Apresentação
Curso Java Básico

Estrutura da linguagem

   Comandos de Fluxo: Comandos de Decisão
      for
            a seção de inicialização é executada uma única vez, quando se entra
            no laço;
            a inicialização pode ser vazia se a variável da condição já tiver sido
            inicializada antes do laço;
            a seção de terminação é uma expressão lógica que é verificada no
            início de cada uma das iterações do laço;
            a terminação também pode ser vazio, caso onde precisaríamos de
            uma instrução break para sair do laço;
            a seção de incremento é uma expressão (ou expressões separadas
            por vírgula) que é executada em cada iteração do laço;
            não é obrigatório que essa expressão esteja relacionada com o
            controle do laço; o incremento também pode ser vazio.
                                                               Título da Apresentação
Curso Java Básico

Estrutura da linguagem

   Comandos de Fluxo: Comandos de Decisão
      for
            na versão 5, o java ampliou a utilização do comando for, agora com
            sintaxe simplifica e normalmente chamado de quot;for estendidoquot;
            Exemplo:
                  ...
                  int[] mat = { 3, 4, 5, 6 };
                  for( int x:mat ) {
                       System.out.println( x );
                  }
            o laço estendido cria a variável de controle interna para percorrer um
            conjunto (vetor ou Coleções, que veremos adiante)
            a cada iteração um valor do conjunto é passado para a variável x e
            executado o bloco de instruções.
                                                              Exemplo 16
                                                              Título da Apresentação
Curso Java Básico

Estrutura da linguagem

   Comandos de Fluxo: Comandos de Decisão
      break
         o comando break desvia o fluxo de execução de um programa para o
         fim de um laço ou de uma instrução switch;
         utilizada para sair de um laço antes do normal;
         o laço irá encerrar independentemente de seu valor de comparação
         e a declaração após o laço será executada.
         Exemplo:
               int i = 0;
               while (true) {
                    System.out.println(i);
                    i++;
                    if ( i > 10 ) break;
               }
                                                           Exemplo 17
                                                           Título da Apresentação
Curso Java Básico

Estrutura da linguagem

   Comandos de Fluxo: Comandos de Decisão
      continue
         o comando continue desvia o fluxo de execução de um laço para o
         próxima iteração, abandonando a iteração em que se encontra;
         Exemplo:
            for (int i = -10; i<10; i++)
            {
                if ( i == 0 )
                      continue;
                System.out.println(1/i);
            }



                                                       Exemplo 18
                                                       Título da Apresentação
Curso Java Básico

Estrutura da linguagem

   Comandos de Fluxo: Comandos de Decisão
      return
         comando utilizado para transferir controle entre métodos;
         retorna informações de métodos, encerrando a execução e
         retornando para o local de onde o método foi chamado;
         Sintaxe:
                 return valor;
         exemplo:
                class Teste{
                    public int Potencia ( int base, int n){
                    int result = base;
                    for ( int i = 0; i < n-1; i ++ )
                         result = result * base;
                    return result; }
                }                                          Exemplo 19
                                                          Título da Apresentação
Curso Java Básico

Classes em Java

   O desenvolvimento de aplicações Java sempre é feito através de classes.
   Uma aplicação Java sempre terá a seguinte estrutura:

      class NomedaClasse
      {
          // Atributos
          // Métodos

          public static void main( String args[] )
          {
             //corpo principal do programa
          }
      }




                                                          Título da Apresentação
Curso Java Básico

Classes em Java

   Uma aplicação em Java é caracterizada por possuir o método main();
   O método main é o método chamado pelo interpretador Java quando
   executado;
   A declaração do método main deve ser:
      public static void main( String args[] )
      ou public static void main(String... args) (desde 1.5)
       define um método de acesso público (public), sem retorno (void), que
     recebe como parâmetro um array de strings de tamanho indefinido
     representado pela variável args (onde são passados os argumentos da
     linha de comando para a aplicação)
      a única alteração que pode ser feita é no nome do array (args).


                                                               Título da Apresentação
Curso Java Básico

Classes em Java

   Classes e Objetos
       classe é uma descrição de algo existente no domínio do problema
     (aplicação);
      é usada na criação de múltiplos objetos;
      é a descrição dos dados (atributos) e do comportamento (métodos) de
     um objeto;
       um objeto é uma instância particular de um tipo de dado específico
     (classe);
      objeto é uma instância de uma classe;
      instanciar um objeto é criar seu espaço de memória e repassar um
     ponteiro para ele;



                                                           Título da Apresentação
Curso Java Básico

Classes em Java

   Classes e Objetos
      quando um objeto é criado ele precisa ser inicializado, precisa ser
     carregado com a referência (o endereço) de um espaço de memória
     alocado para o seu armazenamento
      para uma única classe podemos ter vários objetos durante a execução
     de um programa.
       em um programa orientado a objetos temos muitos objetos se
     relacionando entre si;
      a interação entre objetos é feita através de mensagens;
      um objeto “chama” os métodos de outro, passando parâmetros quando
     necessário;
      a esta interação entre objetos chama-se troca de mensagens.

                                                           Exemplo 20
                                                           Título da Apresentação
Curso Java Básico

Classes em Java

   Classes e Objetos – Exercício 1
       Implemente o relacionamento quot;uma empresa possui vários endereçosquot;
     (um de cada filial). Os dados da empresa são:
    Nome, CNPJ e nome do dono. Os dados de cada um de seus endereços
      são: tipo de logradouro (AVENIDA, RUA, BECO), NÚMERO e CEP.




                                                       Título da Apresentação
Curso Java Básico

Classes em Java

   Métodos
       Um método descreve o comportamento de uma classe;
      Um método de uma classe tem a seguinte estrutura genérica:

   <visibilidade> <static> <tipo_retorno> <nome_método> (<parâmetros>)
   {
           // corpo ou escopo do método
   }
Curso Java Básico

Classes em Java

   Métodos
      <visibilidade> - é o modificador de acesso para o método, podendo
    ser:
        public – o método poderá ser acessado por qualquer classe.
        private - o método só poderá ser acessado dentro da mesma classe.
        default (package) – o método só poderá ser acessado dentro da
       própria classe ou por classes do mesmo pacote. Modificador utilizado
       por default, caso não seja especificado.
        protected – o método só poderá ser acessado por classes do
       mesmo pacote ou por subclasses (veremos isto em herança).
     <static> - modificador que define se o método é de classe (com static)
    ou de instância (sem static). Métodos de classe podem ser chamado sem
    a especificação de um objeto.

                                                         Título da Apresentação
Curso Java Básico

Classes em Java

   Métodos
      <tipo_retorno> - declaração do tipo de retorno do método, que pode
    ser qualquer um dos tipos primitivos, qualquer objeto ou o tipo void, que
    significa que o método não retorna valor algum.
      (<parâmetros>)
        um método pode ter zero ou mais argumentos, também chamados
       parâmetros;
        cada argumento indicará um pedaço da informação que deve ser
       passada ao método no momento de sua chamada;
        quando houver mais de um argumento, eles devem ser separados
       por vírgulas;
        caso o método não receba argumentos, os parênteses devem ser
       deixados vazios.

                                                           Título da Apresentação
Curso Java Básico

Classes em Java

   Métodos
      Em Java todos os argumentos são passados por valor;
      Não existe passagem por referência;
     Se o parâmetro for uma variável de tipo primitivo o valor da variável é
    passada no parâmetro e pode ser alterada dentro do método que não
    será refletido na variável externa;
     Com objetos o efeito é diferente, já que o valor passado no parâmetro do
    método é a referência para o objeto, ou seja, se um objeto for alterado
    dentro do método, o objeto externo também será alterado;




                                                           Exemplo 21
Curso Java Básico

Classes em Java

   Métodos
     No Java 5 foi introduzido o conceito de varargs, que permite a passagem
    de um número variável de argumentos a um método;
        Dentro do método os argumentos variáveis são tratados como arrays
       do tipo que foi definido;
        No caso dos exemplos abaixo, um array de int (int[ ]) ou de String.
        Exemplo:
          ...
          void metodo( int... args ) {
              for( int i : args ) {
                    System.out.println( i );
              }
          }
          ...
          metodo( 1 );
          metodo( 1, 2, 3 );
Curso Java Básico

Classes em Java

   Métodos
         Esta funcionalidade alivia o trabalho de o desenvolvedor ter que criar
       arrays com valores e passar aos métodos.
      Algumas regras aplicadas aos métodos:                Exemplo 22
        métodos retornam, no máximo, um valor, podendo ser uma variável
       ou um objeto;
        se o tipo de retorno do método não for void, o corpo do método tem
       de ter um comando return;
         a passagem de parâmetros com tipo diferente dos parâmetros
       recebidos (assinatura do método) gera erro de sintaxe;
        um método não pode ser definido dentro de outro método;
         métodos devem ter sua função bem definida, para promover a
       reutilização de código.

                                                           Título da Apresentação
Curso Java Básico

Classes em Java

   Métodos – Exercício 2
          A partir das classes criadas no Exercício 1, declare dois método para
        impressão dos dados de um objeto empresa, sendo este passado
        como parâmetro para o método.
         Cada um dos métodos realiza a impressão em uma forma distinta de
        saída: pelo console e por meio de uma caixa de mensagem.
Curso Java Básico

Classes em Java

   Sobrecarga Métodos
      Exemplo:

        public class Empregado {
        ...
            public void defineCampo(int valor) {
                idade = valor;
            }
            public void defineCampo(String valor) {
                nome = valor;
            }
            public void defineCampo(int valor1, String valor2) {
                idade = valor1;
                nome = valo2;
            }
            ...
        }
Curso Java Básico

Classes em Java

   Sobrecarga Métodos
      Na hora da chamada de um dos métodos, o compilador Java escolhe o
     método correto baseado nos parâmetros fornecidos.
      Exemplo:
        ...
        Empregado emp = new Empregado();
        emp.defineCampo(20);
        emp.defineCampo(“Maria”);
        ...




                                                      Exemplo 23
Curso Java Básico

Classes em Java

   Sobrecarga Métodos – Exercício 3
      Crie uma classe que sobrecarregue um método que retorna o triplo de
     um número, sendo este um inteiro(int) ou um número fracionário (double
     ou float).
Curso Java Básico

Classes em Java

   Variáveis
    Variáveis são usadas em linguagens em geral para armazenar valores;
    Valores são passados para variáveis através de operações de atribuição
      atribuição de valores é feita através de literais
       Ex: int intQuantidadeAlunos = 14;
      atribuição de referências (endereços para valores) é feita através de
      operações de construção de objetos e, em dois casos, pode ser feita
      através de literais
       Ex: Conta contaClientePreferencial = new Conta();
            String s = quot;abcdequot;;
                                       Não são tipos primitivos,
            int[] v = {1, 2, 3};
                                     s e v são referências.
Curso Java Básico

Classes em Java

   Escopo de Variáveis
    Atributos de dados (declarados no bloco da classe): podem ser usados em
    qualquer lugar (qualquer bloco) da classe
     uso em outras classes depende de modificadores de acesso (public,
     private, etc);
     existem enquanto o objeto existir( ou enquanto a classe existir, se
     declarados static).
    Variáveis locais (declaradas dentro de blocos de procedimentos)
      existem enquanto o procedimento (método, bloco de controle de
      execução) estiver sendo executado;
      não pode ser usado fora do bloco;
      não pode ter modificadores de acesso (private, public, etc).
Curso Java Básico

Classes em Java
Curso Java Básico

Classes em Java

   Atributos

           modificadores         tipo       nome



                  private static String numero;


          private static final double LIMMITE_MAXIMO;

                           double saldo;

                   Private int numEstoque = 8;
Curso Java Básico

Classes em Java

   Atributos – Modificadores de Acesso
    Atributos public podem ser acessados (lidos, alterados) por objetos de
    qualquer classe.
    Atributos private só podem ser acessados (lidos, alterados) dentro da
    própria classe onde foi declarado.
     Atributos protected podem ser acessados (lidos ou alterados) de qualquer
    classe dentro do mesmo pacote ou qualquer sub-classe.
    Se um atributo não tem modificador de acesso associado então ele é
    considerado “friendly”. Só é visível para objetos de classes dentro do
    mesmo pacote.
    Atributos final, torna o atributo constante;
    Atributo não pode ser alterado depois de inicializado;
    Atributo static: variáveis de classe vs variáveis de objeto

                                                              Título da Apresentação
Curso Java Básico

Classes em Java
    Atributos de Objeto
class Conta {
String strNome;
String strCpf;
double dblSaldo;
double dblSaldoMinimo;
public Conta(double dblValorSaldoMinimo){
 dblSaldoMinimo = dblValorSaldoMinimo; }
public static void main(){
    Conta a = new Conta(100.00);
    Conta b = new Conta(200.00); }
                                                  Não utiliza o
                                                 modificador static
}
Curso Java Básico

Classes em Java
    Atributos de Classe
class Conta{
String strNome;
String strCpf;
double dblSaldo;
static double dblSaldoMinimo; }
class Banco {
public Banco(){
    Conta c = new Conta();
    Conta d = new Conta();}
}                                                  Uso do
                                               modificador static
… new Banco(); …
Curso Java Básico

Classes em Java

   Métodos construtores
      Métodos construtores são métodos especiais definidos com o mesmo
     nome da classe;
      Construtores são chamados automaticamente toda vez que um objeto
     da classe é criado;
        Os métodos construtores servem para inicializar as variáveis de
     instância de seus objetos e não possuem nenhum valor de retorno.




                                                     Título da Apresentação
Curso Java Básico

Classes em Java

   Métodos construtores
      Exemplo:

        // Classe com dois construtores
        public class Enmpregado{
             // Construtor padrão, sem parâmetros
             public Empregado() {
             }

            // Construtor para classe receber um inteiro e um String
            public Empregado(int valor1, String valor2) {
                int idade = valor1;
                String nome = new String;
                nome = valor2;
            }
            ...
        }                                              Título da Apresentação
Curso Java Básico

Classes em Java

   Métodos construtores
       Toda e qualquer classe do Java possui um construtor padrão, que não
     faz nada nem recebe parâmetros, e que só será chamado se nenhum
     construtor for definido.
      Quando uma classe possui mais de um método com o mesmo, mas com
     parâmetros diferentes diz-se que houve um sobrecarga de métodos.




                                                         Exemplo 24

                                                         Título da Apresentação
Curso Java Básico

Classes em Java

   Métodos construtores – Exercício 4
      Altere o Exercício 2, de forma que:
          Seja possível criar um objeto do tipo Empresa, já inicializando os
        atributos de um objeto desse tipo ou sem inicializar qualquer um
        desses atributos com valores especificados.
          Neste último caso, faça as modificações necessárias para que os
        atributos sejam inicializados de forma que as strings sejam
        inicializadas com a senteça “Campo não informadoquot;.
Curso Java Básico

Classes em Java

   Referência this
       Os métodos de instância de uma classe Java possuem um parâmetro
     implícito que se refere ao objeto atual sobre o qual o método foi chamado;
       Este parâmetro é referenciado pela palavra chave this, e é utilizado
     quando é necessário enviar a própria referência do objeto para uma
     rotina.




                                                            Exemplo 25

                                                            Título da Apresentação
Curso Java Básico

Classes em Java

   Modificadores de Classe
      Modificadores de acesso
         public
            Classes public podem ser instanciadas por qualquer objeto
       livremente.
              public class NomeClasse
        default (pacote)
         Classes sem modificador de acesso explícito, denomiado default, só
       podem ser instanciadas dentro da própria classe ou por classes do
       mesmo pacote.
              class NomeClasse
Curso Java Básico

Classes em Java

   Modificadores de classe
      Outros Modificadores
         final
           Classes final são classes que não permitem que você crie
       subclasses por herança delas.
               public final class NomeClasse
        abstract
           Classes abstract são classes que não permitem que um
       objeto as instancie, ou seja, serve para definir superclasses
       genéricas.
               public abstract class NomeClasse




                                                           Título da Apresentação
Curso Java Básico

Classes em Java

   Herança e Polimorfismo
      Conceitos Básicos de Herança
         Herança é a possibilidade de criar objetos a partir de outros já
       existentes.
         Herança é uma característica da programação orientada a objetos
       que permite que classes herdem e estendam as funcionalidades e as
       características de outras classes.
        Uma subclasse é uma especialização da sua superclasse.
          Subclasse é também chamada de classe derivada, classe
       descendente ou classe filha; superclasse é também chamada de
       classe pai.




                                                      Título da Apresentação
Curso Java Básico

Classes em Java

   Herança e Polimorfismo
      Conceitos Básicos de Herança
        Em Java, a herança é obtida através da palavra reservada extends
       seguida do nome da classe que está sendo estendida;
        Através da herança cria-se uma hierarquia de classes;
        Toda classe, por padrão, estende a classe java.lang.Object;
        Todos os métodos e atributos (public e protected) são herdados pela
       subclasse;
        Os construtores não são herdados;
         A palavra reservada super identifica métodos e atributos da
       superclasse;
        Em Java não é permitida herança múltipla, isto é, uma classe só pode
       estender uma e somente uma outra classe.
                                                         Título da Apresentação
Curso Java Básico

Classes em Java

   Herança e Polimorfismo
      Conceitos Básicos de Herança
        public class Primata {
              public Primata() { // método construtor
              }
              String nomeCientifico;
              public void setNomeCientifico(String nomeCientifico) {
              ...
              }
          }




                                                        Título da Apresentação
Curso Java Básico

Classes em Java

   Herança e Polimorfismo
      Conceitos Básicos de Herança
        public class Humano extends Primata{
              public Humano() { // método construtor
              }
              String nome;
              int idade;
              int numeroIdentidade;
              public void setNome(String nome) {
              ...
              }
              public void setIdade(int idade) {
              ...
              }                                        Título da Apresentação
Curso Java Básico

Classes em Java

   Herança e Polimorfismo
      Conceitos Básicos de Herança
        public void setNumeroIdentidade(int numeroIdentidade) {
               ...
               }
               ...
          }

          public class Homem extends Humano {
               public Homem() { // método construtor
               }
               String certMilitar;
              public void setCertMilitar(String certMilitar) {
                  ...
                  }
                  ...
              }
                                                                  Título da Apresentação
Curso Java Básico

Classes em Java

   Herança e Polimorfismo
      Conceitos Básicos de Herança
       public class Mulher extends Humano {
              public Mulher() {// método construtor

              }
              ...
          }




         No exemplo acima, a classe Homem (subclasse de Humano) possui
       todos os atributos e métodos da classe Humano (sua superclasse) e
       os atributos da classe Primata, superclasse da classe Homem.

                                                         Exemplo 26
                                                      Título da Apresentação
Curso Java Básico

Classes em Java

   Sobrescrita de Métodos
     Uma classe derivada (subclasse) recebe, através do mecanismo de
    herança, todos os métodos definidos na classe pai;
     Sobrescrever um método consiste em definir, na classe derivada, um
    método com a mesma assinatura (mesmos argumentos e tipo de retorno)
    de uma classe ascendente (classe pai em qualquer nível de herança);
     Esta funcionalidade permite que uma classe derivada altere um
    comportamento de um método herdado, sobrescrevendo-o;
     Com o sobrescrita, o método da superclasse fica escondido da
    subclasse podendo ser executado com a referência super;




                                                        Título da Apresentação
Curso Java Básico

Classes em Java

   Sobrescrita de Métodos
     Atenção para não confundir os conceitos de sobrescrita de métodos e
    sobrecarga de métodos;
         na sobrecarga tem-se métodos dentro da mesma classe que
       possuem o mesmo nome, mas com parâmetros diferentes;
         na sobrescrita tem-se métodos de classes da mesma hierarquia de
       derivação com o mesmo nome, mesmos parâmetros e mesmo tipo de
       retorno.




                                                          Exemplo 27
                                                        Título da Apresentação
Curso Java Básico

Classes em Java
   Sobrescrita de Métodos – Exercício 5
    Implemente a seguinte hierarquia:




    As Classes Forma, FormaBidimensional e as classes que herdam desta, têm um
    método sobrescrito para obter a área da forma correspondente. Inclua na definição
    de cada método a impressão da senteça “Calculando a área da forma X”, onde X é
    o nome da classe;
    De forma similar, cada FormaTridimensional deve ter métodos sobrescritos
    obterArea e obterVolume para calcular a área da base e a superfície,
    respectivamente, da forma tridimensional. Inclua na definição de cada método a
    impressão da senteça “Calculando a área/volume da forma X”, onde X é o nome da
    classe;
                                                               Título da Apresentação
Curso Java Básico

Classes em Java

   Polimorfismo
      Um objeto polimórfico é um objeto que pode ter formas diferentes,
    funcionalidades diferentes mas continua a pertencer a uma única classe;
       Java, permite que um objeto seja referido com uma variável que é do
    tipo de uma classe ascendeste (superclasses) , e a deteminação do
    comportamento do objeto (métodos a serem executados) será
    determinada em tempo de execução, dependendo do tipo de objeto
    instanciado;
     Isto é possível porque quando criamos uma referência a um tipo abstrato
    de dados, uma classe, o compilador Java considera que o objeto atribuído
    a essa referência será do tipo declarado e não do tipo usado para criar o
    objeto.



                                                         Título da Apresentação
Curso Java Básico

Classes em Java

   Polimorfismo
      Exemplo:
        class Forma {
            public void desenhar() {
                 System.out.println(quot;Formaquot;);
            }
        }

            class Circulo extends Forma {
             public void desenhar() {
                 System.out.println(quot;Círculoquot;);
            }
        }
                                                  Título da Apresentação
Curso Java Básico


Classes em Java

   Polimorfismo
     public class ExemploPolimorfismo {
            private static void desenha(Forma[] fs) {
               for (int i = 0; i < fs.length; i++)
                  fs[i].desenhar();
            }
            public static void main(String[] args) {
                Forma[] formas = new Forma[] {
                          new Circulo(), new Forma(),
                          new Quadrado(), new Triangulo()
                         };
                desenha(formas);        }
    }
                                                            Título da Apresentação
Curso Java Básico

Classes em Java

   O operador instanceof
     O operador instanceof é um mecanismo para determinar, em tempo de
    execução, se a classe de um objeto referenciado por uma variável é
    compatível com um determinado tipo de referência conhecido.
      a sintaxe do operador instanceof é a seguinte:

    variávelDoTipoReferencia instanceof NomeDaClasseConhecida;




                                                         Exemplo 28
                                                       Título da Apresentação
Curso Java Básico


Classes em Java

   O operador instanceof
      Ao executar o código do Exemplo 28, a saída será:
          objForma é compatível com o tipo Forma
          objCirculo é compatível com o tipo Forma
          objCirculo é compatível com o tipo Circulo
          objQuadrado é compatível com o tipo Forma
          objQuadrado é compatível com o tipo Quadrado

      Observe que o operador instanceof identifica a compatibilidade de tipos
    no que se refere ao mesmo tipo do objeto referenciado (compatibilidade
    identificada quando comparado o objCirculo com a classe Circulo, por
    exemplo) e na herança de classes e interfaces (compatibilidade
    identificada quando comparado o objCirculo com a classe Forma,
    supertipo de Circulo, por exemplo).

                                                          Título da Apresentação
Curso Java Básico


Classes em Java

   Interfaces
     Interfaces foram concebidas para criar um modelo de implementação de
    baixo acoplamento entre determinadas partes de um software;
     Uma interface é semelhante a uma classe, e descreve um aspecto de
    comportamento que várias classes podem possuir;
      Uma interface não possui atributos de instância nem métodos com
    implementação, mas pode possuir atributos de estáticos (finais de classe)
    e cabeçalhos de métodos (métodos abstratos) que deverão ser
    desenvolvidos nas classes que implementarão a interface;
     Para criar uma interface utilizamos a palavra reservada interface. Seus
    métodos não precisam ser declarados public abstratct, já que assim serão
    considerados por estar em uma interface.
Curso Java Básico


Classes em Java

   Interfaces
    public class Pessoa {
            String nome;
            String end;
            char sexo;
            int idade;

            public Pessoa ( String nm, String ed, char sx, int id ){
               nome = nm;
               end = ed;
               sexo = sx;
               idade = id;
            }



                                                         Título da Apresentação
Curso Java Básico


Classes em Java

   Interfaces
    public String AlterarCadastro ( ) {
              ....
    }



    public interface Aluno {
        boolean CadastrarAluno( int num_matricula, int cod_curso );
        void InserirNotas( int num_matricula );
    }

    class Universitario extends Pessoa implements Aluno {

           public boolean CadastrarAluno( int num_matricula, int cod_curso ) {
             ...
           }



                                                                   Título da Apresentação
Curso Java Básico


Classes em Java

   Interfaces
        public void InserirNotas( int num_matricula ){
              ...
              }

    }


      Para implementar uma interface, usa-se a palavra-chave implements
    seguida do nome da interface, ou interfaces, visto que não há limite para
    quantidade       de          classes          em         implementação.




                                                           Exemplo 29
Curso Java Básico


Classes em Java

   Interfaces – Exercício 6
    Crie uma interface Conta e declare nesta os métodos necessários para
    realizar as seguintes operações comuns a um tipo qualquer de conta:
      Obter o saldo atual da conta;
      Atualizar o saldo atual da conta;
      Obter a data da última alteração (não se preocupe com formatação
      dessa informação);
      Definir a data da atualização realizada;
      Obter nome do proprietário da conta;
      Definir o nome do proprietario da conta;
      Obter CPF do proprietário da conta;
      Definir CPF do proprietário da conta;
      Verificar validação do número de algarismos do CPF do proprietário da
      conta (se tem 11 algarismos);
Curso Java Básico


Classes em Java

   Interfaces – Exercício 6 (continuação)
    Crie ainda duas classes (concretas) para representa uma Conta Corrente
    e uma Conta Poupança, de forma que ambas as classes implementem a
    interface Conta, criada anteriormente;
      Acrescente na classe conta corrente um atributo e dois métodos para
      obtenção e atualização da informação sobre o número de cheques
      emitidos;
      Na classe que representa a conta poupança acrescente um atributo e
      dois métodos para obtenção e atualização da taxa de reajuste (valor
      fracionário);
    Crie uma classe Banco de forma que sejam possam ser armazenados e
    recuperados os seguintes dados: Nome do Banco, CNPJ e dois arranjos,
    com 100 posições cada, para incluir dados de contas correntes e contas
    poupança dos clientes com conta no banco;
      Acrescente um método para listagem de todos os dados do banco.
Curso Java Básico


Exercício Completo 1

    Utilize os conceitos de herança, modificadores de acesso e as demais
   classes da API apresentadas para representar o seguinte diagrama de
   classes:
Curso Java Básico


Exercício Completo 1 - continuação

    Adicione à sua solução uma classe de Validação e declare nesta os
   seguintes métodos:
     a chave de acesso deve conter 14 caracteres;
    UF deve corresponder a um dos seguintes valores: BA, SP, MG, GO ou
    RJ;
    o campo Situação deve conter um dos seguintes valores: Autorizada,
    Cancelada, Denegada ou Inutilizada;
    o código do medicamento deve atender a seguinte expressão regular {001,
    002, 003}01.
    Imprima na tela um objeto do tipo NFeMedicamento e outro
    NFeArmamento em formato XML .Veja o exemplo 2 com o uso da
    biblioteca Xstream. Em caso de dúvida, consulte a API.
Curso Java Básico

Conversão e Cast

   Conversões entre Tipos Primitivos de Dados
    A linguagem Java não suporta atribuições arbitrárias entre variáveis de
    tipos diferentes.
    Existem duas maneiras de fazer conversões de tipos:
      conversão implícita: quando o tamanho de uma variável é maior que o
      tamanho da variável ou o valor que está sendo atribuído.

      Exemplo:
            int y = 10;
            long x = y;




                                                           Título da Apresentação
Curso Java Básico

Conversão e Cast

   Conversões entre Tipos Primitivos de Dados
      conversão explícita: é necessária quando o tamanho de uma variável é
      menor que o tamanho da variável ou o valor que está sendo atribuído.
           Exemplo:
               long y = 10L;
               int x = (int) y;
        o tamanho de long é maior que o de int, portanto necessita indicar uma
        conversão.
        esta indicativa é feita pelo tipo da variável, que irá receber o valor,
        entre parênteses: (int). Se esta informação não for colocada, ocorreria
        um erro de compilação indicando tipos incompatíveis.
        Outra forma é usar as constantes de identificação de tipos para fazer
        uma conversão explícita, como em: long y = 10L;
        Para um processo de conversão explícito, utilizamos um mecanismo
        chamado de casting. Para sinalizar um casting coloca-se o nome do
        tipo para o qual se quer converter entre parênteses.
                                                           Título da Apresentação
Curso Java Básico Introdução
Curso Java Básico Introdução
Curso Java Básico Introdução
Curso Java Básico Introdução
Curso Java Básico Introdução
Curso Java Básico Introdução
Curso Java Básico Introdução
Curso Java Básico Introdução
Curso Java Básico Introdução
Curso Java Básico Introdução
Curso Java Básico Introdução
Curso Java Básico Introdução
Curso Java Básico Introdução
Curso Java Básico Introdução
Curso Java Básico Introdução
Curso Java Básico Introdução
Curso Java Básico Introdução
Curso Java Básico Introdução
Curso Java Básico Introdução
Curso Java Básico Introdução
Curso Java Básico Introdução
Curso Java Básico Introdução
Curso Java Básico Introdução
Curso Java Básico Introdução
Curso Java Básico Introdução
Curso Java Básico Introdução
Curso Java Básico Introdução
Curso Java Básico Introdução
Curso Java Básico Introdução
Curso Java Básico Introdução
Curso Java Básico Introdução
Curso Java Básico Introdução
Curso Java Básico Introdução
Curso Java Básico Introdução
Curso Java Básico Introdução
Curso Java Básico Introdução
Curso Java Básico Introdução
Curso Java Básico Introdução
Curso Java Básico Introdução
Curso Java Básico Introdução
Curso Java Básico Introdução
Curso Java Básico Introdução

More Related Content

What's hot

Programação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaProgramação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaÁlvaro Farias Pinheiro
 
Introdução ao JAVA (linguagem de programação WEB)
Introdução ao JAVA (linguagem de programação WEB)Introdução ao JAVA (linguagem de programação WEB)
Introdução ao JAVA (linguagem de programação WEB)Luis Borges Gouveia
 
Curso de Java (Parte 1)
Curso de Java (Parte 1)Curso de Java (Parte 1)
Curso de Java (Parte 1)Mario Sergio
 
Unidade iii aula 02 - introdução ao java
Unidade iii   aula 02 - introdução ao javaUnidade iii   aula 02 - introdução ao java
Unidade iii aula 02 - introdução ao javaNécio de Lima Veras
 
Conceitos Básicos de OO e Java
Conceitos Básicos de OO e JavaConceitos Básicos de OO e Java
Conceitos Básicos de OO e JavaCharles Jungbeck
 
Curso de Java (Parte 2)
 Curso de Java (Parte 2) Curso de Java (Parte 2)
Curso de Java (Parte 2)Mario Sergio
 
Apostila de Fundamentos Java
Apostila de Fundamentos JavaApostila de Fundamentos Java
Apostila de Fundamentos JavaMarcio Marinho
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVAMoises Omena
 
Classes Java , JDBC / Swing / Collections
Classes Java , JDBC / Swing / Collections Classes Java , JDBC / Swing / Collections
Classes Java , JDBC / Swing / Collections Eduardo Carvalho
 
Poo1 aula 1 - java - história e introdução
Poo1   aula 1 - java -  história e introduçãoPoo1   aula 1 - java -  história e introdução
Poo1 aula 1 - java - história e introduçãoDenis Sobrenome
 
Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Luis Ferreira
 
Apresentação java
Apresentação javaApresentação java
Apresentação javamunosai
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Adriano Teixeira de Souza
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02Natanael Fonseca
 
Construção de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em JavaConstrução de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em JavaFernando Camargo
 
Introdução à Metaprogramação com Java Reflection API
Introdução à Metaprogramação com Java Reflection APIIntrodução à Metaprogramação com Java Reflection API
Introdução à Metaprogramação com Java Reflection APIGuilherme de Cleva Farto
 

What's hot (20)

Programação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaProgramação Orientada a Objetos com Java
Programação Orientada a Objetos com Java
 
Introdução ao JAVA (linguagem de programação WEB)
Introdução ao JAVA (linguagem de programação WEB)Introdução ao JAVA (linguagem de programação WEB)
Introdução ao JAVA (linguagem de programação WEB)
 
Conhecendo Java
Conhecendo JavaConhecendo Java
Conhecendo Java
 
Curso de Java (Parte 1)
Curso de Java (Parte 1)Curso de Java (Parte 1)
Curso de Java (Parte 1)
 
Unidade iii aula 02 - introdução ao java
Unidade iii   aula 02 - introdução ao javaUnidade iii   aula 02 - introdução ao java
Unidade iii aula 02 - introdução ao java
 
Conceitos Básicos de OO e Java
Conceitos Básicos de OO e JavaConceitos Básicos de OO e Java
Conceitos Básicos de OO e Java
 
Curso de Java (Parte 2)
 Curso de Java (Parte 2) Curso de Java (Parte 2)
Curso de Java (Parte 2)
 
Apostila de Fundamentos Java
Apostila de Fundamentos JavaApostila de Fundamentos Java
Apostila de Fundamentos Java
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVA
 
Classes Java , JDBC / Swing / Collections
Classes Java , JDBC / Swing / Collections Classes Java , JDBC / Swing / Collections
Classes Java , JDBC / Swing / Collections
 
Poo1 aula 1 - java - história e introdução
Poo1   aula 1 - java -  história e introduçãoPoo1   aula 1 - java -  história e introdução
Poo1 aula 1 - java - história e introdução
 
Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos
 
Apresentação java
Apresentação javaApresentação java
Apresentação java
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02
 
Java 01
Java 01Java 01
Java 01
 
Estrutura de Dados em Java (Introdução)
Estrutura de Dados em Java (Introdução)Estrutura de Dados em Java (Introdução)
Estrutura de Dados em Java (Introdução)
 
Programação Orientada a Objetos - 001
Programação Orientada a Objetos - 001Programação Orientada a Objetos - 001
Programação Orientada a Objetos - 001
 
Construção de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em JavaConstrução de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em Java
 
Introdução à Metaprogramação com Java Reflection API
Introdução à Metaprogramação com Java Reflection APIIntrodução à Metaprogramação com Java Reflection API
Introdução à Metaprogramação com Java Reflection API
 

Viewers also liked

CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃOCURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃOMicrosoft
 
Programacao Orientada A Objetos (Java)
Programacao Orientada A Objetos (Java)Programacao Orientada A Objetos (Java)
Programacao Orientada A Objetos (Java)Robson Silva Espig
 
Lógica de programação - Como estudar sem achar chato e ainda ter motivação
Lógica de programação - Como estudar sem achar chato e ainda ter motivaçãoLógica de programação - Como estudar sem achar chato e ainda ter motivação
Lógica de programação - Como estudar sem achar chato e ainda ter motivaçãoFelipe Fontoura
 
Algoritmo e lógica de programação - Aula 1
Algoritmo e lógica de programação - Aula 1Algoritmo e lógica de programação - Aula 1
Algoritmo e lógica de programação - Aula 1engenhariadecomputacao
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetosCleyton Ferrari
 
Material de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de ProgramaçãoMaterial de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de Programaçãorodfernandes
 
Apostila Java
Apostila JavaApostila Java
Apostila Javadeilton
 
Desenvolvendo e portando App C# para Android e Iphone
Desenvolvendo e portando App C# para Android e IphoneDesenvolvendo e portando App C# para Android e Iphone
Desenvolvendo e portando App C# para Android e IphoneAlessandro Binhara
 

Viewers also liked (17)

CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃOCURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
 
Curso de Java #01 - História do Java
Curso de Java #01 - História do JavaCurso de Java #01 - História do Java
Curso de Java #01 - História do Java
 
Curso de Java #05 - Swing e JavaFX
Curso de Java #05 - Swing e JavaFXCurso de Java #05 - Swing e JavaFX
Curso de Java #05 - Swing e JavaFX
 
Programacao Orientada A Objetos (Java)
Programacao Orientada A Objetos (Java)Programacao Orientada A Objetos (Java)
Programacao Orientada A Objetos (Java)
 
Curso de Java #12 - Estruturas de Repetição (Parte 2)
Curso de Java #12 - Estruturas de Repetição (Parte 2)Curso de Java #12 - Estruturas de Repetição (Parte 2)
Curso de Java #12 - Estruturas de Repetição (Parte 2)
 
Curso de Java #13 - Estruturas de Repetição (Parte 3)
Curso de Java #13 - Estruturas de Repetição (Parte 3)Curso de Java #13 - Estruturas de Repetição (Parte 3)
Curso de Java #13 - Estruturas de Repetição (Parte 3)
 
Lógica de programação - Como estudar sem achar chato e ainda ter motivação
Lógica de programação - Como estudar sem achar chato e ainda ter motivaçãoLógica de programação - Como estudar sem achar chato e ainda ter motivação
Lógica de programação - Como estudar sem achar chato e ainda ter motivação
 
Algoritmo e lógica de programação - Aula 1
Algoritmo e lógica de programação - Aula 1Algoritmo e lógica de programação - Aula 1
Algoritmo e lógica de programação - Aula 1
 
Curso de Java #07 - Operadores (Parte 1)
Curso de Java #07 - Operadores (Parte 1)Curso de Java #07 - Operadores (Parte 1)
Curso de Java #07 - Operadores (Parte 1)
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
 
Material de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de ProgramaçãoMaterial de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de Programação
 
Curso de Java #10 - Estruturas Condicionais (Parte 2)
Curso de Java #10 - Estruturas Condicionais (Parte 2)Curso de Java #10 - Estruturas Condicionais (Parte 2)
Curso de Java #10 - Estruturas Condicionais (Parte 2)
 
GSOIII (JAVA) CONEXÃO MYSQL
GSOIII (JAVA)  CONEXÃO MYSQLGSOIII (JAVA)  CONEXÃO MYSQL
GSOIII (JAVA) CONEXÃO MYSQL
 
Apostila Java
Apostila JavaApostila Java
Apostila Java
 
Desenvolvendo e portando App C# para Android e Iphone
Desenvolvendo e portando App C# para Android e IphoneDesenvolvendo e portando App C# para Android e Iphone
Desenvolvendo e portando App C# para Android e Iphone
 
10
1010
10
 
Senhas no Word 2007
Senhas no Word 2007Senhas no Word 2007
Senhas no Word 2007
 

Similar to Curso Java Básico Introdução

Similar to Curso Java Básico Introdução (20)

Introducao logica2
Introducao logica2Introducao logica2
Introducao logica2
 
Introdução ao java
Introdução ao javaIntrodução ao java
Introdução ao java
 
Java20141215 17[1]
Java20141215 17[1]Java20141215 17[1]
Java20141215 17[1]
 
Java: Introduction
Java: IntroductionJava: Introduction
Java: Introduction
 
Manual
ManualManual
Manual
 
Java Fundamentos
Java FundamentosJava Fundamentos
Java Fundamentos
 
Java basico modulo_01
Java basico modulo_01Java basico modulo_01
Java basico modulo_01
 
Java basico modulo_01
Java basico modulo_01Java basico modulo_01
Java basico modulo_01
 
Java basico modulo_01
Java basico modulo_01Java basico modulo_01
Java basico modulo_01
 
Java basico modulo_01
Java basico modulo_01Java basico modulo_01
Java basico modulo_01
 
Introdução a tecnologia Java
Introdução a tecnologia JavaIntrodução a tecnologia Java
Introdução a tecnologia Java
 
Introdução a tecnologia Java
Introdução a tecnologia JavaIntrodução a tecnologia Java
Introdução a tecnologia Java
 
Java 02 Iniciando Uso Java
Java 02 Iniciando Uso JavaJava 02 Iniciando Uso Java
Java 02 Iniciando Uso Java
 
001 cesep - turma java
001   cesep - turma java001   cesep - turma java
001 cesep - turma java
 
1707331929 ltp iv java original
1707331929 ltp iv   java original1707331929 ltp iv   java original
1707331929 ltp iv java original
 
Java Seminar
Java SeminarJava Seminar
Java Seminar
 
classes_objetos_ e_cia_em_java
classes_objetos_ e_cia_em_javaclasses_objetos_ e_cia_em_java
classes_objetos_ e_cia_em_java
 
01 introducao ao java
01   introducao ao java01   introducao ao java
01 introducao ao java
 
Programação Desktop: Uma abordagem com Java
Programação Desktop: Uma abordagem com JavaProgramação Desktop: Uma abordagem com Java
Programação Desktop: Uma abordagem com Java
 
Conhecendo a JSR 223: Scripting for the Java Platform
Conhecendo a JSR 223: Scripting for the Java PlatformConhecendo a JSR 223: Scripting for the Java Platform
Conhecendo a JSR 223: Scripting for the Java Platform
 

Curso Java Básico Introdução

  • 1. Curso Java Básico Instrutora: Katia Cristina Lage dos Santos Regional Belo Horizonte 19/11/2007 a 30/11/2007
  • 2. Curso Java Básico Título da Apresentação Visão geral O nome Java é usado para referir-se à: uma linguagem de programação orientada a objetos; uma coleção de APIs (classes, componentes, frameworks) para o desenvolvimento de aplicações multiplataforma; um ambiente de execução presente em navegadores, mainframes, sistemas operacionais, celulares, palmtops, cartões inteligentes, eletrodomésticos Java foi lançada pela Sun Microsystems em 1995 write once, run everywhere; programe uma única vez, execute em qualquer lugar; o projeto é controlado pela Sun (http://java.sun.com/) e pela comunidade de usuários JPC (Java Community Process - http://jcp.org/en/home/index).
  • 3. Curso Java Básico Título da Apresentação Visão geral Um programa escrito para a plataforma Java necessita de dois componentes para ser executado: a máquina virtual Java (Java Virtual Machine - JVM); um conjunto de bibliotecas de classe que disponibilizam um série de serviços para esse programa. O pacote de software que contém a máquina virtual e esta biblioteca de classes é conhecido como JRE (Java Runtime Environment). JRE JVM + Bibliotecas de Classe
  • 4. Curso Java Básico Máquina Virtual A máquina virtual Java, ou simplesmente JVM: é um dos principais componentes da plataforma Java; permite que o mesmo código possa ser executado em várias plataformas sem a necessidade de recompilação. Mas COMO? a JVM emula uma máquina real possuindo um conjunto de instruções próprio e atua em áreas de gerenciamento de memória; a JVM possui uma especificação que pode ser implementada nas diversas arquiteturas. Essa especificação visa não atender a nenhum tipo de tecnologia em específico, seja de hardware ou de sistema operacional; os ambientes de execução e de desenvolvimento são fornecidos por fabricantes de hadware e software (MacOS, Linux, etc). Título da Apresentação
  • 5. Curso Java Básico Máquina Virtual A máquina virtual não trabalha diretamente com a linguagem de programação Java, mas sim com o arquivo de formato class. Esse tipo de arquivo contém os bytecodes, que são as instruções para a máquina virtual e uma tabela de símbolos. CÓDIGO JAVA Ambiente de Desenvolvimento COMPILADOR Distribuição Byte Code Java VM Windows VM Linux VM Celular SO Windows SO Linux SO Celular Ambiente de Execução Título da Apresentação
  • 6. Curso Java Básico Máquina Virtual O código Java é compilado, gerando o conjunto de instruções chamado de byte-code; Esse byte-code é aplicado à Máquina Virtual Java (JVM) que se encarrega de interpretar os comandos para o sistema operacional onde o programa está rodando. Ou seja, a máquina virtual traduz as instruções do código Java para instruções válidas no sistema operacional em que está rodando; Esse byte-code poderá então ser interpretado por qualquer máquina virtual Java, rodando em Linux, Windows, Palm OS, Solaris ou qualquer outro sistema operacional que possua uma máquina virtual Java implementada. Compile once, run anywhere. Título da Apresentação
  • 7. Curso Java Básico Máquina Virtual Um programa Java só é executado caso o seu byte-code passe pela verificação de segurança da JVM, que consiste em: o programa foi escrito utilizando a sintaxe e semântica da linguagem; não existem violações de áreas restritas de memória no código; o código não gera Stack Overflow; os tipos de parâmetros dos métodos são corretos; não existe nenhuma conversão ilegal entre dados do programa o acesso a objetos está corretamente declarado. Caso alguma das condições acima não seja satisfeita, a máquina virtual Java causará um erro de execução (runtime error). A JVM não permite que um programa Java acesse recursos de hardware diretamente, protegendo o computador de operações perigosas. Título da Apresentação
  • 8. Curso Java Básico Máquina Virtual Uma JVM possui definições concretas para a implementação dos seguintes itens: conjunto de instruções (equivalentes às instruções da CPU), conjunto de registradores, formato padrão de classes, pilha de memória, pilha de objetos coletados pelo garbage-collector e área de memória. Compilador JIT (just-in-time) desde a versão 1.2 da JRE, a implementação da Sun da JVM inclui um compilador just-in-time (JIT); com este compilador todo o bytecode de um programa é transformado em instruções nativas e carregado na máquina virtual em uma só operação, permitindo um ganho de desempenho muito grande em comparação com a implementação anterior, onde as instruções em bytecode eram interpretadas uma por vez. Título da Apresentação
  • 9. Curso Java Básico Bibliotecas de Classes Na maioria dos sistemas operacionais modernos, um corpo formado por código reusável é organizado e disponibilizado para simplificar o trabalho do programador; Este código encontra-se, normalmente, na forma de bibliotecas dinâmicas que a aplicação utiliza durante a sua execução. Como a plataforma Java não é dependente de qualquer sistema operacional, as aplicações não podem depender das bibliotecas destes sistemas. Por isso, a plataforma Java disponibiliza um grande conjunto padronizado de bibliotecas de classe, que contém praticamente o mesmo número de funções encontradas nos sistemas operacionais modernos. Título da Apresentação
  • 10. Curso Java Básico Bibliotecas de Classes Uma classe de biblioteca Java serve a três propósitos dentro da plataforma Java: disponibilizam ao programador um conjunto de funções bem conhecidas que realizam tarefas comuns, como a manutenção de listas de elementos ou manipulação de strings; contém uma interface para tarefas que dependem do hardware e do sistema operacional (exemplo, acesso a rede e manipulação de arquivos); se alguma plataforma não suportar alguma função que uma aplicação Java necessita, as bibliotecas implementam esta funcionalidade usando os recursos disponíveis, ou disponibilizam um meio consistente para que a aplicação verifique a presença de determinada funcionalidade. Título da Apresentação
  • 11. Curso Java Básico Gerenciamento de Memória Durante a execução de um programa de computador, ocorre a alocação e liberação dinâmica de memória RAM. Dados são escritos e lidos da memória do computador satisfazendo os requisitos de cada programa. Em linguagens tradicionais como Pascal, Basic e C/C++, o programador é responsável por controlar essa alocação, impedindo o estouro de memória (stack overflow) e outros problemas, como o acesso indevido a áreas reservadas de memória. Para facilitar a vida dos programadores, e evitar os erros comuns associados à alocação de memória, a linguagem Java introduziu o conceito de garbage-collection. Título da Apresentação
  • 12. Curso Java Básico Gerenciamento de Memória Garbage-collection é um mecanismo de controle automático de alocação e liberação de memória. Quando uma variável é declarada em um código de computador, a JVM cria um ponteiro para uma área de memória equivalente ao tamanho do tipo de dado utilizado por essa variável. public class Pessoa{ MEMÓRIA int intIdade; String strNome pessoa1 (...) public static void main(){ Pessoa Pessoa pessoa1 = new Pessoa(); } } Título da Apresentação
  • 13. Curso Java Básico Gerenciamento de Memória Garbage-collection Quando essa variável é associada a outra região de memória, a JVM coloca o espaço alocado anteriormente em uma pilha de objetos em desuso. MEMÓRIA (...) pessoa1 public static void main(){ Pessoa pessoa1 = new Pessoa(); Pessoa pessoa2 = new Pessoa(); Pessoa pessoa1 = pessoa2; pessoa2 } Caso o computador fique com pouca memória disponível, a JVM remove objetos dessa pilha, permitindo que esse espaço de memória seja re-alocado. Título da Apresentação
  • 14. Curso Java Básico Gerenciamento de Memória O processo de garbage-collection ocorre automaticamente durante a execução de um programa Java. é possível sugerir ao JVM que execute a coleta de lixo; no entanto não haverá garantias de que todos os objetos não utilizados serão realmente removidos da memória; chamadas possíveis:Runtime.getRuntime() ou System.gc(); O programador não precisa se preocupar com aritmética de ponteiros (grande dificuldade em linguagens como C e Pascal. Exemplo 1 Título da Apresentação
  • 15. Curso Java Básico Plataforma Java A plataforma Java se divide em três grandes edições. http://www.javafree.org/wiki/Java Java Standard Edition (JavaSE); Java Mobile Edition (JavaME); Java Enterprise Edition (JavaEE).
  • 16. Curso Java Básico Plataforma Java Java Standard Edition (JavaSE) É a tecnologia Java para computadores pessoais, notebooks e arquiteturas com poder de processamento e memória consideráveis. Várias APIs acompanham esta versão e tantas outras podem ser baixadas opcionalmente no site da Sun. É com elas que a maioria das aplicações são construídas e executadas. O J2SE possui duas divisões: Java Development Kit (JDK) ou Standard Development Kit (SDK): um conjunto para desenvolvimento em Java: compilador (javac), depurador, gerador de documentação (javadoc), empacotador de componentes (jar); Java Runtime Edition (JRE): uma versão mais leve da JDK pois é preparada para o ambiente de execução. Título da Apresentação
  • 17. Curso Java Básico Plataforma Java Java Mobile Edition (JavaME) É a tecnologia Java para dispositivos móveis com limitações de memória ou processamento. Possui APIs bem simples e leves para economizar espaço, memória e processamento. São utilizadas para sistemas em celulares, palm tops, pocket pcs, smartphones, javacards e demais dispositivos. O J2ME se divide em dois grupos de bibliotecas. É dividida em dois grupos: Connected Limited Device Configuration (CLDC): para celulares e smartphones, que são mais limitados; Connected Device Configuration (CDC): para Palmtops e Pocket pcs e alguns dispositívos mais poderosos. Título da Apresentação
  • 18. Curso Java Básico Plataforma Java Java Enterprise Edition (JavaEE) É a tecnologia Java para aplicações corporativas que podem estar na internet ou não. Possui um grande número de APIs onde a segurança é a principal preocupação. É ideal para a construção de servidores de aplicação, integração de sistemas ou distribuição de serviços para terceiros. A plataforma Java EE não é um produto, mas sim de uma especificação definida pela Sun. A Java EE simplifica as aplicações empresariais e multi-camadas, baseada em componentes padronizados, modulares e reusáveis, e oferece um conjunto completo de serviços para estes componentes. Título da Apresentação
  • 19. Curso Java Básico O ambiente Eclipse O Eclipse é um ambiente de desenvolvimento integrado (IDE – Integrated Development Environment) Contém um conjunto de funcionalidades embutidas, cuja finalidade é prover um modo mais fácil e interativo de construir e manipular seus programas. Dentre essas funcionalidades, destacam-se: um editor de texto com facilidades especialmente desenhadas para a linguagem; um compilador e um interpretador, para muitas linguagens interpretadas, dentre elas o Java; um editor gráfico, com facilidades para criação e edição da interface gráfica do programa a ser desenvolvido; Título da Apresentação
  • 20. Curso Java Básico O ambiente Eclipse uma ferramenta, denominada debugger, que possibilita um monitoramento mais elegante do funcionamento do seu programa, facilitando a detecção e remoção dos erros de lógica do código. Além das funcionalidades inerentes ao conceito de IDE, é importante ressaltar que o Eclipse é tido como “meta-ambiente de desenvolvimento de software”, um “ambiente para construção de ambientes”. Em outras palavras, um framework para integração de diferentes tipos de aplicação. Título da Apresentação
  • 21. Curso Java Básico O ambiente Eclipse Funcionalidades do ambiente Eclipse ao iniciar o Eclipse pela primeira vez, será solicitada a indicação de um diretório onde será armazenado o código a ser desenvolvido workspace; é possível existir mais de um workspace na mesma mídia de armazenamento. Entretanto, cada workspace poderá ser utilizado por somente uma instância do Eclipse em execução no momento. na janela de definição do workspace é possível definí-lo como o diretório padrão (default) onde os projetos a serem desenvolvidos por aquela instância do Eclipse serão armazenados.
  • 22. Curso Java Básico O ambiente Eclipse Funcionalidades do ambiente Eclipse após a definição do workspace, será exibida uma janela de boas- vindas(welcome). após fechá-la, será exibido o layout do ambiente sob a denominada perspectiva Java Perspective; Título da Apresentação
  • 23. Curso Java Básico O ambiente Eclipse Título da Apresentação
  • 24. Curso Java Básico O ambiente Eclipse Funcionalidades do ambiente Eclipse o Eclipse destaca-se dentre as demais IDEs, pelo fato de possuir a funcionalidade de customização do ambiente de trabalho. trata-se de um programa open-source, originalmente escrito para ser uma IDE versátil e possível de ser adaptada para qualquer propósito relacionado ao desenvolvimento de software, desde a produção de plug-ins para ele mesmo e/ou outros programas, passando pela integração de ferramentas ao ambiente Eclipse e culminando no desenvolvimento do software final em si. Esta adaptabilidade já começa pela estética do ambiente. Título da Apresentação
  • 25. Curso Java Básico O ambiente Eclipse Package Explorer (1) é um visualizador simples e elegante dos seus projetos; um projeto representa toda a estrutura do seu programa, armazenando os arquivos-fonte (.java), os bytecodes (.class), as configurações gerais do ambiente para o projeto, eventuais arquivos de backup e outros arquivos inerentes ao escopo do programa (por exemplo, quaisquer possíveis imagens relacionadas ao projeto); a navegação é semelhante à do Windows Explorer, bastante intuitiva e respeitando a hierarquia do projeto, com a qual ficaremos mais familiarizados com a prática, ao longo do desenvolvimento do projeto. Título da Apresentação
  • 26. Curso Java Básico O ambiente Eclipse Editor de Textos (2) o editor de textos do Eclipse denota as palavras-chave de Java™ em letras destacadas para facilitar a leitura do código; esta é uma das funcionalidades mais utilizadas nesta ferramenta, possuindo um número expressivo de facilidades, ilustradas nas situações seguintes. Título da Apresentação
  • 27. Curso Java Básico O ambiente Eclipse Editor de Textos (2) Função Autocompletar Suponha que estejamos escrevendo o método “transferir” de uma classe Conta este método é composto de uma chamada ao método “debitar” e outra chamada ao método “creditar”, como podemos na definição abaixo: Título da Apresentação
  • 28. Curso Java Básico O ambiente Eclipse Editor de Textos (2) durante a implementação deste método, quando digitarmos o nome de alguma variável que denote um objeto e o ponto para chamada de método, o editor de textos do Eclipse nos mostrará uma janela com uma relação completa de todos os métodos e atributos que este objeto pode acessar em seu contexto, e a medida em que escrevermos as letras, ele filtrará tudo o que puder ir sendo descartado, como ilustra a imagem abaixo. Título da Apresentação
  • 29. Curso Java Básico O ambiente Eclipse Editor de Textos (2) Detecção de erros de sintaxe uma grande funcionalidade das principais IDEs atuais é a detecção de erros de compilação em tempo de implementação; o editor de textos do Eclipse, ao perceber um erro de sintaxe (e até alguns poucos erros de lógica), imediatamente destaca o trecho que ele supõe estar errado, além de indicar as possíveis causas do erro e sugerir algumas soluções; como podemos ver na figura seguinte, ele sublinha o trecho e errado e marca as linhas que apresentam problema de sintaxe no lado direito da janela:
  • 30. Curso Java Básico O ambiente Eclipse
  • 31. Curso Java Básico O ambiente Eclipse Editor de Textos (2) Indicação de Escopo de Blocos de Código O editor também separa os trechos de código contido entre chaves, no lado esquerdo da janela, em azul. Podemos clicar nos triângulos azuis para exibir/esconder trechos entre chaves, facilitando a visualização do arquivo e sua navegação. Por último, o editor do eclipse nos poupa bastante tempo de pesquisa em documentação de classes nas APIs das mesmas com um recurso muito simples e interessante. Ao mantermos o mouse por cima de nomes de classe ou métodos, uma caixa de texto aparecerá na tela com toda a documentação da classe / método em questão. A figura seguinte exemplifica essa funcionalidade. Título da Apresentação
  • 32. Curso Java Básico O ambiente Eclipse Título da Apresentação
  • 33. Curso Java Básico O ambiente Eclipse Console (3) o Eclipse oferece um terminal de console para a entrada de dados do teclado pela stream de entrada padrão e a saída de dados que o programa escreve na stream de saída padrão. Outline (4) a janela Outline funciona semelhantemente ao Package Explorer, sendo que voltada para a estrutura interna do seu arquivo .java - frequentemente a sua classe; existem ícones diferentes para cada parte do arquivo. Título da Apresentação
  • 34. Curso Java Básico O ambiente Eclipse Criando um projeto primeiramente clique em File > New > Project; um wizard de criação de projetos aparecerá; Título da Apresentação
  • 35. Curso Java Básico O ambiente Eclipse Criando um projeto em seguida, selecione a opção Java > Java Project; clique em Next. A seguinte tela irá aparecer: Título da Apresentação
  • 36. Curso Java Básico O ambiente Eclipse Criando um projeto digite um nome para o seu projeto; se você quiser criar o projeto em um diretório diferente do workspace: marque a opção quot;Create project at external locationquot;; especifique o diretório onde o projeto será ser armazenado; marque também a opção “Create separate source and output folders” na caixa “Project Layout”. Essa opção permite que você não misture os arquivos que contém o código-fonte(source) com os arquivos gerados pelo compilador(output ou saída) , criando pastas diferentes para cada um desses tipos de arquivos; clique em Next. Título da Apresentação
  • 37. Curso Java Básico O ambiente Eclipse Criando um projeto agora você terá a oportunidade de escolher os diretórios do source e de saída; para deixar os valores default clique em Finish, ou então altere os valores de acordo com sua conveniência. possívelmente aparecerá uma janela pedindo para confirmar uma mudança de perspectiva. Se aparecer, clique em quot;Yesquot;. Título da Apresentação
  • 38. Curso Java Básico O ambiente Eclipse Criando uma classe agora, seu projeto já está criado, mas ainda não possui nenhuma classe; para criar uma classe, clique em File > New > Class a seguinte tela aparecerá: Título da Apresentação
  • 39. Curso Java Básico O ambiente Eclipse Criando uma classe a parte superior da janela dá algumas indicações sobre o preenchimento - como campos obrigatórios, a sugestão de usar inicial maiúscula para nomes de classes, etc; em quot;Source Folderquot;, determine de que projeto sua classe fará parte e a localização do arquivo .java; selecione o nome da sua classe no campo quot;Namequot;; opcionalmente você pode pré-determinar os modificadores de acesso da sua classe e deixar prontos os esqueletos de alguns métodos, no campo Modifiers e nos campos abaixo de “Which method stubs would you like to create?” escolha quot;public static void main(String[] args)quot; – o método principal já será defido na classe; Título da Apresentação
  • 40. Curso Java Básico O ambiente Eclipse Criando uma classe clique em Finish. sua classe será criada e aparecerá como a imagem seguinte. Título da Apresentação
  • 41. Curso Java Básico O ambiente Eclipse Utilização de bibliotecas para adicionar uma biblioteca externa ao projeto: clique com o botão direito sobre a pasta do projeto no Package Explorer; selecione a opção Properties. a seguinte janela surgirá: Título da Apresentação
  • 42. Curso Java Básico O ambiente Eclipse Utilização de bibliotecas no menu da esquerda, selecione a opção Java Build Path (como está selecionado na figura). A parte da direita mudará para mostrar o que está na figura; selecione a aba Libraries para visualizar as bibliotecas utilizadas pelo seu projeto. Provavelmente você poderá ver a biblioteca JRE System Library, que é a biblioteca padrão que vem com o JDK instalado na sua máquina, e que praticamente todo projeto Java deve utilizar; para adicionar mais bibliotecas, clique no botão Add External JARs (Java ARchives ou, extra-oficialmente, Java Application Resources, o último menos usado); por último, selecione o caminho da biblioteca a ser adicionada e clique em Open. Exemplo 2 Título da Apresentação
  • 43. Curso Java Básico Características da linguagem Todos os programas Java possuem quatro elementos básicos: Pacotes; Classes; Métodos; Variáveis. Título da Apresentação
  • 44. Curso Java Básico Características da linguagem Pacotes as classes que compõem o núcleo de funcionalidades Java estão organizadas em pacotes; um package Java é um mecanismo para agrupar classes de finalidades afins ou de uma mesma aplicação; além de facilitar a organização conceitual das classes, o mecanismo de pacotes permite localizar cada classe necessária durante a execução da aplicação; no entanto, a principal funcionalidade de um pacote Java é evitar a explosão do espaço de nome, ou seja, classes com o mesmo nome em pacotes diferentes podem ser diferenciadas pelo nome completo, pacote.classe. Título da Apresentação
  • 45. Curso Java Básico Características da linguagem Entre os principais pacotes oferecidos como parte do núcleo Java estão: java.lang; java.util; java.io; java.net. Pacotes contêm classes e duas outras entidades de Java que veremos posteriormente: exceções e interfaces; Um package é uma coleção de classes e interfaces relacionadas fornecendo proteção de acesso e gerenciamento de nomes de diretórios. Usamos a declaração import para acessar essas classes. Se a declaração import não for utilizada e desejarmos utilizar alguma classe externa, será necessário colocar o caminho da classe a cada acesso. Título da Apresentação
  • 46. Curso Java Básico Características da linguagem Exemplo: import java.lang.*; O asterisco no final diz ao compilador para importar todas as classes do pacote java.lang. Esse é um dos vários pacotes incluídos na API. O compilador Java define implicitamente um pacote para as classes no diretório atual e o importa implicitamente. Esse é o motivo porque não precisamos colocar explicitamente as classes que escrevemos em um pacote. Para colocarmos uma classe em um pacote, deve-se inserir a diretiva package com o nome do pacote no início da classe. Título da Apresentação
  • 47. Curso Java Básico Características da linguagem Estrutura de um código Java Como todas linguagem de programação, Java possui um formato básico para a escrita de códigos. Tal formato é demonstrado abaixo: 1 // Duas barras significam comentário 2 /* comentários também podem seguir o formato de C++ */ 3 4 public class NomeDoPrograma 5 { 6 // O método main indica que o código Java pode ser executado 7 static public void main(String[] args) 8 { 9 // aqui virão os comandos 10 } 11 } Título da Apresentação
  • 48. Curso Java Básico Características da linguagem Compreendendo o código Java linhas 1 e 2: representam comentários. Um comentário pode conter qualquer informação relevante ao comportamento do programa, autor, versão, etc; linha 3: está em branco, pois Java permite linhas em branco entre os comandos; linha 4: é a declaração do quot;nome do programaquot;, que é case-sensitive (existe diferença entre maiúsculas e minúsculas). O arquivo que contém o código Java deve ser salvo com o mesmo nome que aparece após a declaração public class e mais a extensão .java (o exemplo acima deveria ser salvo como NomeDoPrograma.java). Título da Apresentação
  • 49. Curso Java Básico Características da linguagem Compreendendo o código Java linhas 5 e 8: a abertura de chave { indica início de bloco; linha 8: essa linha indica à Java Virtual Machine que o programa será executado. Os demais programas não conterão o método main(); Quando um programa Java é executado, o interpretador da JVM executa os comandos que estiverem dentro do bloco indicado pelo método quot;static public void main(String)quot;. linha 9: aqui seria escrito o código propriamente dito; linhas 10 e 11: o fechamento de chave } indica fim de bloco. Título da Apresentação
  • 50. Curso Java Básico Características da linguagem Compilando e Executando a seguir, apresentaremos um exemplo de criação, compilação e execução de um programa Java, sem o uso de uma IDE, utilizando apenas os programas da JSDK. 1- Crie o arquivo HelloWorld.java em um diretório qualquer com o seguinte conteúdo: public class HelloWorld { public static void main (String args[]) { System.out.println(quot;Hello World!quot;); } } Configurar variáveis de ambiente – referência artigo http://www.guj.com.br/java.tutorial.artigo.12.1.guj Título da Apresentação
  • 51. Curso Java Básico Características da linguagem Compilando e Executando 2 - Chame o compilador Java para este arquivo: $ javac HelloWorld.Java 3- Seu diretório deve ter recebido um novo arquivo após essa compilação: HelloWorld.class Título da Apresentação
  • 52. Curso Java Básico Características da linguagem Compilando e Executando 4 - Chame o interpretador Java para este arquivo (omita a extensão .class do arquivo): $ j ava HelloWorld 5- Observe o resultado na tela: Hello World! Título da Apresentação
  • 53. Curso Java Básico Estrutura da linguagem Comentários Qualquer informação especificada entre os caracteres de comentário será ignorada pelo compilador; Os comentários em Java podem ser por linha ou em bloco: por linha: // isto é um comentário e inicia com duas barras. int valor; // e pode estar no final da linha em bloco: /* Comentário em bloco Aceita múltiplas linhas Não utilize comentários aninhados */ Título da Apresentação
  • 54. Curso Java Básico Estrutura da linguagem Comentários As regras que tratam dos comentários em Java são: comentários não podem ser aninhados; não podem ocorrer dentro de strings ou literais; as notações /* e */ não tem significado dentro dos comentários //; a notação // não tem significado dentro dos comentários /* e /**. Título da Apresentação
  • 55. Curso Java Básico Estrutura da linguagem Comentários javadoc É tipo especial de comentário, utilizado para gerar documentação da API do código Java. /** isto é um comentário para geração de javadoc */ Título da Apresentação
  • 56. Curso Java Básico Estrutura da linguagem Identificadores Identificadores são usados para determinar nomes de variáveis, atributos de classe ou de instância, parâmetros e métodos; Os identificadores em Java iniciam com: uma letra; um sublinhado (_ ); ou um sinal de dólar quot;$quot;; Podem possuir números após o primeiro caractere da palavra; Pela premissa de ser case-sensitive existe uma diferenciação entre letras maiúsculas e minúsculas. Título da Apresentação
  • 57. Curso Java Básico Estrutura da linguagem Convenções para Identificadores na linguagem Java é utilizada a seguinte convenção para formação de identificadores: constantes com todas as letras em maiúsculo: CONSTANTE variáveis e métodos começam com letra minúscula: variável classes e interfaces começam com letra maiúscula: Classe se o identificador for um nome composto por mais de uma palavra, cada nova palavra começa com letra maiúscula: exemplo: variávelComNomeComposto
  • 58. Curso Java Básico Estrutura da linguagem Tipos Primitivos no Java, todos os objetos necessitam ter seu tipo especificado. existem 8 tipos primitivos em Java; seis deles são numéricos, um é o caractere e o outro é o booleano; os tipos Array e String não são tipos primitivos, são Classes e serão tratados a seguir. Título da Apresentação
  • 59. Curso Java Básico Estrutura da linguagem Tipos Numéricos Inteiros os tipos inteiros guardam valores numéricos sem parte fracionária. Tipo Tamanho Faixa de Valores int 4 bytes -2.147.483.648 até 2.147.483.647 short 2 bytes -32.768 até 32.767 byte 1 byte -128 até 127 long 8 bytes -9.223.372.036.854.775.808 até 9.223.373.036.854.775.807 na maioria das ocasiões, o tipo int é suficiente; não se pode esquecer que como Java é portável, esses valores são os mesmos para qualquer plataforma de hardware. Título da Apresentação
  • 60. Curso Java Básico Estrutura da linguagem Tipos Numéricos de Ponto Flutuante os tipos primitivos que representam valores numéricos com ponto flutuante: Tipo Tamanho Faixa de Valores float 4 bytes +/- 3.40282347E+38F (aproximandamente 7 dígitos significativos) double 8 bytes +/- 1.79769313486231570E+308 (15 dígitos significativos) normalmente utilizamos o double na maioria das situações onde é necessária a representação desse tipo de número, pois sua precisão é maior; números do tipo float aparecem com um sufixo F. (3.04F). se o número aparecer sem o F, ele é considerado double. da Apresentação Título
  • 61. Curso Java Básico Estrutura da linguagem Tipo caractere O tipo char serve para representar apenas uma letra ou número. Tipo Tamanho Faixa de Valores char 2 bytes 0 até 65536 Esse tipo serve para representar caracteres usando a tabela Unicode; Dessa tabela faz parte a tabela ASCII e mais alguns caracteres especiais. O tipo char é sempre representado por aspas simples (‘h’). Caracteres representados por aspas duplas (“h”) na verdade são Strings.
  • 62. Curso Java Básico Estrutura da linguagem Tipo booleano o tipo booleano pode assumir apenas dois valores, true ou false. Esse tipo é usado apenas para testes lógicos. Tipo Tamanho Faixa de Valores boolean 1 bit true ou false
  • 63. Curso Java Básico Estrutura da linguagem Valores Padrão abaixo segue uma lista com os valores padrões de todos os tipos primitivos, sendo que não é necessário inicializar as variáveis com esses valores, a máquina virtual cuidará desse trabalho. Tipo Valor byte 0 short 0 int 0 long 0 float 0.0 double 0.0 boolean false char u0000 Título da Apresentação
  • 64. Curso Java Básico Estrutura da linguagem String String é uma classe que manipula cadeias de caracteres; incluída no pacote java.util; possui métodos para essas manipulações; a representação de um String é feita por um conjunto de caracteres entre aspas. Exemplo: String str = “Isto é uma String do Java”; String str = “”; //uma string vazia Concatenação de Strings String uniao = “use o sinal de + para ” + “concatenar Strings”; Exemplo 3 Título da Apresentação
  • 65. Curso Java Básico Estrutura da linguagem Métodos da Classe java.lang.String a classe java.lang.String possui muitos métodos; abaixo apresentamos os mais significativos: charAt(int indice) retorna o caractere na posição especificada int compareTo(String outraString) retorna um valor negativo se a string vier antes de outraString na ordem do dicionário, um valor positivo se outraString vier antes e 0 (zero) caso forem iguais boolean endsWith(String sufixo) retorna true se a string terminar com sufixo Título da Apresentação
  • 66. Curso Java Básico Estrutura da linguagem Métodos da Classe java.lang.String boolean equals(String outra) retorna true se a string for igual à outra boolean equalsIgnoreCase(String outra) retorna true se a string for igual à outra, ignorando maiúsculas e minúsculas String toLowerCase() retorna uma nova string convertendo maiúsculas para minúsculas
  • 67. Curso Java Básico Estrutura da linguagem Métodos da Classe java.lang.String String toUpperCase() retorna uma nova string convertendo minúsculas para maiúsculas String trim() elimina espaços iniciais e finais Exemplos 4 e 5 Título da Apresentação
  • 68. Curso Java Básico Estrutura da linguagem StringTokenizer “Quando você lê uma frase, sua mente divide a frase em palavras individuais ou tokens...” Deitel&Deitel Tokens são separados entre si por delimitadores (espaços em branco, tabulação, nova linha e retorno de carro); Pertence ao pacote java.util; Título da Apresentação
  • 69. Curso Java Básico Estrutura da linguagem StringTokenizer Há três construtores possíveis: o construtor que aceita um argumento String, utilizará o string delimitador padrão “ntr”; aquele que aceita dois argumentos String: o segundo String é o String delimitador; a versão que aceita três argumentos, o segundo String é o string delimitador e o terceiro argumento (um boolean) determina se os delimitadores também são retornados como tokens (somente se o argumento for true). Exemplo 6 Título da Apresentação
  • 70. Curso Java Básico Estrutura da linguagem Array um array tipo de dados utilizado para armazenar um grupo de informações semelhantes; arrays são tipos indexados de dados que permitem a representação de agrupamento de dados como vetores e matrizes; todos os itens de um array devem ser do mesmo tipo em tempo de compilação. o código para declarar o array é: int nums[10]; Título da Apresentação
  • 71. Curso Java Básico Estrutura da linguagem Array arrays são inicializados com o uso do operador new; pense em cada elemento do array como um objeto distinto; o tipo mais simples de array é um array de dimensão de um tipo primitivo, por exemplo, um int.; o código para criar e inicializar o array é: int nums[ ] = new int [5]; os colchetes depois do identificador nums, dizem ao compilador que nums é um array; o operador new instancia o array e chama o construtor para cada elemento; o construtor é do tipo int e pode conter cinco elementos. Título da Apresentação
  • 72. Curso Java Básico Estrutura da linguagem Array arrays podem ser multimensionais; durante a instanciação, um array multidimensional deve ter pelo menos uma de suas dimensões especificadas; a seguir, exemplos de como criar um array bidimensional: int [ ][ ] numlist = new int [2][]; int lista[ ][ ] = new int[5][5]; Título da Apresentação
  • 73. Curso Java Básico Estrutura da linguagem Array arrays podem ser inicializados na hora da criação, colocando-se os valores inicias desejados entre chaves {}; não é necessário especificar o tamanho – Java irá inicializar o array com o número de elementos especificados. Exemplo: int nums[ ] = {1, 2, 3, 4, 5}; int nums[ ][ ] = {(1,1), (2,2), (3,3), (4,4), (5,5)}; Título da Apresentação
  • 74. Curso Java Básico Estrutura da linguagem Array os arrays podem ser indexados por um valor byte, short, int ou char; não se pode indexar arrays com um valor long, ponto flutuante ou booleano; se precisar usar um desses tipos deve-se fazer uma conversão explícita; os arrays são indexados de zero até o comprimento do array menos um. Exemplo 7 Título da Apresentação
  • 75. Curso Java Básico Estrutura da linguagem Operador de Atribuição a atribuição é feita através do operador “=”: <identificador> = <valor>; Exemplos: (na declaração da variável) float umFloat = 0.5; char caracter = ‘i’; Exemplos: (após declaração da variável) idade = 18; existe = true; Título da Apresentação
  • 76. Curso Java Básico Estrutura da linguagem Operadores Aritméticos operadores aritméticos são aqueles que efetuam operações aritméticas em um ou mais tipos primitivos. Operador Nome Exemplo + Adição 23+29 - Subtração 29-23 * Multiplicação 0.5 * salario / Divisão 100/42 % Módulo 57%5 Exemplo 8
  • 77. Curso Java Básico Estrutura da linguagem Operadores Relacionais os operadores relacionais utilizados para formar expressões condicionais, utilizados em testes e condições de entrada em um fluxo do programa. Operador Nome Exemplo == Igual 10 == 10 != Diferente 3 != 2 < Menor 4 < 10 > Maior 10 > 6 >= Maior ou igual 3 >= 3 <= Menor ou igual 5 <= 6 Exemplo 9 Título da Apresentação
  • 78. Curso Java Básico Estrutura da linguagem Operadores Lógicos os operadores lógicos, assim como os relacionais, são utilizados para formar expressões condicionais, utilizados em testes e condições de entrada em um fluxo do programa. Operador Nome Exemplo && AND (0 < 2) && ( 10 > 5) || OR ( 10 >11 ) || (10 < 12 ) ! NOT !( 1= = 4 ) ^ XOR ( 1!= 0) ^ ( 3< 2 ) ?: Condicional 3>2? (comando): (comando) Exemplo 10 Título da Apresentação
  • 79. Curso Java Básico Estrutura da linguagem Atribuição Composta para facilitar a programação, Java oferece um tipo de atribuição chamada atribuição composta, que pode ser formada com operadores aritméticos ou lógicos; Exemplos: a += b; // Equivalente a: a = a + b; a *= 3; // Equivalente a: a = a * 3; Título da Apresentação
  • 80. Curso Java Básico Estrutura da linguagem Incremento e Decremento o incremento é dado pelo operador ++ e o decremento pelo operador --.; este decremento ou incremento pode ser feito antes ou depois da utilização da variável; colocando–se antes (++var), será realizado o incremento ou decremento e depois o valor da variável será utilizado; ao contrário (var++), o operador após a variável, faz com que o valor da variável seja utilizado primeiro e o incremento ou decremento seja feito depois. Exemplos: i++; //Equivalente a: i = i +1; --i; //Equivalente a: i = i -1; Exemplo 11 Título da Apresentação
  • 81. Curso Java Básico Estrutura da linguagem Precedência dos Operadores a tabela abaixo apresenta os operadores em ordem decrescente de precedência, isto é, o que está mais acima ocorre antes: ++ -- ! * / % + - <> <= >= == != ^ && || = *= /= %= += -= Título da Apresentação
  • 82. Curso Java Básico Estrutura da linguagem Comandos de Fluxo a maioria dos programas tomam decisões que afetam seu fluxo; as declarações que tomam essas decisões são chamadas de comandos de controle de fluxo. Título da Apresentação
  • 83. Curso Java Básico Estrutura da linguagem Comandos de Fluxo: Comandos de Decisão if...else executa, condicionalmente, um bloco de comandos, dependendo do valor de uma expressão; Sintaxe: if (condição) {bloco de comandos} [else {bloco de comandos} ] Exemplo: if ( fim == true ) System.out.println(“Término!”); else System.out.println(“Continuando...”); Título da Apresentação
  • 84. Curso Java Básico Estrutura da linguagem Comandos de Fluxo: Comandos de Decisão if...else para mais de um comando ser executado depois da declaração, utiliza-se o conceito de blocos, delimitados por { }; Exemplo: if ( fim == true ){ cont = 0; System.out.println(“Término!”); } else { cont = cont +1; System.out.println(“Continuando...”); } Exemplo 12 Título da Apresentação
  • 85. Curso Java Básico Estrutura da linguagem Comandos de Fluxo: Comandos de Decisão Operador Condicional ?: uma alternativa para o comando if...else é a utilização do operador condicional “?:”; ele é o único operador ternário do Java; sintaxe: (expressão lógica) ? expressão 1 : expressão 2; caso a expressão booleana retorne um valor verdadeiro (true), a expressão 1 é executada; caso retorne um valor falso (false), a expressão 2 é executada. Título da Apresentação
  • 86. Curso Java Básico Estrutura da linguagem Comandos de Fluxo: Comandos de Decisão Operador Condicional ?: Exemplo: int total = (salario < 1000) ? salario : salario – desconto; no exemplo acima, se a variável salario for menor que 1000, é atribuído o valor de salario a variável total, mas se a variável salário for maior ou igual a que 1000, a variável total recebera o valor da variável salário menos a variável desconto. Título da Apresentação
  • 87. Curso Java Básico Estrutura da linguagem Comandos de Fluxo: Comandos de Decisão switch a instrução switch é utilizada quando precisamos selecionar uma ação dentro de um número de possibilidades; switch executa um, de vários grupos de comandos, dependendo de uma expressão inteira; a expressão de comparação do switch deve ser um char, um byte, um short ou um int; não é permitido outro tipo primitivo ou objeto; o valor resultante da expressão inteira é comparado com cada um dos itens constantes nas cláusulas case; a ordem em que as cláusulas aparecem é importante, visto que a comparação é feita seqüencialmente; uma cláusula opcional default pode aparecer no final do comando. Título da Apresentação
  • 88. Curso Java Básico Estrutura da linguagem Comandos de Fluxo: Comandos de Decisão switch sintaxe: switch ( expressão_teste ) { [case expressão constante 1: comandos] ... [default: comandos;] } Título da Apresentação
  • 89. Curso Java Básico Estrutura da linguagem Comandos de Fluxo: Comandos de Decisão switch Exemplo: switch ( diaSemana ){ case 1: System.out.println(“Hoje é segunda-feira”); break; case 2: System.out.println(“Hoje é terça-feira ”); break; ... case 7: System.out.println(“Hoje é domingo”); break; default: System.out.println(“Opção inválida!”); } Exemplo 13 Título da Apresentação
  • 90. Curso Java Básico Estrutura da linguagem Comandos de Fluxo: Comandos de Decisão while executa um bloco de comandos enquanto uma condição for verdadeira; é a mais simples das estruturas de repetição (ou loop), onde a expressão de comparação é avaliada antes que o laço seja executado; utilizada quando não se quer que o corpo do laço seja necessariamente executado; Sintaxe: while (expressão booleana) { bloco de comandos; } Exemplo: while ( i != 0 ){ salario = salario * 0.5; i--; } Exemplo 14
  • 91. Curso Java Básico Estrutura da linguagem Comandos de Fluxo: Comandos de Decisão do...while executa um bloco de comandos enquanto uma condição for verdadeira; a expressão de comparação é avaliada depois que o laço for executado; utilizada quando se quer que o corpo do laço seja necessariamente executado;
  • 92. Curso Java Básico Estrutura da linguagem Comandos de Fluxo: Comandos de Decisão do...while Sintaxe: do { bloco de comandos; } while (expressão booleana); Exemplo: do { salario = salario * 0.5; i--; } while ( i != 0 ); Exemplo 15 Título da Apresentação
  • 93. Curso Java Básico Estrutura da linguagem Comandos de Fluxo: Comandos de Decisão for repete um grupo de comandos em um número específico de vezes; fornece uma expressão para inicializar as variáveis, seguida por uma expressão de comparação e depois um lugar para incrementar ou decrementar as variáveis de laço; a declaração pode ser um comando simples ou um bloco de comandos; Sintaxe: for (inicialização; terminação; incremento) { bloco de comandos; } Exemplo: for (i = 0; i < 20; i ++) salario = salario * 0.5; Título da Apresentação
  • 94. Curso Java Básico Estrutura da linguagem Comandos de Fluxo: Comandos de Decisão for a seção de inicialização é executada uma única vez, quando se entra no laço; a inicialização pode ser vazia se a variável da condição já tiver sido inicializada antes do laço; a seção de terminação é uma expressão lógica que é verificada no início de cada uma das iterações do laço; a terminação também pode ser vazio, caso onde precisaríamos de uma instrução break para sair do laço; a seção de incremento é uma expressão (ou expressões separadas por vírgula) que é executada em cada iteração do laço; não é obrigatório que essa expressão esteja relacionada com o controle do laço; o incremento também pode ser vazio. Título da Apresentação
  • 95. Curso Java Básico Estrutura da linguagem Comandos de Fluxo: Comandos de Decisão for na versão 5, o java ampliou a utilização do comando for, agora com sintaxe simplifica e normalmente chamado de quot;for estendidoquot; Exemplo: ... int[] mat = { 3, 4, 5, 6 }; for( int x:mat ) { System.out.println( x ); } o laço estendido cria a variável de controle interna para percorrer um conjunto (vetor ou Coleções, que veremos adiante) a cada iteração um valor do conjunto é passado para a variável x e executado o bloco de instruções. Exemplo 16 Título da Apresentação
  • 96. Curso Java Básico Estrutura da linguagem Comandos de Fluxo: Comandos de Decisão break o comando break desvia o fluxo de execução de um programa para o fim de um laço ou de uma instrução switch; utilizada para sair de um laço antes do normal; o laço irá encerrar independentemente de seu valor de comparação e a declaração após o laço será executada. Exemplo: int i = 0; while (true) { System.out.println(i); i++; if ( i > 10 ) break; } Exemplo 17 Título da Apresentação
  • 97. Curso Java Básico Estrutura da linguagem Comandos de Fluxo: Comandos de Decisão continue o comando continue desvia o fluxo de execução de um laço para o próxima iteração, abandonando a iteração em que se encontra; Exemplo: for (int i = -10; i<10; i++) { if ( i == 0 ) continue; System.out.println(1/i); } Exemplo 18 Título da Apresentação
  • 98. Curso Java Básico Estrutura da linguagem Comandos de Fluxo: Comandos de Decisão return comando utilizado para transferir controle entre métodos; retorna informações de métodos, encerrando a execução e retornando para o local de onde o método foi chamado; Sintaxe: return valor; exemplo: class Teste{ public int Potencia ( int base, int n){ int result = base; for ( int i = 0; i < n-1; i ++ ) result = result * base; return result; } } Exemplo 19 Título da Apresentação
  • 99. Curso Java Básico Classes em Java O desenvolvimento de aplicações Java sempre é feito através de classes. Uma aplicação Java sempre terá a seguinte estrutura: class NomedaClasse { // Atributos // Métodos public static void main( String args[] ) { //corpo principal do programa } } Título da Apresentação
  • 100. Curso Java Básico Classes em Java Uma aplicação em Java é caracterizada por possuir o método main(); O método main é o método chamado pelo interpretador Java quando executado; A declaração do método main deve ser: public static void main( String args[] ) ou public static void main(String... args) (desde 1.5) define um método de acesso público (public), sem retorno (void), que recebe como parâmetro um array de strings de tamanho indefinido representado pela variável args (onde são passados os argumentos da linha de comando para a aplicação) a única alteração que pode ser feita é no nome do array (args). Título da Apresentação
  • 101. Curso Java Básico Classes em Java Classes e Objetos classe é uma descrição de algo existente no domínio do problema (aplicação); é usada na criação de múltiplos objetos; é a descrição dos dados (atributos) e do comportamento (métodos) de um objeto; um objeto é uma instância particular de um tipo de dado específico (classe); objeto é uma instância de uma classe; instanciar um objeto é criar seu espaço de memória e repassar um ponteiro para ele; Título da Apresentação
  • 102. Curso Java Básico Classes em Java Classes e Objetos quando um objeto é criado ele precisa ser inicializado, precisa ser carregado com a referência (o endereço) de um espaço de memória alocado para o seu armazenamento para uma única classe podemos ter vários objetos durante a execução de um programa. em um programa orientado a objetos temos muitos objetos se relacionando entre si; a interação entre objetos é feita através de mensagens; um objeto “chama” os métodos de outro, passando parâmetros quando necessário; a esta interação entre objetos chama-se troca de mensagens. Exemplo 20 Título da Apresentação
  • 103. Curso Java Básico Classes em Java Classes e Objetos – Exercício 1 Implemente o relacionamento quot;uma empresa possui vários endereçosquot; (um de cada filial). Os dados da empresa são: Nome, CNPJ e nome do dono. Os dados de cada um de seus endereços são: tipo de logradouro (AVENIDA, RUA, BECO), NÚMERO e CEP. Título da Apresentação
  • 104. Curso Java Básico Classes em Java Métodos Um método descreve o comportamento de uma classe; Um método de uma classe tem a seguinte estrutura genérica: <visibilidade> <static> <tipo_retorno> <nome_método> (<parâmetros>) { // corpo ou escopo do método }
  • 105. Curso Java Básico Classes em Java Métodos <visibilidade> - é o modificador de acesso para o método, podendo ser: public – o método poderá ser acessado por qualquer classe. private - o método só poderá ser acessado dentro da mesma classe. default (package) – o método só poderá ser acessado dentro da própria classe ou por classes do mesmo pacote. Modificador utilizado por default, caso não seja especificado. protected – o método só poderá ser acessado por classes do mesmo pacote ou por subclasses (veremos isto em herança). <static> - modificador que define se o método é de classe (com static) ou de instância (sem static). Métodos de classe podem ser chamado sem a especificação de um objeto. Título da Apresentação
  • 106. Curso Java Básico Classes em Java Métodos <tipo_retorno> - declaração do tipo de retorno do método, que pode ser qualquer um dos tipos primitivos, qualquer objeto ou o tipo void, que significa que o método não retorna valor algum. (<parâmetros>) um método pode ter zero ou mais argumentos, também chamados parâmetros; cada argumento indicará um pedaço da informação que deve ser passada ao método no momento de sua chamada; quando houver mais de um argumento, eles devem ser separados por vírgulas; caso o método não receba argumentos, os parênteses devem ser deixados vazios. Título da Apresentação
  • 107. Curso Java Básico Classes em Java Métodos Em Java todos os argumentos são passados por valor; Não existe passagem por referência; Se o parâmetro for uma variável de tipo primitivo o valor da variável é passada no parâmetro e pode ser alterada dentro do método que não será refletido na variável externa; Com objetos o efeito é diferente, já que o valor passado no parâmetro do método é a referência para o objeto, ou seja, se um objeto for alterado dentro do método, o objeto externo também será alterado; Exemplo 21
  • 108. Curso Java Básico Classes em Java Métodos No Java 5 foi introduzido o conceito de varargs, que permite a passagem de um número variável de argumentos a um método; Dentro do método os argumentos variáveis são tratados como arrays do tipo que foi definido; No caso dos exemplos abaixo, um array de int (int[ ]) ou de String. Exemplo: ... void metodo( int... args ) { for( int i : args ) { System.out.println( i ); } } ... metodo( 1 ); metodo( 1, 2, 3 );
  • 109. Curso Java Básico Classes em Java Métodos Esta funcionalidade alivia o trabalho de o desenvolvedor ter que criar arrays com valores e passar aos métodos. Algumas regras aplicadas aos métodos: Exemplo 22 métodos retornam, no máximo, um valor, podendo ser uma variável ou um objeto; se o tipo de retorno do método não for void, o corpo do método tem de ter um comando return; a passagem de parâmetros com tipo diferente dos parâmetros recebidos (assinatura do método) gera erro de sintaxe; um método não pode ser definido dentro de outro método; métodos devem ter sua função bem definida, para promover a reutilização de código. Título da Apresentação
  • 110. Curso Java Básico Classes em Java Métodos – Exercício 2 A partir das classes criadas no Exercício 1, declare dois método para impressão dos dados de um objeto empresa, sendo este passado como parâmetro para o método. Cada um dos métodos realiza a impressão em uma forma distinta de saída: pelo console e por meio de uma caixa de mensagem.
  • 111. Curso Java Básico Classes em Java Sobrecarga Métodos Exemplo: public class Empregado { ... public void defineCampo(int valor) { idade = valor; } public void defineCampo(String valor) { nome = valor; } public void defineCampo(int valor1, String valor2) { idade = valor1; nome = valo2; } ... }
  • 112. Curso Java Básico Classes em Java Sobrecarga Métodos Na hora da chamada de um dos métodos, o compilador Java escolhe o método correto baseado nos parâmetros fornecidos. Exemplo: ... Empregado emp = new Empregado(); emp.defineCampo(20); emp.defineCampo(“Maria”); ... Exemplo 23
  • 113. Curso Java Básico Classes em Java Sobrecarga Métodos – Exercício 3 Crie uma classe que sobrecarregue um método que retorna o triplo de um número, sendo este um inteiro(int) ou um número fracionário (double ou float).
  • 114. Curso Java Básico Classes em Java Variáveis Variáveis são usadas em linguagens em geral para armazenar valores; Valores são passados para variáveis através de operações de atribuição atribuição de valores é feita através de literais Ex: int intQuantidadeAlunos = 14; atribuição de referências (endereços para valores) é feita através de operações de construção de objetos e, em dois casos, pode ser feita através de literais Ex: Conta contaClientePreferencial = new Conta(); String s = quot;abcdequot;; Não são tipos primitivos, int[] v = {1, 2, 3}; s e v são referências.
  • 115. Curso Java Básico Classes em Java Escopo de Variáveis Atributos de dados (declarados no bloco da classe): podem ser usados em qualquer lugar (qualquer bloco) da classe uso em outras classes depende de modificadores de acesso (public, private, etc); existem enquanto o objeto existir( ou enquanto a classe existir, se declarados static). Variáveis locais (declaradas dentro de blocos de procedimentos) existem enquanto o procedimento (método, bloco de controle de execução) estiver sendo executado; não pode ser usado fora do bloco; não pode ter modificadores de acesso (private, public, etc).
  • 117. Curso Java Básico Classes em Java Atributos modificadores tipo nome private static String numero; private static final double LIMMITE_MAXIMO; double saldo; Private int numEstoque = 8;
  • 118. Curso Java Básico Classes em Java Atributos – Modificadores de Acesso Atributos public podem ser acessados (lidos, alterados) por objetos de qualquer classe. Atributos private só podem ser acessados (lidos, alterados) dentro da própria classe onde foi declarado. Atributos protected podem ser acessados (lidos ou alterados) de qualquer classe dentro do mesmo pacote ou qualquer sub-classe. Se um atributo não tem modificador de acesso associado então ele é considerado “friendly”. Só é visível para objetos de classes dentro do mesmo pacote. Atributos final, torna o atributo constante; Atributo não pode ser alterado depois de inicializado; Atributo static: variáveis de classe vs variáveis de objeto Título da Apresentação
  • 119. Curso Java Básico Classes em Java Atributos de Objeto class Conta { String strNome; String strCpf; double dblSaldo; double dblSaldoMinimo; public Conta(double dblValorSaldoMinimo){ dblSaldoMinimo = dblValorSaldoMinimo; } public static void main(){ Conta a = new Conta(100.00); Conta b = new Conta(200.00); } Não utiliza o modificador static }
  • 120. Curso Java Básico Classes em Java Atributos de Classe class Conta{ String strNome; String strCpf; double dblSaldo; static double dblSaldoMinimo; } class Banco { public Banco(){ Conta c = new Conta(); Conta d = new Conta();} } Uso do modificador static … new Banco(); …
  • 121. Curso Java Básico Classes em Java Métodos construtores Métodos construtores são métodos especiais definidos com o mesmo nome da classe; Construtores são chamados automaticamente toda vez que um objeto da classe é criado; Os métodos construtores servem para inicializar as variáveis de instância de seus objetos e não possuem nenhum valor de retorno. Título da Apresentação
  • 122. Curso Java Básico Classes em Java Métodos construtores Exemplo: // Classe com dois construtores public class Enmpregado{ // Construtor padrão, sem parâmetros public Empregado() { } // Construtor para classe receber um inteiro e um String public Empregado(int valor1, String valor2) { int idade = valor1; String nome = new String; nome = valor2; } ... } Título da Apresentação
  • 123. Curso Java Básico Classes em Java Métodos construtores Toda e qualquer classe do Java possui um construtor padrão, que não faz nada nem recebe parâmetros, e que só será chamado se nenhum construtor for definido. Quando uma classe possui mais de um método com o mesmo, mas com parâmetros diferentes diz-se que houve um sobrecarga de métodos. Exemplo 24 Título da Apresentação
  • 124. Curso Java Básico Classes em Java Métodos construtores – Exercício 4 Altere o Exercício 2, de forma que: Seja possível criar um objeto do tipo Empresa, já inicializando os atributos de um objeto desse tipo ou sem inicializar qualquer um desses atributos com valores especificados. Neste último caso, faça as modificações necessárias para que os atributos sejam inicializados de forma que as strings sejam inicializadas com a senteça “Campo não informadoquot;.
  • 125. Curso Java Básico Classes em Java Referência this Os métodos de instância de uma classe Java possuem um parâmetro implícito que se refere ao objeto atual sobre o qual o método foi chamado; Este parâmetro é referenciado pela palavra chave this, e é utilizado quando é necessário enviar a própria referência do objeto para uma rotina. Exemplo 25 Título da Apresentação
  • 126. Curso Java Básico Classes em Java Modificadores de Classe Modificadores de acesso public Classes public podem ser instanciadas por qualquer objeto livremente. public class NomeClasse default (pacote) Classes sem modificador de acesso explícito, denomiado default, só podem ser instanciadas dentro da própria classe ou por classes do mesmo pacote. class NomeClasse
  • 127. Curso Java Básico Classes em Java Modificadores de classe Outros Modificadores final Classes final são classes que não permitem que você crie subclasses por herança delas. public final class NomeClasse abstract Classes abstract são classes que não permitem que um objeto as instancie, ou seja, serve para definir superclasses genéricas. public abstract class NomeClasse Título da Apresentação
  • 128. Curso Java Básico Classes em Java Herança e Polimorfismo Conceitos Básicos de Herança Herança é a possibilidade de criar objetos a partir de outros já existentes. Herança é uma característica da programação orientada a objetos que permite que classes herdem e estendam as funcionalidades e as características de outras classes. Uma subclasse é uma especialização da sua superclasse. Subclasse é também chamada de classe derivada, classe descendente ou classe filha; superclasse é também chamada de classe pai. Título da Apresentação
  • 129. Curso Java Básico Classes em Java Herança e Polimorfismo Conceitos Básicos de Herança Em Java, a herança é obtida através da palavra reservada extends seguida do nome da classe que está sendo estendida; Através da herança cria-se uma hierarquia de classes; Toda classe, por padrão, estende a classe java.lang.Object; Todos os métodos e atributos (public e protected) são herdados pela subclasse; Os construtores não são herdados; A palavra reservada super identifica métodos e atributos da superclasse; Em Java não é permitida herança múltipla, isto é, uma classe só pode estender uma e somente uma outra classe. Título da Apresentação
  • 130. Curso Java Básico Classes em Java Herança e Polimorfismo Conceitos Básicos de Herança public class Primata { public Primata() { // método construtor } String nomeCientifico; public void setNomeCientifico(String nomeCientifico) { ... } } Título da Apresentação
  • 131. Curso Java Básico Classes em Java Herança e Polimorfismo Conceitos Básicos de Herança public class Humano extends Primata{ public Humano() { // método construtor } String nome; int idade; int numeroIdentidade; public void setNome(String nome) { ... } public void setIdade(int idade) { ... } Título da Apresentação
  • 132. Curso Java Básico Classes em Java Herança e Polimorfismo Conceitos Básicos de Herança public void setNumeroIdentidade(int numeroIdentidade) { ... } ... } public class Homem extends Humano { public Homem() { // método construtor } String certMilitar; public void setCertMilitar(String certMilitar) { ... } ... } Título da Apresentação
  • 133. Curso Java Básico Classes em Java Herança e Polimorfismo Conceitos Básicos de Herança public class Mulher extends Humano { public Mulher() {// método construtor } ... } No exemplo acima, a classe Homem (subclasse de Humano) possui todos os atributos e métodos da classe Humano (sua superclasse) e os atributos da classe Primata, superclasse da classe Homem. Exemplo 26 Título da Apresentação
  • 134. Curso Java Básico Classes em Java Sobrescrita de Métodos Uma classe derivada (subclasse) recebe, através do mecanismo de herança, todos os métodos definidos na classe pai; Sobrescrever um método consiste em definir, na classe derivada, um método com a mesma assinatura (mesmos argumentos e tipo de retorno) de uma classe ascendente (classe pai em qualquer nível de herança); Esta funcionalidade permite que uma classe derivada altere um comportamento de um método herdado, sobrescrevendo-o; Com o sobrescrita, o método da superclasse fica escondido da subclasse podendo ser executado com a referência super; Título da Apresentação
  • 135. Curso Java Básico Classes em Java Sobrescrita de Métodos Atenção para não confundir os conceitos de sobrescrita de métodos e sobrecarga de métodos; na sobrecarga tem-se métodos dentro da mesma classe que possuem o mesmo nome, mas com parâmetros diferentes; na sobrescrita tem-se métodos de classes da mesma hierarquia de derivação com o mesmo nome, mesmos parâmetros e mesmo tipo de retorno. Exemplo 27 Título da Apresentação
  • 136. Curso Java Básico Classes em Java Sobrescrita de Métodos – Exercício 5 Implemente a seguinte hierarquia: As Classes Forma, FormaBidimensional e as classes que herdam desta, têm um método sobrescrito para obter a área da forma correspondente. Inclua na definição de cada método a impressão da senteça “Calculando a área da forma X”, onde X é o nome da classe; De forma similar, cada FormaTridimensional deve ter métodos sobrescritos obterArea e obterVolume para calcular a área da base e a superfície, respectivamente, da forma tridimensional. Inclua na definição de cada método a impressão da senteça “Calculando a área/volume da forma X”, onde X é o nome da classe; Título da Apresentação
  • 137. Curso Java Básico Classes em Java Polimorfismo Um objeto polimórfico é um objeto que pode ter formas diferentes, funcionalidades diferentes mas continua a pertencer a uma única classe; Java, permite que um objeto seja referido com uma variável que é do tipo de uma classe ascendeste (superclasses) , e a deteminação do comportamento do objeto (métodos a serem executados) será determinada em tempo de execução, dependendo do tipo de objeto instanciado; Isto é possível porque quando criamos uma referência a um tipo abstrato de dados, uma classe, o compilador Java considera que o objeto atribuído a essa referência será do tipo declarado e não do tipo usado para criar o objeto. Título da Apresentação
  • 138. Curso Java Básico Classes em Java Polimorfismo Exemplo: class Forma { public void desenhar() { System.out.println(quot;Formaquot;); } } class Circulo extends Forma { public void desenhar() { System.out.println(quot;Círculoquot;); } } Título da Apresentação
  • 139. Curso Java Básico Classes em Java Polimorfismo public class ExemploPolimorfismo { private static void desenha(Forma[] fs) { for (int i = 0; i < fs.length; i++) fs[i].desenhar(); } public static void main(String[] args) { Forma[] formas = new Forma[] { new Circulo(), new Forma(), new Quadrado(), new Triangulo() }; desenha(formas); } } Título da Apresentação
  • 140. Curso Java Básico Classes em Java O operador instanceof O operador instanceof é um mecanismo para determinar, em tempo de execução, se a classe de um objeto referenciado por uma variável é compatível com um determinado tipo de referência conhecido. a sintaxe do operador instanceof é a seguinte: variávelDoTipoReferencia instanceof NomeDaClasseConhecida; Exemplo 28 Título da Apresentação
  • 141. Curso Java Básico Classes em Java O operador instanceof Ao executar o código do Exemplo 28, a saída será: objForma é compatível com o tipo Forma objCirculo é compatível com o tipo Forma objCirculo é compatível com o tipo Circulo objQuadrado é compatível com o tipo Forma objQuadrado é compatível com o tipo Quadrado Observe que o operador instanceof identifica a compatibilidade de tipos no que se refere ao mesmo tipo do objeto referenciado (compatibilidade identificada quando comparado o objCirculo com a classe Circulo, por exemplo) e na herança de classes e interfaces (compatibilidade identificada quando comparado o objCirculo com a classe Forma, supertipo de Circulo, por exemplo). Título da Apresentação
  • 142. Curso Java Básico Classes em Java Interfaces Interfaces foram concebidas para criar um modelo de implementação de baixo acoplamento entre determinadas partes de um software; Uma interface é semelhante a uma classe, e descreve um aspecto de comportamento que várias classes podem possuir; Uma interface não possui atributos de instância nem métodos com implementação, mas pode possuir atributos de estáticos (finais de classe) e cabeçalhos de métodos (métodos abstratos) que deverão ser desenvolvidos nas classes que implementarão a interface; Para criar uma interface utilizamos a palavra reservada interface. Seus métodos não precisam ser declarados public abstratct, já que assim serão considerados por estar em uma interface.
  • 143. Curso Java Básico Classes em Java Interfaces public class Pessoa { String nome; String end; char sexo; int idade; public Pessoa ( String nm, String ed, char sx, int id ){ nome = nm; end = ed; sexo = sx; idade = id; } Título da Apresentação
  • 144. Curso Java Básico Classes em Java Interfaces public String AlterarCadastro ( ) { .... } public interface Aluno { boolean CadastrarAluno( int num_matricula, int cod_curso ); void InserirNotas( int num_matricula ); } class Universitario extends Pessoa implements Aluno { public boolean CadastrarAluno( int num_matricula, int cod_curso ) { ... } Título da Apresentação
  • 145. Curso Java Básico Classes em Java Interfaces public void InserirNotas( int num_matricula ){ ... } } Para implementar uma interface, usa-se a palavra-chave implements seguida do nome da interface, ou interfaces, visto que não há limite para quantidade de classes em implementação. Exemplo 29
  • 146. Curso Java Básico Classes em Java Interfaces – Exercício 6 Crie uma interface Conta e declare nesta os métodos necessários para realizar as seguintes operações comuns a um tipo qualquer de conta: Obter o saldo atual da conta; Atualizar o saldo atual da conta; Obter a data da última alteração (não se preocupe com formatação dessa informação); Definir a data da atualização realizada; Obter nome do proprietário da conta; Definir o nome do proprietario da conta; Obter CPF do proprietário da conta; Definir CPF do proprietário da conta; Verificar validação do número de algarismos do CPF do proprietário da conta (se tem 11 algarismos);
  • 147. Curso Java Básico Classes em Java Interfaces – Exercício 6 (continuação) Crie ainda duas classes (concretas) para representa uma Conta Corrente e uma Conta Poupança, de forma que ambas as classes implementem a interface Conta, criada anteriormente; Acrescente na classe conta corrente um atributo e dois métodos para obtenção e atualização da informação sobre o número de cheques emitidos; Na classe que representa a conta poupança acrescente um atributo e dois métodos para obtenção e atualização da taxa de reajuste (valor fracionário); Crie uma classe Banco de forma que sejam possam ser armazenados e recuperados os seguintes dados: Nome do Banco, CNPJ e dois arranjos, com 100 posições cada, para incluir dados de contas correntes e contas poupança dos clientes com conta no banco; Acrescente um método para listagem de todos os dados do banco.
  • 148. Curso Java Básico Exercício Completo 1 Utilize os conceitos de herança, modificadores de acesso e as demais classes da API apresentadas para representar o seguinte diagrama de classes:
  • 149. Curso Java Básico Exercício Completo 1 - continuação Adicione à sua solução uma classe de Validação e declare nesta os seguintes métodos: a chave de acesso deve conter 14 caracteres; UF deve corresponder a um dos seguintes valores: BA, SP, MG, GO ou RJ; o campo Situação deve conter um dos seguintes valores: Autorizada, Cancelada, Denegada ou Inutilizada; o código do medicamento deve atender a seguinte expressão regular {001, 002, 003}01. Imprima na tela um objeto do tipo NFeMedicamento e outro NFeArmamento em formato XML .Veja o exemplo 2 com o uso da biblioteca Xstream. Em caso de dúvida, consulte a API.
  • 150. Curso Java Básico Conversão e Cast Conversões entre Tipos Primitivos de Dados A linguagem Java não suporta atribuições arbitrárias entre variáveis de tipos diferentes. Existem duas maneiras de fazer conversões de tipos: conversão implícita: quando o tamanho de uma variável é maior que o tamanho da variável ou o valor que está sendo atribuído. Exemplo: int y = 10; long x = y; Título da Apresentação
  • 151. Curso Java Básico Conversão e Cast Conversões entre Tipos Primitivos de Dados conversão explícita: é necessária quando o tamanho de uma variável é menor que o tamanho da variável ou o valor que está sendo atribuído. Exemplo: long y = 10L; int x = (int) y; o tamanho de long é maior que o de int, portanto necessita indicar uma conversão. esta indicativa é feita pelo tipo da variável, que irá receber o valor, entre parênteses: (int). Se esta informação não for colocada, ocorreria um erro de compilação indicando tipos incompatíveis. Outra forma é usar as constantes de identificação de tipos para fazer uma conversão explícita, como em: long y = 10L; Para um processo de conversão explícito, utilizamos um mecanismo chamado de casting. Para sinalizar um casting coloca-se o nome do tipo para o qual se quer converter entre parênteses. Título da Apresentação