Linguagem de Programação 1 Prof. Marcos Miguel - MBI [email protected] Parte 2 segunda-feira, 5 de novembro de 12 2 ¨ ¨ Uma exceção é um problema que surge durante a execução de um programa Pode ocorrer por diversos motivos: ¤ ¤ ¤ ¨ Estrutura try catch/finally Um usuário entrou dados inválidos Um arquivo que precisa ser aberto não pode ser encontrado A conexão de rede foi perdida no meio de comunicação, ou a JVM não tem mais memória Prof. Marcos Miguel - MBI segunda-feira, 5 de novembro de 12 3 ¨ Exemplo Prof. Marcos Miguel - MBI segunda-feira, 5 de novembro de 12 4 ¨ Exemplo Prof. Marcos Miguel - MBI segunda-feira, 5 de novembro de 12 5 ¨ Instrução throw ¤ Indica que uma exceção ocorreu ¤ Utilizada para lançar exceções ¤ O operando de um throw pode ser de qualquer classe derivada da classe Throwable Prof. Marcos Miguel - MBI segunda-feira, 5 de novembro de 12 Java - Exceções 6 ¨ Hierarquia de herança das exceções Prof. Marcos Miguel - MBI segunda-feira, 5 de novembro de 12 Serialização 7 ¨ Serialização de objetos é o processo de salvar o estado de um objeto em uma sequência de bytes, permitindo um processo de reconstrução desses bytes em um objeto vivo, em algum momento futuro ¨ Regras ¤ ¤ ¤ ¤ as classes precisam implementar a interface Serializable para que os seus objetos possam ser serializados modificador Transient: ignora o objeto ou variável durante a serialização se a superclasse implementar Serializable, então as suas subclasses também a implementam automaticamente se a superclasse não implementar Serializable, então quando um objeto da subclasse for deserializado o construtor da superclasse será executado Prof. Marcos Miguel - MBI segunda-feira, 5 de novembro de 12 Serialização 8 ¨ Exemplo ¤ Serializando objeto Prof. Marcos Miguel - MBI segunda-feira, 5 de novembro de 12 Serialização 9 ¨ Exemplo ¤ Deserializando objeto Prof. Marcos Miguel - MBI segunda-feira, 5 de novembro de 12 Serialização 10 ¨ Objeto transient ¤ Quando uma propriedade é marcada como transient ela é ignorada na serialização Prof. Marcos Miguel - MBI segunda-feira, 5 de novembro de 12 Serialização 11 ¨ Serialização e Herança Prof. Marcos Miguel - MBI segunda-feira, 5 de novembro de 12 Serialização 12 ¨ Deserialização e Herança Prof. Marcos Miguel - MBI segunda-feira, 5 de novembro de 12 Serialização / IO 13 ¨ M2E4: (Exercício de fixação) ¤ Utilizando o modelo de classe sugerido serialize os objetos: n Revista n Livro n Autor*(lista de autores) Prof. Marcos Miguel - MBI segunda-feira, 5 de novembro de 12 Java - IO 14 ¤ Oferecem recursos para facilitar a manipulação de dados durante o processo de leitura ou gravação ¤ bytes sem tratamento ¤ caracteres Unicode ¤ dados filtrados de acordo com certo critério ¤ dados otimizados em buffers ¤ leitura/gravação automática de objetos Prof. Marcos Miguel - MBI segunda-feira, 5 de novembro de 12 Java - IO 15 ¨ A classe File, que representa arquivos e diretórios ¤ Objetos n n que implementam entrada e saída InputStream e OutputStream, Readers e Writers Compressão com GZIP streams ¤ Oferece abstrações que permitem ao programador ¤ lidar com arquivos, diretórios e seus dados de uma maneira independente de plataforma ¤ File, RandomAccessFile Prof. Marcos Miguel - MBI segunda-feira, 5 de novembro de 12 Java - IO 16 ¨ Classe File ¤ Métodos String getAbsolutePath() n String getParent(): retorna o diretório (objeto File) pai n boolean exists() n boolean isFile() n boolean isDirectory() n boolean delete(): tenta apagar o diretório ou arquivo n long length(): retorna o tamanho do arquivo em bytes n boolean mkdir(): cria um diretório com o nome do arquivo n String[] list(): retorna lista de arquivos contido no diretório n Prof. Marcos Miguel - MBI segunda-feira, 5 de novembro de 12 Java-IO 17 ¨ Exemplo Prof. Marcos Miguel - MBI segunda-feira, 5 de novembro de 12 Java - IO 18 ¨ IO – Criação e gravação de arquivo ¤ FileWriter ¤ Principais Métodos: n Write : escreve no arquivo bytes, Strings, etc. n close: fecha o stream (essencial) n flush(): esvazia o buffer Prof. Marcos Miguel - MBI segunda-feira, 5 de novembro de 12 Java IO 19 ¨ PrintWriter ¤ Principais métodos: n Print: Imprime no arquivo n close: fecha o stream n flush(): esvazia o buffer Prof. Marcos Miguel - MBI segunda-feira, 5 de novembro de 12 Java - IO 20 ¤ FileReader e BufferedReader n A maneira mais eficiente de ler um arquivo de texto é usar FileReader decorado por um BufferedReader n Principais Métodos: n n Readline: lê a linha corrente Close: Fecha o arquivo Prof. Marcos Miguel - MBI segunda-feira, 5 de novembro de 12 Java - IO 21 ¨ M2E5: (Exercício de fixação) ¤ Utilizando o arquivo fornecido “publicacoes.txt” e os recursos de IO apresentados: n Leia o arquivo e popule a lista de publicações e autores n O arquivo esta no formato texto padrão ANSI com delimitadores “|” (pipeline), Carriage return/Line feed ao final de cada registro, e segue o seguinte formato: id|isbn|titulo|nroEdicao|descricao|autor|editora| Prof. Marcos Miguel - MBI segunda-feira, 5 de novembro de 12 Java - String 22 ¨ Os objetos de tipo String são imutáveis, ou seja o valor de uma String não pode ser modificado, apenas referenciado: Prof. Marcos Miguel - MBI segunda-feira, 5 de novembro de 12 Switch, Case e Default 23 ¨ Escolher entre múltiplos caminhos alternativos ¨ Exemplo ¤ Sintaxe Prof. Marcos Miguel - MBI segunda-feira, 5 de novembro de 12 Enumerados 24 Prof. Marcos Miguel - MBI segunda-feira, 5 de novembro de 12 HashMap 25 ¨ ¨ ¨ HashMap é uma das principais implementações da interface Map. Permite a inserção de chaves e valores HashMap é bem similar à classe Hashtable, com a diferença que HashMap não é sincronizada (ambiente de múltiplas threads) e permite valores e chaves null Prof. Marcos Miguel - MBI segunda-feira, 5 de novembro de 12 HashMap 26 ¨ Métodos Prof. Marcos Miguel - MBI segunda-feira, 5 de novembro de 12 Padrão de Projeto 27 ¨ Façade ¤ “Fornecer uma interface para um conjunto de interfaces em um subsistema ¤ Define uma interface de nível mais alto que torna o subsistema mais fácil de ser usado” Prof. Marcos Miguel - MBI segunda-feira, 5 de novembro de 12 Padrão de Projeto - Façade 28 ¤ Benefícios: n Isola os clientes dos componentes do subsistema reduzindo o número de objetos com os quais o cliente tem que lidar n Promove um acoplamento fraco entre o subsistema e seus clientes. O acoplamento fraco permite variar os componentes do subsistema sem afetar os seus clientes n Não impede as aplicações de utilizarem as classes do subsistema caso necessitem Prof. Marcos Miguel - MBI segunda-feira, 5 de novembro de 12 Padrão de Projeto - Façade 29 ¨ Exemplo Sem façade Com façade Prof. Marcos Miguel - MBI segunda-feira, 5 de novembro de 12 Padrão de Projeto - Façade 30 ¨ Exemplo em Java Prof. Marcos Miguel - MBI segunda-feira, 5 de novembro de 12 Padrão de Projeto - Façade 31 ¨ Exemplo em Java Antes Padrão segunda-feira, 5 de novembro de 12 Prof. Marcos Miguel - MBI Depois Padrão Bibliografia 32 ¨ ¨ ¨ H.M. Deitel, P.J. Deitel Java Como Programar 8ª Edição. Bookman, 2008 PENDER, Tom. UML a Bíblia. Rio de Janeiro: Campus, 2004 Gamma, E.; Helm, R; Johnson, R; et al. Padrões de Projeto: Soluções reutilizáveis de software orientado a objetos, Bookman, 2000 Prof. Marcos Miguel - MBI segunda-feira, 5 de novembro de 12