InputStream e OutputStream para ler/ escrever bytes e das classes abstractas Reader e Writer para ler /escrever caracteres (texto).
|
|
|
- Laís Castilho Costa
- 9 Há anos
- Visualizações:
Transcrição
1 Input e Output 8 Streams Uma stream é uma abstracção que representa uma fonte genérica de entrada de dados ou um destino genérico para escrita de dados que é definida independentemente do dispositivo físico concreto. Todas as classes que implementam streams em Java são subclasses das classes abstractas InputStream e OutputStream para ler/ escrever bytes e das classes abstractas Reader e Writer para ler /escrever caracteres (texto). Subclasses de InputStream e de Reader são fontes de dados Subclasses de OutputStream e de Writer são destinos de dados Uma stream é uma sequência de items de dados, geralmente bytes de 8 bits. Hierarquia de classes
2 OutpuStream ByteArrayOutputStream FileOutpuStream FilterOutputStream BufferedOutputStream DataOutputStream PipedOutputStream ObjectOutputStream Input e Output 9 InputStream ByteArrayInputStream FileInputStream FilterInputStream BufferedInputStream DataInputStream PipedInputStream ObjectInputStream Writer BufferedWriter LineNumberWriter PrintWriter OutputStreamWriter FileWriter PipedWriter StringWriter CharArrayWriter Reader BufferedReader LineNumberReader InputStreamReader FileReader PipedReader StringReader CharArrayReader
3 Input e Output 10 Input / Output de baixo nível Para ler ou escrever num ficheiro temos de criar um objecto do tipo stream que depois é associado a um objecto do tipo File. As classes FileInputStream e FileOutputStream definem objectos do tipo stream que nos permitem ler / escrever sequências de bytes em ficheiros. Exemplo: import java.io.*; public class Um { public static void main(string []args){ // criar o objecto do tipo File, ficheiro: File ficheiro = new File( "teste.dat" ); try { // associar um objecto do tipo FileOutputStream a um ficheiro FileOutputStream os = new FileOutputStream ( ficheiro);
4 Input e Output 11 // try {... byte [] arraybytes = { 10, 20, 30, 40, 50, 60, 70, 80 ; // escrever um array de bytes no ficheiro os.write( arraybytes); // depois de concluir a escrita, devemos fechar a stream * os.close(); // os métodos de acesso a ficheiros lançam excepções do // tipo IOException catch (IOException e){ System.out.println (e.getmessage()); * Os dados são previamente escritos em memória principal, num buffer de memória temporário (cache). Quando o buffer fica cheio, são copiados para o disco. Se quando o programa termina o buffer não foi fechado, podem perder-se dados que ainda não foram copiados para disco.
5 Input e Output 12 Para ler os dados do ficheiro usamos o método read da classe FileInputStream import java.io.*; public class dois { public static void main(string []args){ File ficheiro = new File( "teste.dat" ); // podemos saber o tamanho do ficheiro int tamanhoficheiro = (int)ficheiro.length(); byte [] arraybytes = new byte [tamanhoficheiro]; try { // criamos um objecto do tipo FileInputStream que associamos ao ficheiro FileInputStream is = new FileInputStream ( ficheiro ); // ler os dados arraybytes = is.read (); for (int i=0; i<tamanhoficheiro; i++){ System.out.println( arraybytes[i]); is.close()...
6 Input e Output 13 Input / Output de alto nível A classe DataOutputStream permite-nos fazer o output de tipos primitivos de dados, convertendo-os em sequências de bytes. Esta classe fornece um acesso de mais alto nível para aceder a um ficheiro. Não está ligada directamente a um objecto do tipo file mas sim a um objecto do tipo FileOutputStream. File ficheiro = new File("teste2.dat"); FileOutputStream os = new FileOutputStream( ficheiro); DataOutputStream dataos = new DataOutputStream(os ); writefloat writeint writedouble <= métodos da classe DataOutputStream dataos os ficheiro os tipos primitivos são convertidos em sequências de bytes os bytes são escritos no ficheiro
7 Input e Output 14 Exemplo: File ficheiro = new File("teste2.dat"); try { FileOutputStream os = new FileOutputStream( ficheiro); DataOutputStream dataos = new DataOutputStream(os ); dataos.writeint ( ); dataos.writelong(123456l); dataos.writefloat(777.3f); dataos.writedouble( d); dataos.writechar('a'); dataos.writeboolean (false); dataos.close(); catch (IOException e){ System.out.println(e.getMessage());
8 Input e Output 15 Para ler, revertemos o processo, usando as classes FileInputStream e DataInputStream: Os dados terão que ser lidos pela mesma ordem porque foram escritos. File ficheiro = new File("teste2.dat"); FileInputStream is = new FileInputStream( ficheiro); DataInputStream datais = new DataInputStream( is ); readfloat readint readdouble <= métodos da classe DataInputStream datais iss ficheiro a sequências de bytes é convertida em valores de tipos primitivos os bytes são lidos do ficheiro
9 Input e Output File ficheiro = new File("teste2.dat"); try { FileInputStream is = new FileInputStream( ficheiro); DataInputStream datais = new DataInputStream( is ); System.out.println(dataIS.readInt ()); System.out.println(dataIS.readLong()); System.out.println(dataIS.readFloat()); System.out.println(dataIS.readDouble()); System.out.println(dataIS.readChar()); System.out.println(dataIS.readBoolean ()); datais.close(); catch (IOException e){ System.out.println(e.getMessage()); - a ordem de leitura tem de corresponder à ordem de escrita
10 Input e Output 17 Ficheiros de Texto Os dados podem ser armazenados em formato ASCII Para gerar um ficheiro de texto podemos usar um objecto da classe PrintWriter A classe tem dois métodos de output, void print (...) void println (...) podendo ser o argumento um valor de qualquer um dos tipos primitivos. Os métodos convertem o valor do argumento numa string e fazem o seu output. O construtor da classe PrintWriter recebe uma stream de output. Exemplo: File ficheiro = new File("teste3.dat"); try { FileOutputStream os = new FileOutputStream( ficheiro); PrintWriter pw = new PrintWriter( os );
11 Input e Output 18 // escrever um int pw.println ( ); pw.println(123456l); um long pw.println(777.3f); // um float pw.println( d); // um double pw.println('a'); // um char pw.println (false); // um boolean pw.close();.. Ler um ficheiro de texto Usamos as classes FileReader e BufferedReader Exemplo: File ficheiro = new File("teste3.dat"); try { FileReader fr = new FileReader( ficheiro); BufferedReader br = new BufferedReader(fr);
12 Input e Output String linha; linha = br.readline(); int i = Integer.parseInt ( linha); // se for só para escrever não é necessário converter System.out.println(i); linha = br.readline(); long l = Long.parseLong (linha); linha = br.readline(); float f = Float.parseFloat ( linha); linha = br.readline(); double d = Double.parseDouble ( linha); linha = br.readline(); char c = linha.charat(0); linha = br.readline(); boolean b = Boolean.getBoolean(linha); br.close();...
13 Input e Output 20 Input / Output de objectos Podemos também ler / escrever objectos de / num ficheiro, usando as classes ObjectInputStream e ObjectOutputStream Uma ObjectOutputStream permite armazenar objectos através do método writeobject() que implementa um algoritmo de serialização que garante que todas as referências cruzadas existentes entre instâncias de diferentes classes serão repostas aquando do processo de leitura dessas mesmas instâncias. Para que se possam gravar instâncias de uma determinada classe numa ObjectOutputStream é necessário que a classe implemente a interface Serializable. Além disso, todas as variáveis dessa classe terão que ser também serializáveis. Isto significa que todas as variáveis de instância da classe devem por sua vez pertencer a classes serializáveis. Os tipos simples são por definição serializáveis, assim como o são os arrays e as instâncias das classes String e Vector.
14 Input e Output 21 Suponhamos a classe C7: public class C7 implements Serializable { private int n; private String nome; public C7(int n, String nome) {... public void setnumero (int i) {... public void setnome (String n) {... public int getnumero() {... public String getnome() {... public String tostring (){ return (n+" "+nome + "\n");
15 Input e Output 22 Para gravar objectos: - criamos uma ObjectOutputStream: File f = new File ("teste4.dat"); FileOutputStream os = new FileOutputStream (f); ObjectOutputStream oos = new ObjectOutputStream(os); Para escrever um objecto do tipo C7: - criamos o objecto C7 o1 = new C7 (1, XPTO ); - usamos o método void writeobject(object) oos.writeobject( o1 ); Obs. Diferentes tipos de objectos podem ser escritos no mesmo ficheiro.
16 Input e Output 23 Exemplo:... int i; C7 objectoc7; File f = new File ("teste4.dat"); try { FileOutputStream os = new FileOutputStream (f); ObjectOutputStream oos = new ObjectOutputStream(os); for (i=0; i<100; i++){ objectoc7 = new C7( i, "XPTO da Silva"); oos.writeobject( objectoc7 ); oos.close(); catch (IOException e){ System.out.println(e.getMessage());
17 Input e Output 24 Para ler objectos, usamos as classes FileInputStream e ObjectInputStream... int i; C7 objectoc7; File f = new File ("teste4.dat"); try { FileInputStream is = new FileInputStream (f); ObjectInputStream ois = new for (i=0; i<100; i++){ // lemos o objecto com o método //Object readobject(void); ObjectInputStream(is); objectoc7 = (C7) ois.readobject(); //* // * temos de converter para o tipo do objecto a ler System.out.println ( objectoc7.tostring() ) ; ois.close();
18 Input e Output catch (IOException e){ System.out.println(e.getMessage()); // o método readobject, além da excepção anterior, pode // também gerar uma instância de ClassNotFounfException catch (ClassNotFoundException e){ System.out.println("Classe não existente - " + e.getmessage());
Reader e Writer para streams de caracteres (texto).
Folha 1-1 Recordando POO: Streams Uma stream é uma abstracção que representa uma fonte genérica de entrada de dados ou um destino genérico para escrita de dados que é definida independentemente do dispositivo
Como pôde verificar, a criação de um objecto do tipo File não cria o ficheiro em disco.
Folha 1-1 I/O em java (pakage java.io) A classe File A classe File (subclasse de Object) permite manipular os ficheiros e as directorias de um sistema de ficheiros. 1 - Substituindo o texto d:\\my_work\\
Reader e Writer para streams de caracteres (texto).
Folha 1-1 Recordando POO: Streams Uma stream é uma abstracção que representa uma fonte genérica de entrada de dados ou um destino genérico para escrita de dados que é definida independentemente do dispositivo
Motivação. Java First-Tier: Aplicações. Entrada & Saída. Stream de Entrada. Stream de Saída. Pacote java.io. Leitura e Escrita de Streams
Java First-Tier: Aplicações Entrada & Saída Grupo de Linguagens de Programação Departamento de Informática PUC-Rio Motivação Uma aplicação normalmente precisa obter e/ou enviar informações a fontes/destinos
Notas de POO: interfaces, excepções e input/output
Notas de POO: interfaces, excepções e input/output 2006/07 Conteúdo 1 Considerações gerais 1 2 Interfaces 1 2.1 Hierarquia das Interfaces........................... 2 2.2 Interfaces e Classes Abstractas........................
Entrada e Saída Exercício. Linguagem Java. Adenilso da Silva Simão 01/09/05
01/09/05 Onde conseguir informações sobre os pacotes: http://java.sun.com/j2se/1.5.0/docs/api/ Tutorial http://java.sun.com/docs/books/tutorial/essential/ io/overview.html (II) Tanto a entrada quanto a
Streams e Ficheiros I/O
Streams e Ficheiros I/O Capítulo 9 Objectivos Familiarizar com o conceito I/O stream Entender a diferença entre ficheiros binários e de texto. Saber armazenar dados em ficheiros de texto. Saber ler dados
Array de objectos Array de objectos Criação Exemplo:
Array de objectos Nos exemplos anteriores array armazenava dados de tipos primitivos. Array de objectos é um array cujos elementos são objectos ou, mais correctamente, referências para objectos. Característica
AULA TEÓRICA 4. Tema 5. Ficheiros. Ficheiro do tipo texto. Ficheiros de Objectos. Ø Classe File Ø Criação. Manipulação. Ø Classe StringTokenizer
Tema 5. Ficheiros AULA TEÓRICA 4 Ficheiro do tipo texto Ø Classe File Ø Criação. Manipulação. Ø Classe StringTokenizer Ficheiros de Objectos Ø Criação. Manipulação 1 Ficheiros A entrada de dados (leitura)
Pontifícia Universidade Católica de São Paulo Departamento de Ciência da Computação
Pontifícia Universidade Católica de São Paulo Departamento de Ciência da Computação LP: Laboratório de Programação Apontamento 16 Prof. ISVega Maio de 2004 Arquivos Binários CONTEÚDO 16.1 Processamento
Programação Orientada a Objetos
Programação Orientada a Objetos Faculdade de Computação Revisão Prova 2 Marcelo Zanchetta do Nascimento Material elaborado pela Profa. Ana Carolina Lorena - UNIFESP Roteiro Herança Polimorfismo Classes
Programação Orientada a Objectos - P. Prata, P. Fazendeiro
3 Classes e instanciação de objectos (em Java) Suponhamos que queremos criar uma classe que especifique a estrutura e o comportamento de objectos do tipo Contador. As instâncias da classe Contador devem
PROGRAMAÇÃO JAVA. Parte 3
PROGRAMAÇÃO JAVA Parte 3 O PRIMEIRO PROGRAMA O Java executa uma instrução a seguir a outra, pela ordem em que estão escritas. Essa sequência poderá ser contrariada de forma especial: Alternativas: Ciclos
10 Arquivos e fluxos. Desenvolvimento OO com Java. Vítor E. Silva Souza
Desenvolvimento OO com Java 10 Arquivos e fluxos Vítor E. Silva Souza ([email protected]) http://www.inf.ufes.br/ ~ vitorsouza Departamento de Informática Centro Tecnológico Universidade Federal do
Decorator e Composite. Nazareno Andrade (baseado no material de Hyggo Almeida)
Decorator e Composite Nazareno Andrade (baseado no material de Hyggo Almeida) Decorator Vocês sabem como ler um arquivo texto em Java??? Pode-se usar a classe java.io.fileinputstream Vamos fazer um teste
Caracterizando o Consumo de Energia de APIs de E/S da Linguagem Java
Caracterizando o Consumo de Energia de APIs de E/S da Linguagem Java Gilson Rocha 1, Gustavo Pinto 1, Fernando Castor 2 1 Universidade Federal do Pará (UFPA) Belém PA Brasil 2 Unversidade Federal de Pernambuco
Tipos, Literais, Operadores
Tipos, Literais, Operadores Identificadores São palavras utilizadas para nomear variáveis, métodos e classes Na linguagem Java, o identificador sempre começa por letra, sublinhado(_) ou cifrão ($) Não
Tipos, Literais, Operadores
Tipos, Literais, Operadores Identificadores São palavras utilizadas para nomear variáveis, métodos e classes Na linguagem Java, o identificador sempre começa por letra, sublinhado(_) ou cifrão ($) Não
Manipulação de Arquivos
Manipulação de Arquivos SCC0604 - Programação Orientada a Objetos Prof. Fernando V. Paulovich http://www.icmc.usp.br/~paulovic [email protected] Instituto de Ciências Matemáticas e de Computação (ICMC)
Projeto V (U900005) Ciências da Computação Projeto II (U900003) Engenharia da Computação Prof. Valdir Gil Pillat
2. Strings Projeto V (U900005) Ciências da Computação Veja alguns métodos utilizados na classe String retorno = x.equals(y); // Compara strings, retorna (True/False) retorno = x.equalsignorecase(y); //
Programação Orientada a Objectos - P. Prata, P. Fazendeiro
9 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract
Coleções POO. Prof. Marcio Delamaro
Coleções POO Prof. Marcio Delamaro Programação Orientada a Objetos Prof Marcio Delamaro ICMC/USP 1/54 Definição Interface Collection E - the type of elements in this collection The root interface in
Programação II Java Streams. Christopher Burrows
Programação II Java Streams Christopher Burrows Java Streams - Introdução As aplicações informáticas consistem em trocas de dados entre duas ou mais fontes/destinos. As Streams servem para representar
Prof. MsC Vicente Paulo de Camargo PUCGO. Conteúdo baseado no livro Lógica de programação e estrutura de dados - Java - Sandra Puga
AED II Algoritmos e Estrutura de Dados II Prof. MsC Vicente Paulo de Camargo PUCGO Conteúdo baseado no livro Lógica de programação e estrutura de dados - Java - Sandra Puga BITS são a base da linguagem
Aula 11 POO 1 Coleções e Arquivos. Profa. Elaine Faria UFU
Aula 11 POO 1 Coleções e Arquivos Profa. Elaine Faria UFU - 2019 Sobre o Material Agradecimentos Aos professores José Gustavo e Fabiano, por gentilmente terem cedido seus materiais. Os slides consistem
Análise de Programação
Análise de Programação Fundamentos da Linguagem de Programação Java Prof. Gilberto B. Oliveira Variáveis Atributos: Variáveis Declaradas fora de um método, sem o modificador static Variáveis membro ou
Input / Output na linguagem java. Para isso usamos um dos construtores da classe java.io.file:
Input e Output 1 A classe File Input / Output na linguagem java Antes de podermos ler/escrever de/para um ficheiro temos que criar um objecto do tipo File e associar esse objecto ao ficheiro a que queremos
9 Classes Abstractas e Interfaces
9 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract
Especificam quem tem acesso a cada entidade, isto é, quem tem acesso a. cada classe e cada membro da classe (dados e métodos)
Mecanismos de controlo de acesso Especificam quem tem acesso a cada entidade, isto é, quem tem acesso a cada classe e cada membro da classe (dados e métodos) Modificadores de acesso: public protected private
Curso Superior de Tecnologia emtelemática Programação Orientada a Objetos Streams em Java. Copyright 2010 Prof. César Rocha
Curso Superior de Tecnologia emtelemática Programação Orientada a Objetos Streams em Java Copyright 2010 Prof. César Rocha 1 Objetivos Explorar os conceitos fundamentais acerca do uso de streams de arquivos
LÓGICA DE PROGRAMAÇÃO (JAVA) VARIÁVEIS. Professor Carlos Muniz
LÓGICA DE PROGRAMAÇÃO (JAVA) String String é uma classe contida no pacote java.lang e que descende da classe java.lang.object. De forma conceitual podemos dizer que é uma sequência de caracteres usada
Linguagem de Programação II Implementação
Linguagem de Programação II Implementação Prof. Alessandro Borges 2 Tópicos Implementação em Java Variáveis Palavras reservadas Pacotes Identificador this Acessando membros de outros objetos API Java Nossa
21/05/2013. Informações Complexas. Arquivos de Texto e Arquivos Binários. Hierarquia de Dados. Armazena Informação. Classificação de Arquivos
DCC / ICEx / UFMG Informações Complexas e Arquivos são usados para gravar informações complexas Eduardo Figueiredo Arquivo é um grupo de registros relacionados http://www.dcc.ufmg.br/~figueiredo Armazena
Aula teórica 4. Tema 3. Linguagem de Programação Java. Manipulação de informação simples (cont.)
Aula teórica 4 Tema 3. Linguagem de Programação Java. Manipulação de informação simples (cont.) Tipos de dados básicos: Representação de números inteiros Representação de números decimais Instrução de
Módulo Lógica Programação com aplicações em Java. Projeto khouse Profissionalizante Profª Larissa Brandão
Educação Módulo Lógica e Ética de Programação com aplicações em Java Projeto khouse Profissionalizante Profª Larissa Brandão Educação e Ética Fundamentos da Programação Objetivos: Reconhecer as diferenças
Streams. Profa. Patrícia A. Jaques Unisinos
Streams Profa. Patrícia A. Jaques [email protected] Unisinos Lendo do Console com a classe Scanner import java.util.scanner; public class TestaScanner { public static void main(string args[]) { Scanner
RESULUÇÃO DOS EXERCÍCIOS E INSTRUÇÕES DE DECISÃO (if{} e else{}) Profº André Aparecido da Silva Disponível em:
RESULUÇÃO DOS EXERCÍCIOS E INSTRUÇÕES DE DECISÃO (if{} e else{}) Profº André Aparecido da Silva Disponível em: http://www.oxnar.com.br/aulas/java ATIVIDADE ELABORAR O PROGRAMA DE CÁLCULOS DE ÁREAS USANDO
Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan
Introdução a classes e objetos Prof. Marcelo Roberto Zorzan Aula de Hoje Abstração de Dados Classes e Objetos Definição de Métodos Métodos com parâmetro Abstração de Dados Processo mental através do qual
Vetores Unimensionais
Vetores Unimensionais Objetivos Entender a importância e a necessidade do uso de Vetores Definição de Manipulação de Vetores Inserir elementos em um vetor (usando laços ou não) Imprimir elementos de um
Simulado de Linguagem de Programação Java
Simulado de Linguagem de Programação Java 1. Descreva o processo de criação de programas em Java, desde a criação do código-fonte até a obtenção do resultado esperado, por meio de sua execução. Cite as
Computação II - Java - Prova 1 Prof. Adriano Joaquim de Oliveira Cruz /05/13. Questão: Total Pontos: Gráu:
Computação II - Java - Prova 1 Prof. Adriano Joaquim de Oliveira Cruz - 2015/05/13 Questão: 1 2 3 4 5 6 Total Pontos: 20 15 15 10 10 30 100 Gráu: 1. Defina os termos listados a seguir: (a) (10 Pontos)
Sumário. Ficheiros. Ficheiros
Sumário Ficheiros Motivação Operações Ficheiros de texto e binários Manipulação de ficheiros de texto Abertura Encerramento Descritores de ficheiros: stdin, stdout, stderr Escrita Leitura Outras funções
Ler e escrever bytes, caracteres e Strings de/para a entrada e saída padrão. Ler e escrever bytes, caracteres e Strings de/para arquivos
O pacote java.io Material baseado na apostila FJ-11: Java e Orientação a Objetos do curso Caelum, Ensino e Inovação, disponível para download em http://www.caelum.com.br/apostilas/ 1 Objetivos Ler e escrever
Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura
Java First-Tier: Aplicações Orientação a Objetos em Java (I) Paradigmas de Programação Programação Funcional Programação Procedural Programação Orientada por Objetos Grupo de Linguagens de Programação
Tipos de dados e comandos POO
Tipos de dados e comandos POO Prof. Marcio Delamaro 1/46 Objetivo Vamos ver quais são os tipo de dados primitivos da linguagem Vamos ver quais são os principais comandos 2/46 Tipos Tipo Tamanho int 4 bytes
ALOCAÇÃO DINÂMICA DE MEMÓRIA
INE5408 Estruturas de Dados Semestre 2008/1 Prof. Leandro J. Komosinski ALOCAÇÃO DINÂMICA DE Memória de Computador 1 byte = 8 bits (ex.: 00100110) 1 KB = 1024 bytes 1 MB = 1024 KB 1 GB = 1024 MB Meu computador
Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação
4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança
ALGORITMOS. Professor: Diego Oliveira. Aula 06 - Tipos Primitivos de Dados
ALGORITMOS Professor: Diego Oliveira Aula 06 - Tipos Primitivos de Dados Netbeans Para testar nossos exemplos criaremos uma classe no Netbeans Nesta disciplina não será visto nada de orientação a objetos,
Palavras Reservadas da Linguagem Java
Palavras Reservadas da Linguagem Java Palavras Reservadas da Linguagem Java: Categorias Tipos de dados primitivos Literais Pseudo-variáveis Desvio e controle de fluxo Pacotes Exceções Modificadores de
Programação. MEAer e LEE. Manipulação de ficheiros de texto. Bertinho Andrade da Costa. Instituto Superior Técnico. 2010/2011 1º Semestre
Programação MEAer e LEE Bertinho Andrade da Costa 2010/2011 1º Semestre Instituto Superior Técnico Manipulação de ficheiros de texto Programação 2010/2011 IST-DEEC Manipulação de Ficheiros 1 Sumário Ficheiros
Orientação a Objetos e Java
Orientação a Objetos e Java Daves Martins [email protected] Mestre em Computação de Alto Desempenho pela UFRJ Especialista em Banco de Dados Analista Web Orientação a Objetos e Java Características
