Streams e Ficheiros I/O

Tamanho: px
Começar a partir da página:

Download "Streams e Ficheiros I/O"

Transcrição

1 Streams e Ficheiros I/O Capítulo 9

2 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 de ficheiros texto. Saber usar as classes ObjectOutputStream e ObjectInputStream para ler e guardar objectos em ficheiros binários.

3 Ficheiros I/O Leitura do Keyboard e escrita no ecrã tratam unicamente dados temporários, que se perdem quando o programa termina. Ficheiros providenciam formas de armazenar e recuperar grandes quantidades de dados. Ficheiros permitem que os dados sejam armazenados permanentemente (ou até que o programa modifique o ficheiro). Ficheiros de leitura podem ser usados várias vezes por programas diferentes.

4 Como usar ficheiros para I/O? Ficheiros podem ser usados para armazenar: Classes Java Programas Java Output de programas Input de programas. Em Java a leitura e escrita em ficheiros, bem como a leitura do keyboard e a escrita no ecrã é feita através de streams. Uma stream é uma sequência de dados (caracteres, números, etc.). Neste capítulo discute-se programas que usam streams ligados a ficheiros.

5 O conceito de Stream Um stream é implementado como um objecto. Os dados escritos num output stream são entregues num destino que pode ser um ficheiro ou o ecrã. Os dados que o programa lê de um input stream são recebidos duma fonte que pode ser um ficheiro ou o keyboard. System.out é o único output stream que usamos até agora. Objectos da classe Scanner, usados para o leitura do keyboard, lêem os dados de um input stream.

6 Ficheiros de texto (text files) e binários (binary files) Todos os dados do ficheiro são armazenados em binário. Ficheiros cujo conteúdo tem que ser tratado como uma sequência binária são denominados ficheiros binários; ficheiros binários só podem ser lidos por máquinas. Por vezes, é mais conveniente pensar em ficheiros como uma sequência de caracteres. Ficheiros de texto podem ser lidos por qualquer pessoa. Streams que nos permitem ver os ficheiros como uma sequência de caracteres são denominados de texto.

7 Ficheiros de texto e binários Usualmente ficheiros de texto visualizam-se da mesma forma em todos os computadores. Usualmente ficheiros binários diferem de máquina para máquina e de linguagem de programação para linguagem de programação. Normalmente, a plataforma e as linguagens de programação usadas para criar os ficheiros tem que ser usadas para os ler. Contudo, ficheiros binários são mais eficientes que ficheiros de texto. Em Java, ficheiros binários são independentes da plataforma.

8 Ficheiros de texto e binários Em Java, ficheiros binários podem ser criados numa plataforma de computador e lidos noutra, combinando portabilidade e eficiência. Embora ficheiros de texto possam ser lidos e escritos num editor, e os ficheiros binários tenham que ser lidos e escritos por um programa.

9 Nomes dos ficheiros As regras das palavras dos nomes dos ficheiros dependem do sistema operativo, não do Java. Tipicamente os sistemas operativos permitem que se use letras, dígitos, e o símbolo do ponto como palavras do nome dos ficheiros. O sufixo.txt indica um ficheiro de texto, mas isto é uma convenção.

10 Nome dos ficheiros - pathnames Quando se providencia o nome de um ficheiro como argumento para abrir um ficheiro, o nome do ficheiro pode ser usado se o ficheiro estiver na mesma directoria em que o programa está em execução. Tanto pode ser usado o pathname total como o relativo. O pathname total é o pathname que começa na directoria raiz. O relativo é a partir da directoria em que o programa está em execução. O caminho para especificar os pathnames depende do sistema operativo.

11 Nome dos ficheiros - pathnames Exemplo UNIX - /user/smith/home.work1/data.txt String pathname="/user/smith/home.work1/data.txt"; Exemplo Windows - D:\homework\hw1\data.txt String pathname="d:\\homework\\hw1\\data.txt ; As duplas \\ tem que ser usado no pathname devido ao \ ser um carácter de escape, mas quando o pathname é introduzido pelo teclado só deve ser \. Um programa Java aceita pathname escritos nos dois formatos Windows ou UNIX, mesmo o sistema operativo usado não aceite esse formato: "D:/homework/hw1/data.txt"

12 Outline: Ficheiros de texto I/O Escrita em ficheiros de texto - PrintWriter Leitura em ficheiros de texto - BufferedReader Classe StringTokenizer Classes FileReader e FileOutputStream

