Linguagem de Programação IAnálise e Desenvolvimento de Sistemas2º SemestreProf. Oziel Moreira Netooziel.neto@gmail.comhttp...
oziel moreira neto – oziel.neto@gmail.comLinguagem de Programação JavaAgenda  –   Iniciando  –   Conceitos  –   Arrays  – ...
Iniciando
oziel moreira neto – oziel.neto@gmail.comIniciando • Objetivos do módulo   – Capacitar o aluno no desenvolvimento de aplic...
Conceitos
oziel moreira neto – oziel.neto@gmail.comConceitosConceitos  –   Distribuições da Tecnologia Java  –   Tipos de Programas ...
oziel moreira neto – oziel.neto@gmail.comConceitosDistribuições da Tecnologia Java      Java ™              Java ™        ...
oziel moreira neto – oziel.neto@gmail.comConceitosTipos de programas Java • Stand-Alone • Java Applets™                 • ...
oziel moreira neto – oziel.neto@gmail.comConceitos“Key Features” da Tecnologia Java •   Simples               • Portável •...
oziel moreira neto – oziel.neto@gmail.comConceitosConceitos errados sobre Java• Java é uma extensão do HTML• Java é apenas...
oziel moreira neto – oziel.neto@gmail.comConceitosPalavras Reservadasabstract   double       int                 strictfp ...
oziel moreira neto – oziel.neto@gmail.comConceitosEntendendo a Plataforma Java                     • JVM – Java Virtual Ma...
oziel moreira neto – oziel.neto@gmail.comConceitosEntendendo a Java Runtime Enviromnent                 bytecode         J...
oziel moreira neto – oziel.neto@gmail.comConceitosEntendendo a Portabilidade do Java
oziel moreira neto – oziel.neto@gmail.comConceitosDefinição de Nomes  • Um nome pode ser composto por letras (minúsculas  ...
oziel moreira neto – oziel.neto@gmail.comConceitosAnatomia de uma Classe Java
oziel moreira neto – oziel.neto@gmail.comConceitosAplicações Java Stand-Alonepublic static void main(String args[]) {} • T...
oziel moreira neto – oziel.neto@gmail.com      ConceitosOperadores       Negação                           !       Increme...
oziel moreira neto – oziel.neto@gmail.comConceitosOperadores de bits      Deslocamento a esquerda                  <<     ...
oziel moreira neto – oziel.neto@gmail.comConceitosOperadores de Comparação      Igualdade                       ==      Ma...
oziel moreira neto – oziel.neto@gmail.comConceitos Estruturas de Repetição - FORsintaxe: // antes de iniciar o laço, é exe...
oziel moreira neto – oziel.neto@gmail.comConceitos Estruturas de Repetição - WHILEsintaxe: while (condicao booleana) {    ...
oziel moreira neto – oziel.neto@gmail.comConceitos Estruturas de Repetição – DO WHILE-sintaxe: do {        // bloco de cód...
oziel moreira neto – oziel.neto@gmail.comConceitos Estruturas de Seleção - IFsintaxe: if ( expressão booleana ) {       //...
oziel moreira neto – oziel.neto@gmail.com    Conceitos    Estruturas de Seleção - SWITCHsintaxe:switch ( variavel ) {     ...
oziel moreira neto – oziel.neto@gmail.comConceitosControle de Fluxo      Uso do continuefor(int i = 0; i < 10; i++){    if...
oziel moreira neto – oziel.neto@gmail.comConceitosControle de Fluxo      Uso do break  for(int i = 0; i < 10; i++){      i...
oziel moreira neto – oziel.neto@gmail.comConceitosControle de Fluxo Especiais        continue e break com label: fora: for...
oziel moreira neto – oziel.neto@gmail.comConceitosCriando Classes em Java• O que é abstração?• O que são objetos?   • Do q...
oziel moreira neto – oziel.neto@gmail.comConceitos • EncapsulamentoDefinimos uma interface de métodos                     ...
oziel moreira neto – oziel.neto@gmail.comConceitos • EncapsulamentoDessa forma, podemos alterar o código  dos métodos da c...
oziel moreira neto – oziel.neto@gmail.comConceitosDiscussão • O que se entende afinal pela Tecnologia e Plataformas   do J...
Arrays
oziel moreira neto – oziel.neto@gmail.comArraysAgenda  –   Java Arrays  –   Definindo Arrays  –   Cópia elementos  –   Man...
oziel moreira neto – oziel.neto@gmail.comArraysJava Arrays• Manipulação de conjunto de dados em  memória• Possuem quantida...
oziel moreira neto – oziel.neto@gmail.com ArraysJava Arrays   • Sintaxetipo identificador[] = new tipo[tamanho];   • Exemp...
oziel moreira neto – oziel.neto@gmail.comArraysJava Arrays• Visualização Gráfica  int[] inteiros = new int[10];
oziel moreira neto – oziel.neto@gmail.comArraysJava Arrays• Podem ter “n” dimensões formando matrizes  int[][] dados = new...
oziel moreira neto – oziel.neto@gmail.comArraysDefinindo elementos  • Valores podem ser atribuídos na definição   int[] in...
oziel moreira neto – oziel.neto@gmail.com  Arrays Copiando Elementosint original[] = { 1, 2, 3, 4, 5, 6 };int copia[] = ne...
oziel moreira neto – oziel.neto@gmail.comArraysManipulando elementos   String nomes[] = new String[10];   // preenchendo  ...
oziel moreira neto – oziel.neto@gmail.comArraysDiscussão • Para que servem os Arrays nas linguagens de   programação? •   ...
oziel moreira neto – oziel.neto@gmail.comArraysExercícios
Desenho Avançado de      Classes
oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de ClassesAgenda  –   Herança  –   Generalização e Especializaçã...
oziel moreira neto – oziel.neto@gmail.com Desenho Avançado de ClassesHerança•   ferramenta mais valiosa das linguagens e m...
oziel moreira neto – oziel.neto@gmail.com  Desenho Avançado de Classes Herança                                    PessoaA ...
oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de Classes Generalização: Bottom-Up• Definição: Processo pelo qu...
oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de Classes Especialização: Top-Down• Definição: Processo pelo qu...
oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de ClassesRepresentação na UMLDefine um modelo completo para  so...
oziel moreira neto – oziel.neto@gmail.com Desenho Avançado de ClassesObjetos a partir de subclasses                       ...
oziel moreira neto – oziel.neto@gmail.com  Desenho Avançado de Classes Objetos a partir de subclasses        Pessoa       ...
oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de ClassesCodificando em Java•    Uma subclasse pode estender so...
oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de ClassesImplementação das Classes                   public cla...
oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de ClassesFormas de Herança•   Extensão.•   Especificação.•   Co...
oziel moreira neto – oziel.neto@gmail.com Desenho Avançado de ClassesPolimorfismo• POLIMORFISMO = Muitas Formas  Ou seja, ...
oziel moreira neto – oziel.neto@gmail.com Desenho Avançado de ClassesPolimorfismo  – Subclasses  – Sobrescrita de método  ...
oziel moreira neto – oziel.neto@gmail.com Desenho Avançado de Classes Polimorfismo    – Subclasses        • Quando especia...
oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de ClassesOverriding  – Sobrescrita de métodos  Definição: Esta ...
oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de ClassesOverriding  – Sobrescrita de métodos – Invocação Virtu...
oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de ClassesOverloading  – Sobrecarga de métodos   O Polimorfismo ...
oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de ClassesBenefícios do Polimorfismo   – Uso da Herança         ...
oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de ClassesBenefícios no Polimorfismo  – Maior facilidade de alte...
oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de ClassesRevisão
oziel moreira neto – oziel.neto@gmail.com Desenho Avançado de ClassesRefinando a Hierarquia de Classes  – Aplicação de Cla...
oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de ClassesUso de Classes, Métodos ou Atributos Final (final)Fina...
oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de ClassesUso de Classes, Métodos ou Atributos Final (final)Fina...
oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de ClassesUso de Classes, Métodos ou Atributos Final (final)Fina...
oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de ClassesUso de Classes e Métodos Abstratos (abstract)Abstract ...
oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de ClassesUso de Classes e Métodos Abstratos (abstract) public a...
oziel moreira neto – oziel.neto@gmail.com  Desenho Avançado de Classes Uso de Classes e Métodos Abstratos (abstract)Nesse ...
oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de ClassesUso de Interfaces (interface)Interfaces: Não podem ser...
oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de ClassesUso de Interfaces (interface)Usadas para definir apena...
oziel moreira neto – oziel.neto@gmail.com   Desenho Avançado de Classes  Uso de Interfaces (interface)           public cl...
oziel moreira neto – oziel.neto@gmail.com   Desenho Avançado de Classes  Uso de Interfaces (interface)Nesse modelo, vemos ...
oziel moreira neto – oziel.neto@gmail.com   Desenho Avançado de Classes  Uso de Interfaces (interface)Dessa forma umcarrin...
oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de ClassesUso de Interfaces (interface)public class Carrinho {  ...
oziel moreira neto – oziel.neto@gmail.com Desenho Avançado de ClassesOrganizando as Classes em Pacotes (package) Estrutura...
oziel moreira neto – oziel.neto@gmail.com   Desenho Avançado de Classes  Organizando as Classes em Pacotes (package)  Codi...
oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de ClassesDiscussão • Resumindo. O que se entende por Herança? •...
oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de ClassesExercícios
Manipulando Erros e     Exceções
oziel moreira neto – oziel.neto@gmail.comManipulando Erros e ExceçõesAgenda  –   O que são Erros e Exceções?  –   Hierarqu...
oziel moreira neto – oziel.neto@gmail.com  Manipulando Erros e Exceções O que são erros e exceções?São objetos e possuem c...
oziel moreira neto – oziel.neto@gmail.com  Manipulando Erros e Exceções O que são erros e exceções?São objetos e possuem c...
oziel moreira neto – oziel.neto@gmail.com   Manipulando Erros e Exceções  Hierarquia da exceçõesTodas as exceções e erros ...
oziel moreira neto – oziel.neto@gmail.com Manipulando Erros e ExceçõesExceções mais conhecidas• java.lang.ArithmeticExcept...
oziel moreira neto – oziel.neto@gmail.comManipulando Erros e ExceçõesExceções mais conhecidas• java.lang.RuntimeException ...
oziel moreira neto – oziel.neto@gmail.comManipulando Erros e ExceçõesCapturando e tratando exceçõesUsamos em Java uma estr...
oziel moreira neto – oziel.neto@gmail.comManipulando Erros e ExceçõesEstrutura try – catch - finallytry {   //   código qu...
oziel moreira neto – oziel.neto@gmail.com    Manipulando Erros e ExceçõesEstrutura try – catch - finallytry {             ...
oziel moreira neto – oziel.neto@gmail.comManipulando Erros e ExceçõesUsando try – catch - finallyimport java.io.*;public c...
oziel moreira neto – oziel.neto@gmail.com Manipulando Erros e ExceçõesCriando exceções CustomizadasGeralmente em Java, qua...
oziel moreira neto – oziel.neto@gmail.comManipulando Erros e ExceçõesCriando exceções Customizadas  Dessa forma criamos um...
oziel moreira neto – oziel.neto@gmail.comManipulando Erros e ExceçõesCriando exceções Customizadas public class SaldoInsuf...
oziel moreira neto – oziel.neto@gmail.com   Manipulando Erros e Exceções  Arremessando exceções Customizadaspublic class C...
oziel moreira neto – oziel.neto@gmail.comManipulando Erros e ExceçõesTratando exceções Customizadas  public class TesteCon...
oziel moreira neto – oziel.neto@gmail.comManipulando Erros e ExceçõesDiscussão • Já que as exceções em Java são objetos, e...
oziel moreira neto – oziel.neto@gmail.comManipulando Erros e ExceçõesExercícios
Desenvolvimento deAplicações em Java
oziel moreira neto – oziel.neto@gmail.comDesenvolvimento de Aplicações em JavaAgenda  –   Principais API’s  –   Parâmetros...
oziel moreira neto – oziel.neto@gmail.com  Desenvolvimento de Aplicações em Java  Principais API’sA funcionalidades princi...
oziel moreira neto – oziel.neto@gmail.com    Desenvolvimento de Aplicações em Java    Principais API’sOs principais pacote...
oziel moreira neto – oziel.neto@gmail.com Desenvolvimento de Aplicações em Java Parâmetros em linha de comandoUsamos a pas...
oziel moreira neto – oziel.neto@gmail.com    Desenvolvimento de Aplicações em Java    Parâmetros em linha de comandoCaptur...
oziel moreira neto – oziel.neto@gmail.com Desenvolvimento de Aplicações em Java Manipulando textos e cadeia de caracteresM...
oziel moreira neto – oziel.neto@gmail.com    Desenvolvimento de Aplicações em Java    Usos da Classe java.lang.Stringpubli...
oziel moreira neto – oziel.neto@gmail.com    Desenvolvimento de Aplicações em Java    Usos da classe StringBuffer e String...
oziel moreira neto – oziel.neto@gmail.com Desenvolvimento de Aplicações em Java Entrada e saída de dados.Basicamente um ap...
oziel moreira neto – oziel.neto@gmail.comDesenvolvimento de Aplicações em JavaJava StreamersUsados para manipular byte (AS...
oziel moreira neto – oziel.neto@gmail.comDesenvolvimento de Aplicações em JavaJava Streamers – java.io.InputStreamStreamer...
oziel moreira neto – oziel.neto@gmail.comDesenvolvimento de Aplicações em JavaJava Streamers – java.io.OutputStreamStreame...
oziel moreira neto – oziel.neto@gmail.comDesenvolvimento de Aplicações em JavaReaders e WritersUsados para manipular char ...
oziel moreira neto – oziel.neto@gmail.comDesenvolvimento de Aplicações em JavaReaders – java.io.ReaderReaders (entrada de ...
oziel moreira neto – oziel.neto@gmail.comDesenvolvimento de Aplicações em JavaWriters – java.io.WriterWriters (saída de da...
oziel moreira neto – oziel.neto@gmail.comDesenvolvimento de Aplicações em JavaCategorias e uso
oziel moreira neto – oziel.neto@gmail.comDesenvolvimento de Aplicações em JavaCategorias e uso
oziel moreira neto – oziel.neto@gmail.com    Desenvolvimento de Aplicações em Java    Exemplosimport java.io.*;public clas...
oziel moreira neto – oziel.neto@gmail.com    Desenvolvimento de Aplicações em Java    Exemplosimport java.io.*;public clas...
oziel moreira neto – oziel.neto@gmail.com  Desenvolvimento de Aplicações em Java  Exemplosimport java.io.*;public class Gr...
oziel moreira neto – oziel.neto@gmail.com Desenvolvimento de Aplicações em Java Arquivos de Acesso RandômicoUsados para ma...
oziel moreira neto – oziel.neto@gmail.com Desenvolvimento de Aplicações em Java Arquivos de Acesso RandômicoClasse: java.i...
oziel moreira neto – oziel.neto@gmail.com  Desenvolvimento de Aplicações em Java  Trabalho com Propriedades (Properties)Um...
oziel moreira neto – oziel.neto@gmail.com    Desenvolvimento de Aplicações em Java    Trabalho com Propriedades (Propertie...
oziel moreira neto – oziel.neto@gmail.com  Desenvolvimento de Aplicações em Java  Trabalho com Arquivos de PropriedadesPer...
oziel moreira neto – oziel.neto@gmail.com  Desenvolvimento de Aplicações em Java  Trabalho com Arquivos de PropriedadesLen...
oziel moreira neto – oziel.neto@gmail.com   Desenvolvimento de Aplicações em Java   Trabalho com Arquivos de PropriedadesO...
oziel moreira neto – oziel.neto@gmail.com  Desenvolvimento de Aplicações em Java  Serialização de ObjetosMecanismo exclusi...
oziel moreira neto – oziel.neto@gmail.com  Desenvolvimento de Aplicações em Java  Serialização de ObjetosQuando armazenamo...
oziel moreira neto – oziel.neto@gmail.com  Desenvolvimento de Aplicações em Java  Serialização de ObjetosPara serializar u...
oziel moreira neto – oziel.neto@gmail.comDesenvolvimento de Aplicações em JavaExemplos de Serialização de Objetos// Serial...
oziel moreira neto – oziel.neto@gmail.comDesenvolvimento de Aplicações em JavaExemplos de Serialização de Objetos  // clas...
oziel moreira neto – oziel.neto@gmail.com Desenvolvimento de Aplicações em Java Serialização de ObjetosQuando serializamos...
oziel moreira neto – oziel.neto@gmail.com  Desenvolvimento de Aplicações em Java  Coleções de Objetos – Java Collections™T...
oziel moreira neto – oziel.neto@gmail.com  Desenvolvimento de Aplicações em Java  Coleções de Objetos – Java Collections™A...
oziel moreira neto – oziel.neto@gmail.com  Desenvolvimento de Aplicações em Java  Coleções de Objetos – Java Collections™C...
oziel moreira neto – oziel.neto@gmail.com      Desenvolvimento de Aplicações em Java      Coleções de Objetos – Java Colle...
oziel moreira neto – oziel.neto@gmail.com Desenvolvimento de Aplicações em Java Coleções de Objetos – Java Collections™Tes...
oziel moreira neto – oziel.neto@gmail.com  Desenvolvimento de Aplicações em Java  Wrapper ClassesFinalidade de converter: ...
oziel moreira neto – oziel.neto@gmail.com Desenvolvimento de Aplicações em Java Wrapper ClassesExemplos:            // con...
oziel moreira neto – oziel.neto@gmail.comDesenvolvimento de Aplicações em JavaDiscussão • Vimos nesse capítulo uma série d...
oziel moreira neto – oziel.neto@gmail.comDesenvolvimento de Aplicações em JavaExercícios
Linguagem de Programação IAnálise e Desenvolvimento de Sistemas2º SemestreProf. Oziel Moreira Netooziel.neto@gmail.comhttp...
Upcoming SlideShare
Loading in …5
×

Lpj i ads2_apresentacao_aulas

364 views
296 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
364
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Lpj i ads2_apresentacao_aulas

  1. 1. Linguagem de Programação IAnálise e Desenvolvimento de Sistemas2º SemestreProf. Oziel Moreira Netooziel.neto@gmail.comhttp://blog.oziel.com.br
  2. 2. oziel moreira neto – oziel.neto@gmail.comLinguagem de Programação JavaAgenda – Iniciando – Conceitos – Arrays – Desenho Avançado de Classes – Manipulação de Erros e Exceções – Desenvolvimento de Aplicações
  3. 3. Iniciando
  4. 4. oziel moreira neto – oziel.neto@gmail.comIniciando • Objetivos do módulo – Capacitar o aluno no desenvolvimento de aplicações em Java usando as CORE APIs, bem como manipulação de arquivos, dados, interfaces gráficas e programação cliente-servidor. • Habilidades adquiridas – Codificar, compilar e executar aplicações em Java
  5. 5. Conceitos
  6. 6. oziel moreira neto – oziel.neto@gmail.comConceitosConceitos – Distribuições da Tecnologia Java – Tipos de Programas Java – “Key Features” da Tecnologia Java – Conceitos errados sobre Java – Palavras Reservadas – Entendendo a Portabilidade do Java – Entendendo a Java Runtime Enviromnent – Definição de Nomes – Anatomia de uma Classe Java – Aplicações Java Stand-Alone – Operadores – Controle de Fluxo – Criando Classes – Encapsulamento
  7. 7. oziel moreira neto – oziel.neto@gmail.comConceitosDistribuições da Tecnologia Java Java ™ Java ™ Java ™ Standard Edition Enterprise Edition Micro Edition• Cliente/Servidor • eBusiness • Telefone celular• Applet • eCommerce • Dispositivos eletrônicos• Departamental • Corporativo • Móvel
  8. 8. oziel moreira neto – oziel.neto@gmail.comConceitosTipos de programas Java • Stand-Alone • Java Applets™ • Java Servlets™ • Java Midlets™ • JavaBeans™
  9. 9. oziel moreira neto – oziel.neto@gmail.comConceitos“Key Features” da Tecnologia Java • Simples • Portável • Orientada a objetos • Interpretada • Distribuída • Alto desempenho • Robusta • Múltiplas linhas de • Segura execução • Neutra em relação à • Dinâmica Plataforma
  10. 10. oziel moreira neto – oziel.neto@gmail.comConceitosConceitos errados sobre Java• Java é uma extensão do HTML• Java é apenas outra linguagem• Todos os programas Java executam em páginas Web• O Javascript é uma versão “Light” da linguagem Java• Java é interpretado, muito lento para aplicações sérias• Java é uma linguagem de programação fácil de aprender• Java é um ambiente fácil no qual programar
  11. 11. oziel moreira neto – oziel.neto@gmail.comConceitosPalavras Reservadasabstract double int strictfp **boolean else interface superbreak extends long switchbyte final native synchronizedcase finally new thiscatch float package throwchar for private throwsclass goto * protected transientconst * if public trycontinue implements return voiddefault import short volatiledo instanceof static while
  12. 12. oziel moreira neto – oziel.neto@gmail.comConceitosEntendendo a Plataforma Java • JVM – Java Virtual Machine Máquina Virtual Java JDK JRE • JRE – Java Runtime Environmnent Ambiente de execução de aplicativos Java JVM • JDK – Java Development Kit Ambiente de desenvolvimento Java Também chamado de J2SDK – Java 2 Software Development Kit
  13. 13. oziel moreira neto – oziel.neto@gmail.comConceitosEntendendo a Java Runtime Enviromnent bytecode Java Virtual MachineSistema Operacional
  14. 14. oziel moreira neto – oziel.neto@gmail.comConceitosEntendendo a Portabilidade do Java
  15. 15. oziel moreira neto – oziel.neto@gmail.comConceitosDefinição de Nomes • Um nome pode ser composto por letras (minúsculas e/ou maiúsculas), dígitos e os símbolos _ e $. • Um nome não pode ser iniciado por um dígito (0 a 9). • Letras maiúsculas são diferenciadas de letras minúsculas. (Full Sensitive Case) • Uma palavra-chave da linguagem Java não pode ser um identificador.
  16. 16. oziel moreira neto – oziel.neto@gmail.comConceitosAnatomia de uma Classe Java
  17. 17. oziel moreira neto – oziel.neto@gmail.comConceitosAplicações Java Stand-Alonepublic static void main(String args[]) {} • Toda classe Java que possui o método acima, pode ser iniciada numa JRE exclusiva, no modo Stand- Alone • Nem todas as classes Java necessitam ter esse método
  18. 18. oziel moreira neto – oziel.neto@gmail.com ConceitosOperadores Negação ! Incremento / Decremento ++, -- Representação de sinal +, - Inversão ~ Conversão (cast) Atribuição = Soma + Subtração - Divisão / Multiplicação * Resto da Divisão % Incremento / Decremento ++, -- Representação de sinal +, - Condicional ternário ?:
  19. 19. oziel moreira neto – oziel.neto@gmail.comConceitosOperadores de bits Deslocamento a esquerda << Deslocamento a direita >> Deslocamento a direita (unsigned) >>> Inversão de bits ~ Resto da Divisão % Complemento (XOR) ^
  20. 20. oziel moreira neto – oziel.neto@gmail.comConceitosOperadores de Comparação Igualdade == Maioridade < Menoridade > Maior ou igual >= Menor ou igual <= Diferente !=
  21. 21. oziel moreira neto – oziel.neto@gmail.comConceitos Estruturas de Repetição - FORsintaxe: // antes de iniciar o laço, é executada a // declaração for ( declaracao; condicao booleana; expressao ) { // bloco de código que sera repetido // ate que a condição booleana seja false // antes da execução iniciar o proximo laço // sera a executada a expressao }
  22. 22. oziel moreira neto – oziel.neto@gmail.comConceitos Estruturas de Repetição - WHILEsintaxe: while (condicao booleana) { // bloco de código que sera repetido // ate que a condição booleana seja false }
  23. 23. oziel moreira neto – oziel.neto@gmail.comConceitos Estruturas de Repetição – DO WHILE-sintaxe: do { // bloco de código que sera repetido // ate que a condição booleana seja false } while ( condicao booleana );
  24. 24. oziel moreira neto – oziel.neto@gmail.comConceitos Estruturas de Seleção - IFsintaxe: if ( expressão booleana ) { // bloco de código que será executado // se a expressão booleana valer true. } else { // bloco de código que será executado // se a expressão booleana valer false. }
  25. 25. oziel moreira neto – oziel.neto@gmail.com Conceitos Estruturas de Seleção - SWITCHsintaxe:switch ( variavel ) { case (inteiro): // caso o valor da variavel seja igual // ao do inteiro, inicia aqui case (inteiro): // caso o valor da variavel seja igual // ao do inteiro, inicia aqui default: // caso não seja nenhum acima, inicia aqui}
  26. 26. oziel moreira neto – oziel.neto@gmail.comConceitosControle de Fluxo Uso do continuefor(int i = 0; i < 10; i++){ if (i == 5){ continue; } //....}
  27. 27. oziel moreira neto – oziel.neto@gmail.comConceitosControle de Fluxo Uso do break for(int i = 0; i < 10; i++){ if (i == 5){ break; } //.... }
  28. 28. oziel moreira neto – oziel.neto@gmail.comConceitosControle de Fluxo Especiais continue e break com label: fora: for(int i = 0; i < 10; i++){ for(int j = 0; j < 10; j++){ if (j == 5){ continue fora; } //.... }
  29. 29. oziel moreira neto – oziel.neto@gmail.comConceitosCriando Classes em Java• O que é abstração?• O que são objetos? • Do que eles são constituídos?• O que são classes? • Do que elas são constituídas?• Qual a relação entre classe e objeto?• Quais são os membros de uma classe? • Atributos, métodos e construtores!
  30. 30. oziel moreira neto – oziel.neto@gmail.comConceitos • EncapsulamentoDefinimos uma interface de métodos pedido: Pedido públicos fornecendo acesso a informação do objeto - pedidoID: String - clienteID: String - notaFiscal:String - total: double Atributos privados - ICMS: double - produtos: List + adcionarProduto(Produto) + removerProduto(produtoID) + recuperaProduto(produtoID) Métodos públicos + calculaTotal(): double + calculaImpostos(): double + encerraPedido(): double + Pedido(pedidoID, clienteID)
  31. 31. oziel moreira neto – oziel.neto@gmail.comConceitos • EncapsulamentoDessa forma, podemos alterar o código dos métodos da classe Pedido sem pedido: Pedido alterar a classe Cliente. - pedidoID: String - clienteID: String não permitido - notaFiscal:String - total: double Atributos privados - ICMS: double - produtos: List Cliente + adcionarProduto(Produto) + removerProduto(produtoID) + recuperaProduto(produtoID) Métodos públicos + calculaTotal(): double permitido + calculaImpostos(): double + encerraPedido(): double + Pedido(pedidoID, clienteID)
  32. 32. oziel moreira neto – oziel.neto@gmail.comConceitosDiscussão • O que se entende afinal pela Tecnologia e Plataformas do Java? • Sabendo que uma classe Java pode facilmente ser modelada, então é fácil analisa-la e codifica-la? • Programar em Java, não é só codificar? Exige um entendimento prévio do problema?
  33. 33. Arrays
  34. 34. oziel moreira neto – oziel.neto@gmail.comArraysAgenda – Java Arrays – Definindo Arrays – Cópia elementos – Manipulando elementos
  35. 35. oziel moreira neto – oziel.neto@gmail.comArraysJava Arrays• Manipulação de conjunto de dados em memória• Possuem quantidade limitada de itens• Podem ser usados com objetos ou primitivos• Usamos para definir matrizes ou vetores
  36. 36. oziel moreira neto – oziel.neto@gmail.com ArraysJava Arrays • Sintaxetipo identificador[] = new tipo[tamanho]; • Exemplos int[] inteiros = new int[10]; String[] nomes = new String[10];
  37. 37. oziel moreira neto – oziel.neto@gmail.comArraysJava Arrays• Visualização Gráfica int[] inteiros = new int[10];
  38. 38. oziel moreira neto – oziel.neto@gmail.comArraysJava Arrays• Podem ter “n” dimensões formando matrizes int[][] dados = new int[10][10]; dados[0][0] = 100;
  39. 39. oziel moreira neto – oziel.neto@gmail.comArraysDefinindo elementos • Valores podem ser atribuídos na definição int[] inteiros = {10,8,5,10,9}; • Tamanho pode ser obtido pela propriedade length System.out.print(inteiros.length);
  40. 40. oziel moreira neto – oziel.neto@gmail.com Arrays Copiando Elementosint original[] = { 1, 2, 3, 4, 5, 6 };int copia[] = new int[10];System.arraycopy(original, 0, copia, 0, original.length);
  41. 41. oziel moreira neto – oziel.neto@gmail.comArraysManipulando elementos String nomes[] = new String[10]; // preenchendo for (int i=0; i < nomes.length; i++) { nomes[i] = new String("Valor: "+i); } // imprimindo na tela for (int i=0; i < nomes.length; i++) { System.out.print( nomes[i]+ " " ); }
  42. 42. oziel moreira neto – oziel.neto@gmail.comArraysDiscussão • Para que servem os Arrays nas linguagens de programação? • Vetores e matrizes são elementos complexos de manipular, não existe nada mais fácil em Java para se manipular objetos? • Quando um objeto tiver uma relação múltipla com outro, vamos definir usando arrays?
  43. 43. oziel moreira neto – oziel.neto@gmail.comArraysExercícios
  44. 44. Desenho Avançado de Classes
  45. 45. oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de ClassesAgenda – Herança – Generalização e Especialização – Representação UML – Objetos a partir de subclasses – Codificando em Java – Implementação das classes – Formas de Herança – Polimorfismo – Overloading – Overriding – Benefícios do Polimorfismo – Refinando a Hierarquia de Classes – Uso de Classes, Métodos e Variáveis Final – Uso de Classes e Métodos Abstratos – Uso de Interfaces – Pacotes
  46. 46. oziel moreira neto – oziel.neto@gmail.com Desenho Avançado de ClassesHerança• ferramenta mais valiosa das linguagens e modelos baseados em OO;• possibilita reutilizar uma grande quantidade de código e componentes.• facilita a criação de classes partir de superclasses.• Definição: “capacidade de um objeto filho herdar atributos e métodos do objeto pai, podendo reescrever (alterar) as características herdadas se necessário”.
  47. 47. oziel moreira neto – oziel.neto@gmail.com Desenho Avançado de Classes Herança PessoaA classe “cliente” é uma - nome: String - nascimento: Data subclasse da classe + getNome(): String “pessoa”, e herda todos os + getDate() :Date atributos e métodos da +Pessoa(nome) classe “pessoa”.Cliente é uma subclasse de Cliente Pessoa. - clienteID: String - CPF: StringPessoa é uma superclasse de + getClienteID(): String Cliente + getCPF() : String + Cliente(clienteID,CPF) Construtores não são herdados
  48. 48. oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de Classes Generalização: Bottom-Up• Definição: Processo pelo qual identificamos atributos comuns em classes diferentes que são colocados numa superclasse, menos específica e mais genérica.
  49. 49. oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de Classes Especialização: Top-Down• Definição: Processo pelo qual identificamos atributos incomuns em classes diferentes que são colocados nas subclasses de uma superclasse, tornando-a mais específica e menos genérica .
  50. 50. oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de ClassesRepresentação na UMLDefine um modelo completo para solucionar um problema computacional.
  51. 51. oziel moreira neto – oziel.neto@gmail.com Desenho Avançado de ClassesObjetos a partir de subclasses Jose:Pessoa Pessoa nome = Jose Silva - nome: String nascimento: 10/01/1970 - nascimento: Data + getNome(): String + getDate() :Date +Pessoa(nome) Joao:Pessoa nome = Joao Souza nascimento: 10/10/1980Instancias de Pessoa: Jose e Joao
  52. 52. oziel moreira neto – oziel.neto@gmail.com Desenho Avançado de Classes Objetos a partir de subclasses Pessoa Mario:Cliente - nome: String - nascimento: Data nome = Mario Silva Souza + getNome(): String nascimento: 01/05/1970 + getDate() :Date clienteID = 0056 +Pessoa(nome) CPF: 12345678-00 Instancias de Cliente: Mario e Oscar Cliente Oscar:Cliente- clienteID: String- CPF: String nome = Oscar Souza+ getClienteID(): String nascimento: 02/02/1987+ getCPF() : String clienteID = 0058+ Cliente(clienteID,CPF) CPF: 87654321-00
  53. 53. oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de ClassesCodificando em Java• Uma subclasse pode estender somente uma superclasse diretamente. A herança em Java é simples.• A keyword extends na definição de classe, define a relação de herança. public class Pessoa { // definição de classe } public class Cliente extends Pessoa { // definição de classe }
  54. 54. oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de ClassesImplementação das Classes public class Produto { // definição de classe } public class Livro extends Produto { // definição de classe } public class CompactDisc extends Produto { // definição de classe }
  55. 55. oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de ClassesFormas de Herança• Extensão.• Especificação.• Combinação de Extensão com Especificação. Durante a modelagem, devemos aplicar a herança com critério!
  56. 56. oziel moreira neto – oziel.neto@gmail.com Desenho Avançado de ClassesPolimorfismo• POLIMORFISMO = Muitas Formas Ou seja, para uma árvore de herança, temos muitas formas de objetos e métodos a partir de uma superclasse e suas subclasses.• Princípio pelo qual modelamos e usamos objetos construídos a partir de uma arvore de herança.
  57. 57. oziel moreira neto – oziel.neto@gmail.com Desenho Avançado de ClassesPolimorfismo – Subclasses – Sobrescrita de método – Sobrecarga da método
  58. 58. oziel moreira neto – oziel.neto@gmail.com Desenho Avançado de Classes Polimorfismo – Subclasses • Quando especializamos uma superclasse e criamos um subclasse criamos um nova forma para a superclasse e conseqüentemente novas formas de objetosLivro e CompactDisc são formas de Produto.
  59. 59. oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de ClassesOverriding – Sobrescrita de métodos Definição: Esta utilidade da orientação a objetos e das linguagens orientada a objetos nos permite escrever numa subclasse um ou mais métodos presentes numa das superclasses da árvore de herança podendo alterar o comportamento da superclasse
  60. 60. oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de ClassesOverriding – Sobrescrita de métodos – Invocação Virtual de Métodos Quando for chamado para execução o método getDetalhes() da instancia de Pessoa, o código executado será: Pessoa.getDetalhes() Quando for chamado para execução o método getDetalhes() da instancia de Cliente, o código executado será: Cliente.getDetalhes() Ou seja, quando chamarmos um método de um objeto, o método escolhido para ser executado será a primeira ocorrência encontrada daquele método num arvore de herança (Invocação Virtual de Métodos).
  61. 61. oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de ClassesOverloading – Sobrecarga de métodos O Polimorfismo ainda permite que numa mesma classe tenhamos métodos com o mesmo nome, desde que o número ou tipos de parâmetros passados sejam diferentes
  62. 62. oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de ClassesBenefícios do Polimorfismo – Uso da Herança Cadastro - pessoas: Lista + adcionaPessoa(Pessoa) + removePessoa(indice) + listaPessoas(): Lista + Cadastro()Vendo estas classes de objetospodemos ver que o cadastro, podecadastrar (ele entende) qualquerpessoa, inclusive os clientes,devido a herança.
  63. 63. oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de ClassesBenefícios no Polimorfismo – Maior facilidade de alteração do modelo; – Maior facilidade de expansão de um modelo; – Melhor garantia de que uma idéia presente na “Descrição do Problema” será mantida;
  64. 64. oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de ClassesRevisão
  65. 65. oziel moreira neto – oziel.neto@gmail.com Desenho Avançado de ClassesRefinando a Hierarquia de Classes – Aplicação de Classes Final (Última forma); – Aplicação de Classes Abstratas; – Aplicação de Interfaces; Processo pelo qual refinamos o modelo de classes com o objetivo de melhor definir a abrangência da solução referente ao problema de negócio.
  66. 66. oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de ClassesUso de Classes, Métodos ou Atributos Final (final)Final Classes: Não podem ser especializadas, ouseja, é a última forma do objeto. public final class ContaEspecial extends Conta { ... }
  67. 67. oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de ClassesUso de Classes, Métodos ou Atributos Final (final)Final Methods: Não podem ser especializados,ou seja, não podem ser reescritos na herança.public class Poupanca extends Conta{... public final void credito(double valor) { }}
  68. 68. oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de ClassesUso de Classes, Métodos ou Atributos Final (final)Final Variables: Não podem ser alteradas depoisde inicializadas, ou seja, tornam-se constantes.public class Conta {... public static final double CPMF = 0.0038;}As constantes geralmente são definidas como public static final,para que qualquer classe tenha acesso a esse valor!
  69. 69. oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de ClassesUso de Classes e Métodos Abstratos (abstract)Abstract Classes: Não podem ser instanciadas,ou seja, é a primeira forma do objeto, e devem serespecializadas. public abstract class Produto extends Object { // metodo abstrato não possui corpo de implementacao. public abstract String getDescricaoCompleta(); }
  70. 70. oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de ClassesUso de Classes e Métodos Abstratos (abstract) public abstract classs Produto extends Object{ ... public int getCodigo() { return codigo; } public double getPreco() { return preco; } public abstract String getDescricaoCompleta(); }Uma classe abstrata, deve ter no mínimo um método abstrato.Uma classe abstrata, pode ter métodos concretos (não abstratos).Uma classe concreta, não pode ter métodos abstratos.
  71. 71. oziel moreira neto – oziel.neto@gmail.com Desenho Avançado de Classes Uso de Classes e Métodos Abstratos (abstract)Nesse modelo, vemos que oProduto é um tipo abstratomanipulado pelo Catálogo!Nesse caso, não podemosvender ou manipular uminstância de Produto, somentede Livro ou CD.
  72. 72. oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de ClassesUso de Interfaces (interface)Interfaces: Não podem ser instanciadas, e sópossuem métodos abstratos ou constantes.public interface identificador [extends OutraInterface] { // os métodos de uma interface não possuem corpo, // somente definição. [modificador] tipoRetorno identificador ([argumentos]);}
  73. 73. oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de ClassesUso de Interfaces (interface)Usadas para definir apenas o nome de umcomportamento, e não sua implementação! public interface Vendavel { public double getValorVenda(); }Uma classe, abstrata ou concreta, pode estendersomente uma classe, mas pode implementar múltiplasinterfaces.
  74. 74. oziel moreira neto – oziel.neto@gmail.com Desenho Avançado de Classes Uso de Interfaces (interface) public class Livro extends Produto implements Vendavel { ... public double getValorVenda() { return getPreco() * 1.2; } } public class CompactDisc extends Produto implements Vendavel { ... public double getValorVenda() { return getPreco() * 1.1; } }Dessa forma, todas os objetos do modelo que quiserem ser vendavel,implementam a interface Vendavel, dando um comportamento para o métodogetValorVenda () de acordo com a necessidade de cada objeto.
  75. 75. oziel moreira neto – oziel.neto@gmail.com Desenho Avançado de Classes Uso de Interfaces (interface)Nesse modelo, vemos que oVendavel é um tipoextremamente abstratoDessa forma, Livro e CD, sãoProdutos Vendaveis, com ascaracterísticas herdadas deproduto, e umaimplementação de Vendavel.
  76. 76. oziel moreira neto – oziel.neto@gmail.com Desenho Avançado de Classes Uso de Interfaces (interface)Dessa forma umcarrinho de compras,manipula qualquerobjeto Vendavel,inclusive Livro e CD.Na evolução, essesistema pode usar oCarrinho para qualquerVendavel, não somenteProdutos.Enquanto o Catalogomanipula Produtos, oCarrinho manipulaVendaveis
  77. 77. oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de ClassesUso de Interfaces (interface)public class Carrinho { private Vendavel[] vendaveis; private int counter;... public int adcionaVendavel(Vendavel vendavel) { vendaveis[ counter++ ] = vendavel; return counter; } public Vendavel getVendavel(int index) { return vendaveis[ index ]; } public double calculoCompras() { double valor = 0; for ( int i =0; i<vendaveis.length; i++ ) { valor += vendaveis[i].getValorVenda(); } return valor; }}
  78. 78. oziel moreira neto – oziel.neto@gmail.com Desenho Avançado de ClassesOrganizando as Classes em Pacotes (package) Estrutura lógica, representada fisicamente em diretórios e subdiretórios usada com o intuito de organizar as classes de uma aplicação ou sistema.Notação da UML
  79. 79. oziel moreira neto – oziel.neto@gmail.com Desenho Avançado de Classes Organizando as Classes em Pacotes (package) CodificaçãoNas classes de um pacote package loja; package loja;colocamos a definição de public class Carrinho { public class Catalogo {package .. .. } } import loja.*;Nas classes de outro pacoteque necessitam usar as public class TestaProdutos {classes acima, usamos a ..definição de import }
  80. 80. oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de ClassesDiscussão • Resumindo. O que se entende por Herança? • Quando devemos usar especialização e generalização? • Sabemos que o polimorfismo nos fornece uma ferramenta poderosa na adição de tipos de objetos, então quer dizer que ele nos permite ter sistemas mais flexíveis e que tem menos impacto nas mudanças? • Qual a necessidade de usar Classes Abstratas? • Qual a maior diferença de Classes Abstratas e Interfaces? • Porque usamos os pacotes?
  81. 81. oziel moreira neto – oziel.neto@gmail.comDesenho Avançado de ClassesExercícios
  82. 82. Manipulando Erros e Exceções
  83. 83. oziel moreira neto – oziel.neto@gmail.comManipulando Erros e ExceçõesAgenda – O que são Erros e Exceções? – Hierarquia de Exceções – Exceções mais conhecidas – Capturando e tratando Exceções – Estrutura try-catch-finally – Usando o bloco try-catch – Criando Exceções Customizadas
  84. 84. oziel moreira neto – oziel.neto@gmail.com Manipulando Erros e Exceções O que são erros e exceções?São objetos e possuem classes para serem definidas.Exceções estão associadas a condições não previstas durante a execução de uma aplicação Java, e no caso de acontecerem, a execução pode continuar, exemplo, uma conversão numérica que falhou.Tem o conceito de serem “arremessadas” ao chamador de um método, e são filhas da classe java.lang.Exception
  85. 85. oziel moreira neto – oziel.neto@gmail.com Manipulando Erros e Exceções O que são erros e exceções?São objetos e possuem classes para serem definidas.Erros estão associados a condições não previstas durante a execução de uma aplicação Java, e no caso de acontecerem, a execução não pode continuar, exemplo, falta de memória na JVM.Tem o conceito de serem “arremessadas” ao chamador de um método, e são filhas da classe java.lang.Error
  86. 86. oziel moreira neto – oziel.neto@gmail.com Manipulando Erros e Exceções Hierarquia da exceçõesTodas as exceções e erros são subclasses de java.lang.Throwable
  87. 87. oziel moreira neto – oziel.neto@gmail.com Manipulando Erros e ExceçõesExceções mais conhecidas• java.lang.ArithmeticException - erro de aritmética;• java.lang.NumberFormatException – erro de formatação numérica;• java.lang.ArrayIndexOutOfBoundsException – erro de manipulação de posições em arrays;• java.lang.NullPointerException – erro ao chamar um membro de objeto nulo;• java.io.IOException – erro de entrada e saída;• java.lang.ClassNotFoundException – erro de carga de classes;
  88. 88. oziel moreira neto – oziel.neto@gmail.comManipulando Erros e ExceçõesExceções mais conhecidas• java.lang.RuntimeException - erro não previsto na execução; As exceções filhas de RuntimeException não são obrigadas a serem tratadas, pois são consideradas “Unchecked Exceptions” As exceções filhas de Exception que não são de RuntimeException são obrigadas a serem tratadas, pois são consideradas “Checked Exceptions” Todos os Erros, filhos de Error, devem ser tratados apesar de não permitir que o programa continue.
  89. 89. oziel moreira neto – oziel.neto@gmail.comManipulando Erros e ExceçõesCapturando e tratando exceçõesUsamos em Java uma estrutura em bloco paratratar execução de código que pode gerar umaexceção: é o bloco try – catch – finally.
  90. 90. oziel moreira neto – oziel.neto@gmail.comManipulando Erros e ExceçõesEstrutura try – catch - finallytry { // código que inclui comandos/invocações de métodos // que podem gerar uma situação de exceção.} catch (Throwable t) { // bloco de tratamento associado à condição de // exceção derivada de Throwable ou a qualquer uma de suas // subclasses, identificada aqui pelo objeto // com referência t} finally { // bloco de código que sempre será executado após // o bloco try, independentemente de sua conclusão // ter ocorrido normalmente ou ter sido interrompida // este bloco é opcional}
  91. 91. oziel moreira neto – oziel.neto@gmail.com Manipulando Erros e ExceçõesEstrutura try – catch - finallytry { Se ocorrer uma IOException dentro do a.method(); bloco try, será executado o bloco A. b.method(); c.method(); Se ocorrer uma Exception que não é filha de IOException dentro do bloco try,} catch (IOException t) { será executado o bloco B.// A} catch (Exception t) { Se ocorrer um Error dentro do bloco try,// B será executado o bloco C.} catch (Throwable t) {// C Independente do que aconteça o bloco} finally { finally será executado.}
  92. 92. oziel moreira neto – oziel.neto@gmail.comManipulando Erros e ExceçõesUsando try – catch - finallyimport java.io.*;public class ConverteInteiro2 { public String leLinha() { byte[] lidos = new byte[20]; String texto = ""; try { // le o buffer do teclado e pode gerar uma IOException System.in.read(lidos); texto = new String(lidos); texto = texto.trim(); // retira os espacos em branco } catch (IOException ioException) { // se acontecer um erro na leitura // imprime na tela o erro ioException.printStackTrace(); } return texto; } public int leInt() { String linha = leLinha(); return Integer.parseInt(linha); } public static void main(String[] args) { ConverteInteiro2 ci = new ConverteInteiro2(); System.out.print("Entre inteiro: "); int valor = ci.leInt(); System.out.println("Valor lido foi: " + valor); }}
  93. 93. oziel moreira neto – oziel.neto@gmail.com Manipulando Erros e ExceçõesCriando exceções CustomizadasGeralmente em Java, quando queremos abortar aexecução de um método, internamente fazemos umtratamento e geramos uma exceção ao invés de usartestes de retorno. public class Conta { public boolean debito(double valor) { if ( valor < 0 ) { return false; } else { if ( saldo - valor < 0 ) { return false; } else { saldo -= valor; return true; } } } }
  94. 94. oziel moreira neto – oziel.neto@gmail.comManipulando Erros e ExceçõesCriando exceções Customizadas Dessa forma criamos uma exceção customizada!
  95. 95. oziel moreira neto – oziel.neto@gmail.comManipulando Erros e ExceçõesCriando exceções Customizadas public class SaldoInsuficienteException extends Exception { public SaldoInsuficienteException () { super("Falta de saldo para esta operação!"); } public SaldoInsuficienteException (String mensagem) { super(mensagem); } } Dessa forma criamos uma exceção customizada!
  96. 96. oziel moreira neto – oziel.neto@gmail.com Manipulando Erros e Exceções Arremessando exceções Customizadaspublic class Conta2 { private double saldo; public void debito(double valor) throws SaldoInsuficienteException { if ( valor < 0 ) { // unchecked exception não precisa ser declarada na clausula thorws throw new IllegalArgumentException (“ Valor de debito deve ser maior que zero! "); } else { if ( saldo - valor < 0 ) { // checked exceptio, deve ser declara na clausula throws throw new SaldoInsuficienteException ("Saldo insuficiente! Atual: "+saldo); } else { saldo -= valor; } } } Dessa forma usamos uma exceção customizada!
  97. 97. oziel moreira neto – oziel.neto@gmail.comManipulando Erros e ExceçõesTratando exceções Customizadas public class TesteConta2 { public static void main(String args[]) { Conta2 c2 = new Conta2(); try { c2.credito(100); System.out.println("Saldo: "+ c2.getSaldo() ); c2.debito(50); System.out.println("Saldo: "+ c2.getSaldo() ); c2.debito(500); System.out.println("Saldo: "+ c2.getSaldo() ); } catch (SaldoInsuficienteException e) { // se acontecer uma SaldoInsuficienteException // caira neste bloco e.printStackTrace(); } catch (Exception e) { // se acontecer qualquer outra Exception // caira neste bloco e.printStackTrace(); } finally { System.out.println("Saldo: "+ c2.getSaldo() ); } } }
  98. 98. oziel moreira neto – oziel.neto@gmail.comManipulando Erros e ExceçõesDiscussão • Já que as exceções em Java são objetos, então temos classes para representá-las? • Como identificar que um método lança uma exceção seu chamador? • Devemos então sempre definir exceções customizadas para nossas aplicações? • Qual a principal diferença entre CHECKED e UNCHECKED Exceptions?
  99. 99. oziel moreira neto – oziel.neto@gmail.comManipulando Erros e ExceçõesExercícios
  100. 100. Desenvolvimento deAplicações em Java
  101. 101. oziel moreira neto – oziel.neto@gmail.comDesenvolvimento de Aplicações em JavaAgenda – Principais API’s – Parâmetros em linha de comando – Manipulando texto e cadeia de caracteres – Entrada e saída de dados – Java Streamers – Java Readers e Writers – Arquivos de Acesso Randômico – Arquivos de Propriedades – Serialização de Objetos – Uso de Java Collectinons™ – Wrapper Classes – Discussão – Exercícios
  102. 102. oziel moreira neto – oziel.neto@gmail.com Desenvolvimento de Aplicações em Java Principais API’sA funcionalidades principais de uma linguagem inclui: – manipulação de textos; – manipulação de estruturas de dados; – parâmetros em linha de comando para inicializar aplicativos; – manipulação de arquivos de texto; – manipulação de arquivos randômicos; – manipulação de arquivos de configuração; – formatação de dados;Essas funcionalidades vão nos permitir implementar uma boa parte das necessidades de qualquer tipo de sistema ou aplicação.
  103. 103. oziel moreira neto – oziel.neto@gmail.com Desenvolvimento de Aplicações em Java Principais API’sOs principais pacotes que usaremos para escrever aplicações stand- alone utilitárias sem interfaces gráficas são:• java.lang – fornece as classes fundamentais de linguagem java;• java.io – fornece classes para manipulação de arquivos;• java.util – fornece as estruturas de dados e classes utilitárias;• java.text – fornece as classes para formatação de dados;• java.math – fornece as classes para manipular números grandes;
  104. 104. oziel moreira neto – oziel.neto@gmail.com Desenvolvimento de Aplicações em Java Parâmetros em linha de comandoUsamos a passagem de dados como parâmetros em linha de comando com o intuito de passar valores a uma aplicação ou utilitário.Esses valores podem ser: diretórios, nomes de arquivos, valores, etc.Ex: # java ClasseMain –a nomearquivo.txt
  105. 105. oziel moreira neto – oziel.neto@gmail.com Desenvolvimento de Aplicações em Java Parâmetros em linha de comandoCapturando os parâmetros dentro da aplicação Java:public class TesteParametros { public static void main(String args[]) { int tamanho = args.length; System.out.println("Numero de Parâmetros: "+tamanho); for(int i=0; i < tamanho; i++) { System.out.println("Param: " + i + " Valor: "+ args[i] ); } } No método main, existe um array de String, args[],} que representa os parâmetros passados.# java TesteParametros parametro1 parametro2 “parametro 3”
  106. 106. oziel moreira neto – oziel.neto@gmail.com Desenvolvimento de Aplicações em Java Manipulando textos e cadeia de caracteresManipulação de textos (cópia, pesquisa, conversões, maiúsculas e minúsculas, carateres, etc.)Conjunto de método presentes nas classes: – java.lang.String – cadeia de caracteres – java.lang.StringBuffer – buffer de caracteres – java.lang.StringTokenizer – separador de textos
  107. 107. oziel moreira neto – oziel.neto@gmail.com Desenvolvimento de Aplicações em Java Usos da Classe java.lang.Stringpublic class TesteString { public static void main(String args[]) { String texto = “Oracle Java!"; int tamanho = texto.length(); System.out.println("Texto: "+texto); System.out.println("Tamanho: "+tamanho); String texto2 = texto.toUpperCase(); System.out.println("Texto2: "+texto2); String texto3 = texto.toLowerCase(); System.out.println("Texto3: "+texto3); String texto4 = texto3.replace( u, U ); texto4 = texto4.replace( j, J ); System.out.println("Texto4: "+texto4); if ( texto3.equals( texto ) ) { System.out.println(" texto3 e texto são iguais! "); } else { System.out.println(" texto3 e texto são diferentes! "); } if ( texto4.equals( texto ) ){ System.out.println(" texto4 e texto são iguais! "); } else { System.out.println(" texto4 e texto são diferentes! "); } }}
  108. 108. oziel moreira neto – oziel.neto@gmail.com Desenvolvimento de Aplicações em Java Usos da classe StringBuffer e StringTokenizerimport java.util.StringTokenizer;public class TesteStringBuffer { public static void main(String args[]) { String texto = “Oracle Java! Java é aqui!"; StringTokenizer tokenizer = new StringTokenizer( texto, "!"); int numero = tokenizer.countTokens(); String[] tokens = new String[ numero ]; int count = 0; while ( tokenizer.hasMoreTokens() ) { tokens[count] = tokenizer.nextToken(); count++; } System.out.println("Texto: "+texto); System.out.println("# Tokens: "+numero); System.out.print("Tokens: "); for ( int i = 0 ; i<tokens.length; i++) { System.out.print( tokens[i] +","); } System.out.println(); StringBuffer buffer = new StringBuffer( texto ); StringBuffer invertido = buffer.reverse(); System.out.println("Texto: "+texto); System.out.println("Invertido: "+invertido ); }}
  109. 109. oziel moreira neto – oziel.neto@gmail.com Desenvolvimento de Aplicações em Java Entrada e saída de dados.Basicamente um aplicativo lida com:• entrada de dados (via teclado, arquivos, mouse);• processamento (execução de tarefas nesses dados);• saída (via interface, arquivos e relatórios);A entrada ou saída de dados usando teclado e arquivos, em Java é feito usando:• Streamers• Readers• Writers
  110. 110. oziel moreira neto – oziel.neto@gmail.comDesenvolvimento de Aplicações em JavaJava StreamersUsados para manipular byte (ASCII) de forma seqüencial (escrita ou leitura do arquivo todo).Ligam uma fonte de dados (DataSource) até ao aplicativo (Program)Geralmente usados para troca de dados entre aplicações Java e Non-Java.
  111. 111. oziel moreira neto – oziel.neto@gmail.comDesenvolvimento de Aplicações em JavaJava Streamers – java.io.InputStreamStreamers de entrada (do recurso para a aplicação)
  112. 112. oziel moreira neto – oziel.neto@gmail.comDesenvolvimento de Aplicações em JavaJava Streamers – java.io.OutputStreamStreamers de saída (da aplicação para o recurso)
  113. 113. oziel moreira neto – oziel.neto@gmail.comDesenvolvimento de Aplicações em JavaReaders e WritersUsados para manipular char (UTF-16) de forma seqüencial (escrita ou leitura do arquivo todo).Ligam uma fonte de dados (DataSource) até ao aplicativo (Program)Geralmente usados para troca de dados entre aplicações Java e Java.Padrão para as aplicações WEB.
  114. 114. oziel moreira neto – oziel.neto@gmail.comDesenvolvimento de Aplicações em JavaReaders – java.io.ReaderReaders (entrada de dados do recurso para a aplicação)
  115. 115. oziel moreira neto – oziel.neto@gmail.comDesenvolvimento de Aplicações em JavaWriters – java.io.WriterWriters (saída de dados da aplicação para o recurso)
  116. 116. oziel moreira neto – oziel.neto@gmail.comDesenvolvimento de Aplicações em JavaCategorias e uso
  117. 117. oziel moreira neto – oziel.neto@gmail.comDesenvolvimento de Aplicações em JavaCategorias e uso
  118. 118. oziel moreira neto – oziel.neto@gmail.com Desenvolvimento de Aplicações em Java Exemplosimport java.io.*;public class Copy { public static void main(String[] args) { try { FileReader input = new FileReader(args[0]); FileWriter output = new FileWriter(args[1]); char[] buffer = new char[128]; int charsRead = 0; charsRead = input.read(buffer); while ( charsRead != -1 ) { output.write(buffer, 0, charsRead); charsRead = input.read(buffer); } input.close(); output.close(); } catch (IOException e) { e.printStackTrace(); } }}
  119. 119. oziel moreira neto – oziel.neto@gmail.com Desenvolvimento de Aplicações em Java Exemplosimport java.io.*;public class LeTeclado { public static void main (String args[]) { String s = null; InputStreamReader ir = new InputStreamReader(System.in); BufferedReader in = new BufferedReader(ir); System.out.println("Tecle Ctrl-Z para sair!"); try { s = in.readLine(); while ( s != null ) { System.out.println("Lido: " + s); s = in.readLine(); } in.close(); } catch (IOException e) { e.printStackTrace(); } }}
  120. 120. oziel moreira neto – oziel.neto@gmail.com Desenvolvimento de Aplicações em Java Exemplosimport java.io.*;public class GravaArquivo { public static void main (String[] args) { File file = new File(args[0]); try { BufferedReader in = new BufferedReader( newInputStreamReader( System.in )); PrintWriter out = new PrintWriter( newFileWriter(file)); String texto = null; System.out.print("Digite o texto! "); System.out.println("Ctrl+Z para gravar!"); while ( (texto = in.readLine() ) != null ) { out.println(texto ); } in.close(); out.close(); } catch (IOException e) { e.printStackTrace(); } }}
  121. 121. oziel moreira neto – oziel.neto@gmail.com Desenvolvimento de Aplicações em Java Arquivos de Acesso RandômicoUsados para manipular arquivos de dados que de forma randômica (escrita em leitura em qualquer parte do arquivo).Ligam uma fonte de dados (DataSource) até ao aplicativo (Program)Geralmente usados para troca de dados entre aplicações Java e Non-Java.Permite a implementação em Java do conceito de Registro.
  122. 122. oziel moreira neto – oziel.neto@gmail.com Desenvolvimento de Aplicações em Java Arquivos de Acesso RandômicoClasse: java.io.RandomAccessFileO arquivo pode ser aberto num modo (Read, Write ouReadWrite)Cada REGISTRO, tem um inicio e fim, com tamanhodefinido.A classe fornece principalmente métodos para: lock (bloqueio), seek (pesquisa), read (leitura) e write (gravação).
  123. 123. oziel moreira neto – oziel.neto@gmail.com Desenvolvimento de Aplicações em Java Trabalho com Propriedades (Properties)Uma propriedade (property) é um elemento da aplicação quepode ser alterado em tempo de execução.Sua existência permite a configuração do aplicativo (ex:diretorio de dados, nomes de arquivos, dicionários, etc), eessa configuração fica armazenada em arquivo.Ainda podemos identificar elementos da JRE e do sistemacorrente (Windows, UNIX, etc)Classe: java.util.Properties
  124. 124. oziel moreira neto – oziel.neto@gmail.com Desenvolvimento de Aplicações em Java Trabalho com Propriedades (Properties) Listando as propriedades do sistemaimport java.util.*;public class TestePropriedades { public static void main(String args[]) { Properties props = System.getProperties(); Enumeration prop_names = props.propertyNames(); while ( prop_names.hasMoreElements() ) { String prop_name = (String) prop_names.nextElement(); String property = props.getProperty(prop_name); System.out.println("property ’" + prop_name + "’ is ’" +property + "’"); } }}
  125. 125. oziel moreira neto – oziel.neto@gmail.com Desenvolvimento de Aplicações em Java Trabalho com Arquivos de PropriedadesPermite criar e manipular arquivos de configuração ou deoutra necessidade para as aplicações: #nomes.properties #tipo=papel Arquivos de texto simples, onde do usuario=user lado esquerdo do igual temos a administrador=admin propriedade e do lado direito seu convidado=guest valor. #aplicacao.ini #arquivo de configuração diretorioTemp=c:/temp diretorioApp=d:/appl
  126. 126. oziel moreira neto – oziel.neto@gmail.com Desenvolvimento de Aplicações em Java Trabalho com Arquivos de PropriedadesLendo um arquivo de propriedades // class CarregaPropriedades.java import java.io.*; import java.util.*; public class CarregaPropriedades { private Properties props; public CarregaPropriedades(String nomeArquivo) { try { FileInputStream fis = new FileInputStream( nomeArquivo ); props = new Properties(); props.load( fis ); } catch (Exception e) { e.printStackTrace(); } } public String getProperty(String nome) { return (String) props.get( nome ); } }
  127. 127. oziel moreira neto – oziel.neto@gmail.com Desenvolvimento de Aplicações em Java Trabalho com Arquivos de PropriedadesObtendo as propriedades lidas:// class TesteCarregaPropriedades.javapublic class TesteCarregaPropriedades { public static void main(String args[]) { CarregaPropriedades carregador = null; if ( args.length == 1 ) { carregador = new CarregaPropriedades ( args[0] ); System.out.println("usuario="+carregador.getProperty("usuario") ); System.out.println("convidado="+carregador.getProperty("convidado") ); System.out.println("administrador="+carregador.getProperty("administrador") ); } else { System.out.println("Uso: javaTesteCarregaPropriedades arquivo.properties "); } }}
  128. 128. oziel moreira neto – oziel.neto@gmail.com Desenvolvimento de Aplicações em Java Serialização de ObjetosMecanismo exclusivo da tecnologia Javae usado para: • Armazenar objetos em disco (manter o estado); • Transmitir dados de objetos pela rede (comunicação); • Permitir armazenar o estado das GUIs (SE e ME); • Permitir a redundância em aplicações EE; • Permitir armazenar dados em JavaCards™ (ME); • Etc.
  129. 129. oziel moreira neto – oziel.neto@gmail.com Desenvolvimento de Aplicações em Java Serialização de ObjetosQuando armazenamos um objeto (serializamos),estamos gravando num Stream o estado como elese encontra (gravar atributos da memória norecurso)Quando lemos um objeto (deserializamos), estamoslendo de um Stream o objeto no estado como ele seencontrava (ler atributos do recurso para a memória)
  130. 130. oziel moreira neto – oziel.neto@gmail.com Desenvolvimento de Aplicações em Java Serialização de ObjetosPara serializar um objeto, sua classe deveimplementar a interface java.io.Serializable // Pessoa.java public class Pessoa implements java.io.Serializable { private String nome; private java.util.Date nascimento; public java.util.Date getNascimento() { return nascimento; } public String getNome() { return nome; } public void setNascimento(java.util.Date nascimento) { this.nascimento = nascimento; } public void setNome(String nome) { this.nome = nome; } }
  131. 131. oziel moreira neto – oziel.neto@gmail.comDesenvolvimento de Aplicações em JavaExemplos de Serialização de Objetos// SerializadorPessoa.javaimport java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;public class SerializadorPessoa { public void gravaPessoa(String nomeArquivo, Pessoa pessoa) throws IOException { if ( pessoa != null && nomeArquivo != null ) { FileOutputStream fos = new FileOutputStream( nomeArquivo ); ObjectOutputStream oos = new ObjectOutputStream ( fos ); oos.writeObject( pessoa ); oos.close(); } } public Pessoa recuperaPessoa(String nomeArquivo) throws IOException, ClassNotFoundException { Pessoa pessoa = null; if ( nomeArquivo != null ){ FileInputStream fis = new FileInputStream( nomeArquivo ); ObjectInputStream ois = new ObjectInputStream( fis ); pessoa = (Pessoa) ois.readObject(); ois.close(); } return pessoa; }}
  132. 132. oziel moreira neto – oziel.neto@gmail.comDesenvolvimento de Aplicações em JavaExemplos de Serialização de Objetos // classe TesteSerializadorPessoa.java public class TesteSerializadorPessoa { public static void main(String args[]) { Pessoa pessoa = new Pessoa(); pessoa.setNome("Oziel Moreira Neto"); pessoa.setNascimento( new java.util.Date(75,9,23) ); try { SerializadorPessoa serializador = new SerializadorPessoa(); serializador.gravaPessoa("oziel.obj", pessoa); pessoa = null; pessoa = serializador.recuperaPessoa("oziel.obj"); System.out.println( pessoa.getNome() ); System.out.println( pessoa.getNascimento() ); } catch (Exception e) { e.printStackTrace(); } } }
  133. 133. oziel moreira neto – oziel.neto@gmail.com Desenvolvimento de Aplicações em Java Serialização de ObjetosQuando serializamos um objeto, estamosarmazenando seus atributos de uma forma que oJava entende!
  134. 134. oziel moreira neto – oziel.neto@gmail.com Desenvolvimento de Aplicações em Java Coleções de Objetos – Java Collections™Trabalhar mais facilmente com multiplicidade deobjetos sem os problemas dos arrays dedimensionamento, pesquisa, etc.Usamos uma Collection para: • suportar relacionamentos múltiplos entre objetos; • substituir o uso e manipulação de arrays; • trabalhar com estruturas de dados em memória para ordenação;
  135. 135. oziel moreira neto – oziel.neto@gmail.com Desenvolvimento de Aplicações em Java Coleções de Objetos – Java Collections™As Java Collections ™ fornecem uma interface de métodossimples que manipulam qualquer objeto Java, pois seusmétodos manipulam referâncias da java.lang.Object.As classes concretas da API de collection são divididas deacordo com sua categoria de superclasse, e quando umasubclasse implementa uma das interfaces abaixo temos: • java.util.List – lista de objetos não ordenados, que permite duplicados; • java.util.Set – conjunto de objetos não ordenados, que não permite duplicados; •java.util.Map – estrutura em memória que armazena os objetos de acordo com uma chave;
  136. 136. oziel moreira neto – oziel.neto@gmail.com Desenvolvimento de Aplicações em Java Coleções de Objetos – Java Collections™Como este framework é muito extenso, vamos estudar as trêsprincipais estruturas de manipulação de coleções de objetos: • java.util.ArrayList; • java.util.HashMap • java.util.HashSet.Para o perfeito funcionamento das Collections, éimprescindível que o os nossos objetos reescrevam osseguintes métodos da java.lang.Object: • public boolean equals(Object obj); • public int hashCode();
  137. 137. oziel moreira neto – oziel.neto@gmail.com Desenvolvimento de Aplicações em Java Coleções de Objetos – Java Collections™Alterando a classe Pessoapublic class Pessoa implements java.io.Serializable { private String nome; private java.util.Date nascimento;... public boolean equals(Object obj) { boolean flag = false; if ( obj instanceof Pessoa ) { Pessoa that = (Pessoa) obj; flag = that.nome.equals( this.nome ) && that.nascimento.equals( this.nascimento ); } return flag; } public int hashCode() { return ( nome != null && nascimento != null) ? nome.hashCode() ^ nascimento.hahsCode() : 0; }}
  138. 138. oziel moreira neto – oziel.neto@gmail.com Desenvolvimento de Aplicações em Java Coleções de Objetos – Java Collections™Testando as Collections com o objeto Pessoa: • Explicar o ListaPessoas e executar o TesteListaPessoas; • Explicar o MapaPessoas e executar o TesteMapaPessoas; • Explicar o ConjuntoPessoas e executar o TesteConjuntoPessoas;O que foi percebido?
  139. 139. oziel moreira neto – oziel.neto@gmail.com Desenvolvimento de Aplicações em Java Wrapper ClassesFinalidade de converter: • os tipos primitivos em tipos de referência; • Strings (cadeias de números) em tipos primitivos;
  140. 140. oziel moreira neto – oziel.neto@gmail.com Desenvolvimento de Aplicações em Java Wrapper ClassesExemplos: // convertendo um primitivo para String int numero = 10; Integer wrapperNumero = new Integer( numero ); String strNumero = wrapperNumero.toString(); // convertendo uma String para primitivo String strNumero = “10”; Integer wrapperNumero = new Integer( strNumero ); int numero = wrapperNumero.intValue();
  141. 141. oziel moreira neto – oziel.neto@gmail.comDesenvolvimento de Aplicações em JavaDiscussão • Vimos nesse capítulo uma série de conceitos que são usados em aplicações de fato, ou seja, arquivos de configurações (properties), coleções de objetos, manipulação de arquivos texto e de arquivos de dados (Randômico). • Necessariamente todas as aplicações usam esses recursos? • Quais dos recursos nesse capítulo são mais fáceis de se implementar? • Podemos usar a serialização de objetos para armazenar nossos objetos temporariamente e indefinidamente?
  142. 142. oziel moreira neto – oziel.neto@gmail.comDesenvolvimento de Aplicações em JavaExercícios
  143. 143. Linguagem de Programação IAnálise e Desenvolvimento de Sistemas2º SemestreProf. Oziel Moreira Netooziel.neto@gmail.comhttp://blog.oziel.com.br

×