13 Escrita em ficheiros de texto classe PrintWriter O package java.io contém as definições das classes de I/O em ficheiros apresentadas neste capítulo. A classe PrintWriter é a que vai ser usada para escrita em ficheiros de texto. O método println da classe PrintWriter comportamento idêntico ao método System.out.println. tem

14 Exemplo: Escrita em ficheiros de texto

15 Exemplo: Escrita em ficheiros de texto

16 Classe FileOutputStream Um ficheiro é aberto para escrita usando: new FileOutputStream("out.txt") esta instrução cria um stream, que é um objecto do tipo OutputStream, e liga-o a um ficheiro vazio Se já existe um ficheiro com o nome passado no argumento, todo o seu conteúdo é perdido. Se o nome do ficheiro não existe, é criado um novo ficheiro com o nome passado como argumento. O construtor de FileOutputStream, pode lançar (throw) uma excepção FileNotFoundException, que significa que o ficheiro não foi criado. Um ficheiro é aberto para acrescentar texto no fim usando o construtor com dois parâmetros: new FileOutputStream(FileName, true)

17 Classe PrintWriter A classe Printwriter tem um construtor com um parâmetro do tipo OutputStream. Para criar o output stream que será usado como argumento do construtor de PrintWriter, usa-se a classe FileOutputStream. Exemplo: PrintWriter nomeoutputstream = new PrintWriter( new FileOutputStream(pathname) ); O construtor de FileOutputStream e não a invocação do construtor PrintWriter pode lançar uma FileNotFoundException. No exemplo anterior o objecto PrintWriter é declarado fora do bloco try. Se for declarado dentro do bloco try, é uma variável local ao bloco.

18 classe PrintWriter Construtor PrintWriter( OutputStream streamobject ) PrintWriter( String pathname ) Escrever no ficheiro ligado ao stream public final void println(almost_anything) public final void print(almost_anything) Fechar a ligação ao ficheiro public void close() Despejar (flush) o output stream public void flush()

19 Uso do tostring na escrita em ficheiros de texto Os métodos println e print da classe PrintWriter têm um comportamento idêntico ao System.out.println e System.out.print, respectivamente. Classes tipicamente incluem o método tostring, logo: objoutputstream.println(obj); é equivalente objinputstream.println(obj.tostring());

20 Uso do tostring na escrita em ficheiros de texto

21 Uso do tostring na escrita em ficheiros de texto

22 Fechar os ficheiros de texto Quando um programa termina a escrita ou a leitura de um ficheiro, deve-se fechar o ficheiro. Exemplos objoutputstream.close(); objinputstream.close(); Se o programa não fecha o ficheiro antes do programa terminar, o Java força o seu fecho quando o programa termina, providenciando que o programa termine normalmente. Quanto mais cedo um ficheiro for fechado, menos provável é que seja estragado quando o programa termina anormalmente. Se um programa escreve num ficheiro, tem que fechar o ficheiro antes de o usar para leitura.

23 Leitura de ficheiros de texto classe BufferedReader A classe BufferedReader é a que se vai usar para leitura de ficheiros de texto. A classe BufferedReader não aceita o nome do ficheiro como argumento do construtor. O construtor da classe BufferedReader aceita um objecto Reader como argumento. A classe FileReader é que recebe o nome de um ficheiro como argumento do construtor e produz um objecto Reader associado a um input stream.

24 Classe BufferedReader Exemplo BufferedReader objinputstream = new BufferedReader( new FileReader(pathname) ); O construtor de FileReader, e deste modo a invocação do construtor de BufferedReader, pode lançar (throw) FileNotFoundException. Os métodos readline e read são usados para ler do ficheiro.

25 Exemplo: Ler duas linhas de um ficheiro de texto

26 Métodos da classe BufferedReader Construtor BufferedReader(Reader readerobject) Criar um stream new BufferedReader( new FileReader(pathname) ) Ler uma linha do ficheiro public String readline() throws IOException Se a operação de leitura for além do fim do ficheiro, retorna null. Fechar a ligação com o ficheiro public void close()

27 Métodos da classe BufferedReader Ler um carácter do ficheiro e retornar o seu valor int public int read() throws IOException Se a operação de leitura for além do fim do ficheiro, retorna -1. Ler um carácter do ficheiro e tratá-lo como tal é necessário a conversão explicita char next = (char)(inputstream.read()); Ler um número do ficheiro de texto, o número tem que ser lido como uma string e a string tem que ser convertida em número.

28 Exemplo: Ler o nome do ficheiro

29 Teste do fim do ficheiro de texto Quando o método readline da classe BufferedReader verifica que a leitura é para além do fim do ficheiro, retorna o valor null. Quando o método read verifica que a leitura é para além do fim do ficheiro, retorna o valor -1.

30 Teste do fim do ficheiro de texto

31 Classe StringTokenizer A classe BufferedReader pode ler linhas inteiras ou um simples carácter, mas não palavras. A classe StringTokenizer pode receber uma linha de texto e dividi-la em palavras individuais. A classe StringTokenizer está no package java.util. Uma palavra individual é denominada token. Tokens são sequências de caracteres diferentes de espaços.

32 Classe StringTokenizer Exemplo StringTokenizer tokenizer = new StringTokenizer("Read my lips!"); while (tokenizer.hasmoretokens(){ System.out.println(tokenizer.nextToken()); Produz Read my lips! Separadores são caracteres espaço a menos que outros sejam especificados. Para especificar o conjunto de caracteres separadores, na construção deve ser dado como segundo argumento uma string com todos os caracteres separadores. Exemplo new StringTokenizer("Read my lips!", " \n.,!");

33 Métodos da classe StringTokenizer Construtores public StringTokenizer(String thestring) public StringTokenizer(String thestring, String delimiters) Verifica se existem mais tokens? public boolean hasmoretokens() Obter o próximo token public String nexttoken() Obter o número de tokens que faltam obter public int counttokens()

34 Classes FileReader e FileOutputStream A classe FileReader é usada com a classe BufferedReader; a classe FileOutputStream é usada com a classe Printwriter. A classe FileReader e a classe FileOutputStream aceitam o nome de um ficheiro como argumento do construtor. Associar um objecto BufferedReader com um ficheiro usando uma string com o nome requer dois passos: Primeiro, criar um objecto da classe FileReader. Depois usar esse objecto para criar um objecto da classe BufferedReader. BufferedReader objinputstream = new BufferedReader(new FileReader("story.txt"));

35 Classes FileOutputStream e Associar um objecto PrintWriter com um ficheiro usando uma string com o nome requer dois passos: Primeiro, criar um objecto da classe FileOutputStream. Depois usar esse objecto para criar um objecto da classe PrintWriter. Exemplo PrintWriter objoutputstream = new PrintWriter PrintWriter (new FileOutputStream("stuff.txt"));

36 Classe File Os métodos da classe File podem testar propriedades do ficheiro tal como: Se o nome do ficheiro existe? Se o ficheiro se pode ler? Tipicamente, o sistema operativo permite ficheiros que não se podem ler ou que só podem ser lidos por certos utilizadores. A classe File é como uma classe wrapper (empacotadora) para strings que são nomes de ficheiros: new File("data.txt")

37 Classe File

38 Métodos da classe File O método exists determina se o nome do ficheiro existe: public boolean exists() O método canread determina se o sistema operativo permite a leitura do ficheiro: public boolean canread() O método canwrite determina se o sistema operativo permite a escrita no ficheiro: public boolean canwrite() Tipicamente, o sistema operativo permite ficheiros que não se podem escrever ou que só podem ser escritos por certos utilizadores. Outros métodos public boolean delete() public long length() public String getname() public String getpath() public boolean isdirectory() public String[] list()

39 Exemplo: Agenda

40 Exemplo: classe Data public class Data { protected int dia, mes, ano; public Data( int d, int m, int a ) { dia = d; mes = m; ano = a; public Data( String d ) { StringTokenizer st=new StringTokenizer(d,"/"); dia = Integer.parseInt(st.nextToken()); mes = Integer.parseInt(st.nextToken()); ano = Integer.parseInt(st.nextToken()); public boolean fazanos(data dt) { return dt.dia == dia && dt.mes == mes; public int idade( Data dt ) { int n = dt.ano-ano; return ( mes < dt.mes mes == dt.mes && dia < dt.dia)? n-1 : n;

41 Exemplo: classe Data public boolean equals( Object o) { if ( o instanceof Data ) { Data dt = (Data) o; return dt.dia == dia && dt.mes == mes && dt.ano == ano; return false; public String tostring() { return dia+ "/" + mes + "/" + ano; public static Data getdata( ) { Calendar c = Calendar.getInstance(); return new Data( c.get(calendar.day_of_month), c.get(calendar.month)+1, c.get(calendar.year) );

42 Exemplo: classe Entrada public class Entrada { protected String nome; // Nome da pessoa protected String tel; // Telefone protected Data dtnasc; // Data de nascimento protected Data createdata( String d ) { return new Data(d); protected Entrada(String n, String t, Data dn) { nome = n; tel = t; dtnasc= dn; public Entrada(String n, String t, String d) { nome = n; tel = t; dtnasc= createdata(d); public Entrada( String ent ) { StringTokenizer st = new StringTokenizer(ent); nome = st.nexttoken(":"); st.nexttoken(" "); // Consumir os dois pontos tel = st.nexttoken(" "); dtnasc = createdata(st.nexttoken());

43 Exemplo: classe Entrada public String getnome() { return nome; public String gettelefone() { return tel; public String getdata(){return dtnasc.tostring(); public int getidade(data dt) { return dtnasc.idade(dt); public boolean fazanos(data dt) { return dtnasc.fazanos(dt); public boolean equals( Object o) { if ( o instanceof Entrada ) return nome.equals(((entrada) o).nome); return false; public String tostring() { return getnome() + ": " + gettelefone() + " " + getdata() ;

44 interface ArrayEntradas public interface ArrayEntradas { int size(); boolean add( Entrada e ); Entrada get( int ind); void set(int ind, Entrada e);

45 Exemplo: classe Agenda public class Agenda { protected ArrayEntradas telefones; public Agenda(ArrayEntradas array) { telefones = array; public int size() { return telefones.size(); public String getnome( int ind ) { return telefones.get(ind).getnome(); public String gettelefone( int ind ) { return telefones.get(ind).gettelefone(); public String getdata( int ind ) { return telefones.get(ind).getdata(); public int indexof( String nome ) { for (int i= 0; i < telefones.size(); ++i) if (getnome().equals(nome)) return i; return -1; protected void add( Entrada e ) { int ind = indexof(e.getnome()); if (ind == -1) telefones.add( e ); else telefones.set(ind, e);

46 Exemplo: classe Agenda public void add(string e) { add( new Entrada( e )); public void add(string n, String t, String d) { add( new Entrada(n, t, d)); public void append( Agenda a ) { for (int i= 0; i < a.size(); ++i) add(a.telefones.get(i)); public String aniversarios( ) { Data dt = Data.getData(); Entrada e; StringBuffer str = new StringBuffer(); for (int i = 0; i < telefones.size(); ++i) { e = telefones.get(i); if ( e.fazanos(dt) ) { str.append(e.getnome()); str.append(" faz "); str.append(e.getidade(dt)); str.append(" anos.\n"); return str.tostring(); public String tostring( ) { StringBuffer str = new StringBuffer(); for (int i = 0; i < telefones.size(); ++i) { str.append( telefones.get(i) ); str.append('\n'); return str.tostring();

47 Exemplo: classe AplAgenda public class AplAgenda { protected Scanner keyboard = new Scanner( System.in ); protected Agenda agd; public AplAgenda( Agenda a ) { agd= a; protected void listar( ) throws FileNotFoundException { System.out.print( agd ); protected void gettelefone( ) { System.out.print("Nome da pessoa? "); String nome = keyboard.nextline(); int ind = agd.indexof(nome); if ( ind!= -1 ) System.out.println( agd.gettelefone(ind) ); else System.out.println( nome + " não consta na agenda" ); protected void acrescentar( ) { System.out.print("Nome? "); String nome = keyboard.nextline(); System.out.print("Telefone? "); String tel = keyboard.next(); keyboard.nextline(); System.out.print("Data de nascimento (dd/mm/aa)? "); String data = keyboard.next(); keyboard.nextline(); try { agd.add(nome, tel, data); catch ( Exception e ) { throw new NumberFormatException("Formato da data inválido");

48 Exemplo: classe AplAgenda protected void leragenda( ) throws FileNotFoundException, IOException { String filename = Utils.getFilename( "Nome do ficheiro? " ); BufferedReader br = new BufferedReader( new FileReader(filename) ); String line; while( (line = br.readline())!= null ) try { agd.add( line ); catch ( Exception e ) { throw new StreamCorruptedException( "Ficheiro corrompido"); br.close();

49 Exemplo: classe AplAgenda protected void escrever( String str ) throws FileNotFoundException { PrintWriter pw; String filename = Utils.getFilename("Nome do ficheiro? "); pw = new PrintWriter( new FileOutputStream(filename) ); pw.print( str ); pw.close(); protected void escreveragenda( ) throws FileNotFoundException, IOException { escrever(agd.tostring());

50 Exemplo: classe AplAgenda protected void escreveragenda( ) throws FileNotFoundException, IOException { escrever(agd.tostring()); protected void aniversarios( ) throws FileNotFoundException { System.out.print("Quer escrever em ficheiro? "); String ans = keyboard.nextline(); ans = ans.tolowercase(); if (ans.equals("sim") ans.equals("s")) escrever(agd.aniversarios()); else System.out.print( agd.aniversarios() );

51 Exemplo: classe AplAgenda public void run( ) { for (;;) try { System.out.print("Comandos:\n 1 - telefone\n... \n->" ); int numcom = keyboard.nextint(); keyboard.nextline(); switch ( numcom ) { case 1: this.gettelefone(); break; case 2: this.aniversarios(); break; case 3: this.listar(); break; case 4: this.acrescentar(); break; case 5: this.leragenda(); break; case 6: this.escreveragenda(); break; case 7: return; default: System.out.println( "Comando invalido" ); catch ( FileNotFoundException e ) { { System.out.println( "Não é possível abrir o ficheiro"); catch ( StreamCorruptedException e) { System.out.println( "Ficheiro corrompido"); catch ( IOException e ) { System.out.println( "Erro no acesso ao ficheiro"); catch ( NumberFormatException e ) { System.out.println( e.getmessage() );

52 Leitura de ficheiros e de texto Não se deve ler um ficheiro binário como se fosse um ficheiro de texto (usar ObjectInputStream) ou um ficheiro de texto como se fosse um ficheiro binário (usar BufferedReader). O método tostring pode ser usado na escrita de objectos no ecrã e em ficheiros de texto. Contudo o método tostring não é necessário na escrita ficheiros binários.

53 Interface Serializable A classe que é Serializable determina como o Java realiza I/O em ficheiros de objectos da classe. Java afecta um número de série em cada objecto da classe que é escrito na stream do tipo ObjectOutputStream. Se o objecto é escrito mais do que uma vez, o Java escreve somente o número de série do objecto. Isto torna I/O em ficheiros mais eficiente e cria ficheiros pequenos.

54 Interface Serializable Quando da leitura de stream do tipo ObjectInputStream, números de série duplicados são retornadas referencias para o mesmo objecto. Quando uma classe Serializable tem uma variável de instancia do tipo classe, a classe da variável de instancia tem que ser Serializable. É boa prática de programação armazenar dados de um único tipo de classe num ficheiro.

55 Exemplo: classes Data, Entrada e Agenda import java.io.serializable; public class Data implements Serializable { private static final long serialversionuid = 1L;... public class Entrada implements Serializable { private static final long serialversionuid = 1L;... public class Agenda implements Serializable { private static final long serialversionuid = 1L;...

56 Exemplo: classe AplAgenda3 public class AplAgenda3 extends AplAgenda { public AplAgenda3( Agenda a ) { super(a); protected void leragenda( ) throws FileNotFoundException, IOException { String filename = Utils.getFilename("Nome do ficheiro? "); ObjectInputStream is = new ObjectInputStream( new FileInputStream(filename) ); try { Agenda a = (Agenda) is.readobject(); agd.append( a ); catch ( ClassCastException e ) { throw new StreamCorruptedException("Ficheiro corrumpido"); catch ( ClassNotFoundException e ) { throw new StreamCorruptedException("Ficheiro corrumpido"); is.close(); protected void escreveragenda( ) throws FileNotFoundException, IOException { String filename = Utils.getFilename( "Nome do ficheiro? " ); ObjectOutputStream os = new ObjectOutputStream( new FileOutputStream(filename)); os.writeobject( agd ); os.close();

57 Array de objectos em ficheiros binários Um array pode ser armazenado num ficheiro binário usando writeobject, e pode ser lido posteriormente usando readobject. Se o tipo base do array é do tipo classe, a classe tem que ser Serializable. Todos os dados do array podem ser escritos no ficheiro binário usando uma única invocação a writeobject.

58 Exemplo: Array de objectos em ficheiros binários (escrita)

59 Exemplo: Array de objectos em ficheiros binários (leitura)

60 Exemplo: Array de objectos em ficheiros binários

61 Sumário Começaram a familiarizar-se com o conceito de I/O stream. Entenderam a diferença ente ficheiros binários e ficheiros de texto. Aprenderam a armazenar dados em ficheiros. Aprenderam como ler os dados de ficheiros. Aprenderam como se usa as classes ObjectOutputStream e ObjectInputStream para ler e escrever objectos de ficheiros binários.

Como pôde verificar, a criação de um objecto do tipo File não cria o ficheiro em disco.

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\\

Leia mais

InputStream e OutputStream para ler/ escrever bytes e das classes abstractas Reader e Writer para ler /escrever caracteres (texto).

InputStream e OutputStream para ler/ escrever bytes e das classes abstractas Reader e Writer para ler /escrever caracteres (texto). 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

Leia mais

Reader e Writer para streams de caracteres (texto).

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

Leia mais

Reader e Writer para streams de caracteres (texto).

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

Leia mais

AULA TEÓRICA 4. Tema 5. Ficheiros. Ficheiro do tipo texto. Ficheiros de Objectos. Ø Classe File Ø Criação. Manipulação. Ø Classe StringTokenizer

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)

Leia mais

PROGRAMAÇÃO JAVA. Parte 3

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

Leia mais

Tipos, Literais, Operadores

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

Leia mais

Tipos, Literais, Operadores

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

Leia mais

Notas de POO: interfaces, excepções e input/output

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........................

Leia mais

Universidade de Mogi das Cruzes Implementação Orientada a Objetos - Profª. Danielle Martin. Guia da Sintaxe do Java

Universidade de Mogi das Cruzes Implementação Orientada a Objetos - Profª. Danielle Martin. Guia da Sintaxe do Java Guia da Sintaxe do Java TIPOS PRIMITIVOS DE DADOS DO JAVA São os tipos nativos de dados do Java, que podem ser usados na declaração de atributos, variáveis, parâmetros. Tipo primitivo Tamanho Valor padrão

Leia mais

Entrada e Saída Exercício. Linguagem Java. Adenilso da Silva Simão 01/09/05

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

Leia mais

Programação Estruturada e Orientada a Objetos

Programação Estruturada e Orientada a Objetos INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE Programação Estruturada e Orientada a Objetos Docente: Éberton da Silva Marinho e-mail: [email protected] [email protected]

Leia mais

Manipulação de Arquivos

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)

Leia mais

Palavras Reservadas da Linguagem Java

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

Leia mais

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

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

Leia mais

Linguagem de Programação II Implementação

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

Leia mais

Array de objectos Array de objectos Criação Exemplo:

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

Leia mais

Input / Output na linguagem java. Para isso usamos um dos construtores da classe java.io.file:

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

Leia mais

No final deste curso, saberás criar programas através da linguagem de programação Java.

No final deste curso, saberás criar programas através da linguagem de programação Java. Programação em Java Programação Formato: Mentored - Online Preço: 415 ( Os valores apresentados não incluem IVA. Oferta de IVA a particulares e estudantes. ) Horário: Flexível das 24h/24h Duração: ~45h

Leia mais

JAVA. Professor: Bruno Toledo

JAVA. Professor: Bruno Toledo JAVA Professor: Bruno Toledo Funcionamento de uma LP Em uma Linguagem de Programação (LP) como C e Pascal, temos o seguinte quadro quando vamos compilar um programa. Código fonte em c Teste.c Gera código

Leia mais

Sumário. Ficheiros. Ficheiros

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

Leia mais

Linguagem Java - Introdução

Linguagem Java - Introdução Linguagem Java - Introdução Identificadores válidos resultado teste01 _numeroclientes $fortuna Identificadores Identificadores inválidos 101dalmatas 34 #x Palavras reservadas abstract assert*** boolean

Leia mais

Projeto V (U900005) Ciências da Computação Projeto II (U900003) Engenharia da Computação Prof. Valdir Gil Pillat

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); //

Leia mais

Análise de Programação

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

Leia mais

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. 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

Leia mais

Programação Orientada aos Objectos I

Programação Orientada aos Objectos I Programação Orientada aos Objectos I UEM Fevereiro 2014 Docente: eng a Tatiana Kovalenko AULA TEÓRICA 1 Tema 1. Introdução à POO Ø Revisão: POO. Classes e Objectos. Elaborado por eng.tatiana Kovalenko,

Leia mais

Tipos de dados e comandos POO

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

Leia mais

Prova 2 PMR3201 1o. semestre 2016 Prof. Thiago Martins

Prova 2 PMR3201 1o. semestre 2016 Prof. Thiago Martins Prova 2 PMR3201 1o. semestre 2016 Prof. Thiago Martins Instruções: Escreva o nome e o número USP na folha de papel almaço. Os códigos fornecidos na seção Códigos-fonte de apoio podem ser referenciados

Leia mais

Seleção Múltipla Laços (while, do-while, for) AULA 05

Seleção Múltipla Laços (while, do-while, for) AULA 05 Introdução a Programação IF669 http://www.cin.ufpe.br/~if669 Seleção Múltipla Laços (while, do-while, for) AULA 05 Ricardo Massa F. Lima [email protected] Sérgio C. B. Soares [email protected] Até aqui...

Leia mais

MsC. João Maria MsC. Liviane Melo

MsC. João Maria MsC. Liviane Melo Disciplina: Programação Orientada à Objetos AULA 02 Corpo docente: MsC. Alexandro Vladno Edmilson Campos MsC. Fábio Procópio Esp. Felipe Dantas MsC. João Maria MsC. Liviane Melo 2 Tipo Tamanho Alcance

Leia mais

Programação Orientada a Objetos SANTOS, Rafael (PLT)

Programação Orientada a Objetos SANTOS, Rafael (PLT) Programação Orientada a Objetos SANTOS, Rafael (PLT) Possibilita atribuições em sequência na mesma instrução Retorna o valor atribuído Atribuições compostas: incluem a própria variável: +=, *=, -=, etc

Leia mais

Módulo 03. Identificadores, Palavras Reservadas, e Tipos

Módulo 03. Identificadores, Palavras Reservadas, e Tipos Módulo 03 Identificadores, Palavras Reservadas, e Tipos Objetivos Utilizar comentários em um programa. Distinguir entre identificadores válidos e não-válidos. Reconhecer palavras-reservadas da tecnologia

Leia mais

Paradigmas da Programação PPROG. Tipos Enumerados. Nelson Freire (ISEP DEI-PPROG 2013/14) 1/20

Paradigmas da Programação PPROG. Tipos Enumerados. Nelson Freire (ISEP DEI-PPROG 2013/14) 1/20 PPROG Paradigmas da Programação Tipos Nelson Freire (ISEP DEI-PPROG 2013/14) 1/20 Sumário Interesse Definição Implementação Declaração Valor de um Tipo Enumerado Variável de Tipo Enumerado Métodos Automáticos

Leia mais

10 Arquivos e fluxos. Desenvolvimento OO com Java. Vítor E. Silva Souza

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

Leia mais

Programação Orientada a Objetos

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

Leia mais

Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc.

Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc. Sintaxe Geral Tipos de Dados Comentários Comentários: De linha: // comentário 1 // comentário 2 De bloco: /* linha 1 linha 2 linha n */ De documentação: /** linha1 * linha2 */ Programa Exemplo: ExemploComentario.java

Leia mais

Programação de Computadores II TCC 00.174/Turma A 1

Programação de Computadores II TCC 00.174/Turma A 1 Programação de Computadores II TCC 00.174/Turma A 1 Professor Leandro A. F. Fernandes http://www.ic.uff.br/~laffernandes Conteúdo: Entrada e saída de dados Material elaborado pelos profs. Anselmo Montenegro

Leia mais

Bacharelado em Ciência e Tecnologia Processamento da Informação. Equivalência Portugol Java. Linguagem Java

Bacharelado em Ciência e Tecnologia Processamento da Informação. Equivalência Portugol Java. Linguagem Java Linguagem Java Objetivos????? ADAPTAR O TEXTO ABAIXO????? Aprender a sintaxe da Estrutura de Repetição ENQUANTO-FAÇA na linguagem PORTUGOL Aprender a resolver problemas que requeiram o uso de ESTRUTURAS

Leia mais

Familiarização com a ferramenta JavaCC

Familiarização com a ferramenta JavaCC Ficha nº 2 Familiarização com a ferramenta JavaCC Estrutura do ficheiro JavaCC O JavaCC utiliza um ficheiro com a extensão.jj, onde são descritos, pelo utilizador, o léxico e a sintaxe da linguagem e gera

Leia mais

CIÊNCIA DA COMPUTAÇÃO - LINGUAGEM DE PROGRAMAÇÃO II REVISÃO POO

CIÊNCIA DA COMPUTAÇÃO - LINGUAGEM DE PROGRAMAÇÃO II REVISÃO POO REVISÃO POO INTRODUÇÃO À LINGUAGEM JAVA CRIANDO CLASSES EM JAVA Convenção de Nomes em Java Classes iniciam com letras maiúsculas Métodos, atributos e variáveis locais iniciam com minúsculas. Declaração

Leia mais

Linguagem de Programação III

Linguagem de Programação III Linguagem de Programação III Aula-5 Estruturas de Decisão e Controle. Arrays em Java Prof. Esbel Tomás Valero Orellana Até Aqui Modelos e POO Classes e sua implementação em Java Encapsulamento Tipos de

Leia mais

AULA TEÓRICA 4. Tema 2. Introdução a programação em Java (Continuação) Tema 3. Instruções básicas de entrada e saída

AULA TEÓRICA 4. Tema 2. Introdução a programação em Java (Continuação) Tema 3. Instruções básicas de entrada e saída AULA TEÓRICA 4 Tema 2. Introdução a programação em Java (Continuação) Ø Expressões. Ø Operadores de incrementação e de decrementação unária de variáveis. Ø Classe Math. Ø Conversões de tipo. Ø Expressões

Leia mais

P R O G R A M A. Stream Stream. Stream. Figura 1. Streams representam fluxos unidirecionais de dados, seja em entrada ou saída.

P R O G R A M A. Stream Stream. Stream. Figura 1. Streams representam fluxos unidirecionais de dados, seja em entrada ou saída. Universidade do Vale do Rio dos Sinos Laboratório 2 Prof. Gerson Cavalheiro Material de Apoio Aula 3 Manipulação de s Em Java, assim como em C e C++, a entrada/saida (input/output) é realizada através

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

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

Leia mais

RESPOSTA: import java.util.arraylist; import java.util.list; class CarrinhoDeCompras2 { List<Produto> produtos;

RESPOSTA: import java.util.arraylist; import java.util.list; class CarrinhoDeCompras2 { List<Produto> produtos; Fundação CECIERJ - Vice Presidência de Educação Superior a Distância Curso de Tecnologia em Sistemas de Computação Disciplina: Programação Orientada a Objetos AP2 2 semestre de 2016. Nome Assinatura Observações:

Leia mais

Java Básico. Carga Horária: 32 horas. Pré-requisito: Lógica de Programação; JAVA. Conteúdo Programático

Java Básico. Carga Horária: 32 horas. Pré-requisito: Lógica de Programação; JAVA. Conteúdo Programático Java Básico Objetivo: Os assuntos apresentados no decorrer do curso Java Básico incluem os conceitos gerais desta linguagem assim como a definição e utilização de seus recursos diversos, tais como: tipos

Leia mais

Orientação a Objetos AULA 09

Orientação a Objetos AULA 09 Orientação a Objetos AULA 09 Prof. Fabrício Martins Mendonça Conteúdo da Aula ü Coleções ü Coleções lista de objetos ü Coleções conjuntos 2 Coleções Podemos armazenar vários objetos em um array e este

Leia mais

Tratamento de Erros. Sérgio Luiz Ruivace Cerqueira

Tratamento de Erros. Sérgio Luiz Ruivace Cerqueira Tratamento de Erros Sérgio Luiz Ruivace Cerqueira [email protected] Agenda Introdução Try, catch, finally Unchecked Exceptions Como levantar exceções Boas práticas O problema Calculadora numero1:

Leia mais

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas UNIP - Ciência da Computação e Sistemas de Informação Estrutura de Dados AULA Pilhas Estrutura de Dados A Estrutura de Dados Pilha Pilha é uma estrutura de dados usada em programação, que tem uma regra

Leia mais

Programação Orientada a Objetos II Java Segunda aula. Prof. Rogério Albuquerque de Almeida

Programação Orientada a Objetos II Java Segunda aula. Prof. Rogério Albuquerque de Almeida Programação Orientada a Objetos II Java Segunda aula 1 Programação Orientada a Objeto II Tipos de Dados e Variáveis Operadores Operadores aritméticos Operadores relacionais Operadores lógicos Operadores

Leia mais

Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... }

Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... } Recapitulando Orientação a objetos: programas organizados em torno da definição de classes, instanciação de objetos e troca de mensagens. Declaração de variáveis de referencia: Circle c; Criação/instanciação

Leia mais

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan Prof a. Rachel Reis

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan Prof a. Rachel Reis Introdução a classes e objetos Prof. Marcelo Roberto Zorzan Prof a. Rachel Reis Estruturas de Seleção if... else Operador condicional (? : ) switch Aula de Hoje Estruturas de Repetição: while/do... while/for

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Programação Orientada a Objetos Implementação do analisador de logs do Servidor Web com base nos requisitos da unidade curricular de Estatística, de acordo com o roteiro abaixo: Recuperar o conteúdo do

Leia mais

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

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

Leia mais

21/05/2013. Informações Complexas. Arquivos de Texto e Arquivos Binários. Hierarquia de Dados. Armazena Informação. Classificação de Arquivos

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

Leia mais

Aula teórica 10 Tema 10. Selecção Instruções de selecção:

Aula teórica 10 Tema 10. Selecção Instruções de selecção: Aula teórica 10 Tema 10. Selecção Instruções de selecção: Selecção simples. Instrução if Selecção em alternativa. Instrução if Testes múltiplos Selecção múltipla. Instrução switch - case Objectivos da

Leia mais