Programação por Objectos. Java

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

Download "Programação por Objectos. Java"

Transcrição

1 Programação por Objectos Java Parte 11: Entradas / Saídas Java 1/72

2 Introdução É comum separar os dados que entram ou saem do ambiente para o programa em informação binária e informação textual. Informação binária: constituída por zeros e uns que codificam qualquer tipo de dados e que têm que ser intepretados pela aplicação. Informação textual: constituída por letras, dígitos, caracteres especiais que no Java corresponde ao tipo primitivochar (UTF-16). Java 2/72

3 Pacote java.io Todas as classes de manipulação de ficheiros estão contidas no pacotejava.io. Classes que acedem a ficheiros devem ter a directiva: import java.io.*; Java 3/72

4 Pacote java.io O pacote java.io é dividido em 5 partes: 1. Fluxo binário (byte stream): fluxo de entrada (input stream). fluxo de saída (output stream). 2. Fluxo de caracteres (character stream): leitores (readers). escritores (writers). 3. Fluxo de dados, que manipulam tipos primitivos de dados (int, ) e cadeias de caracteres (String). 4. Fluxo de objectos, que transcrevem objectos para Bytes e vice-versa. 5. ClasseFile, de manipulação dos atributos de ficheiros. Java 4/72

5 Fluxos pré-definidos No J2SE existe a classe estática final System, derivada de Object. A classesystem possui três atributos estáticos: InputStream in: fluxo de entrada do programa (normalmente teclado) PrintStream out: fluxo de saída do programa (normalmente monitor) PrintStream err: fluxo de envio das mensagens de erro (normalmente coincide com System.out) Java 5/72

6 Fluxos binários InputStream: classe abstracta que lê fluxos binários de informação. OutputStream: classe abstracta que escreve fluxos binários de informação. PrintStream: subclasse concreta de OutputStream que escreve fluxos não necessariamente binários de informação. Java 6/72

7 Classe InputStream (1) Alguns métodos da classeinputstream: void close() Encerra o fluxo binário de entrada e liberta todos os recursos associados. abstract int read() Lê o byte seguinte do fluxo binário de entrada. O byte lido é retornado como um int. Se nenhum byte é lido retorna -1. int read(byte[] b) Lê um determinado número de bytes do fluxo binário de entrada para o tampãob. O número de bytes lidos é retornado. int read(byte[] b, int off, int len) Lê no máximolen bytes do fluxo binário de entrada para o tampão b, colocando-os embapartir da posiçãooff. O número de bytes lidos é retornado. Java 7/72

8 Classe InputStream (2) long skip(long n) Salta n bytes do fluxo binário de entrada. Pode acontecer que se salte um número m<n de bytes, possivelmente m=0, por diversas razões, EOF antes dos n bytes é uma das razões. É retornado o número de bytes saltado. Se n é negativo, não foram saltados bytes. boolean marksupported() Verifica se o fluxo binário de entrada suporta marcas. void mark(int readlimit) Marca a posição actual no fluxo binário de entrada. O argumento readlimit é o número máximo de bytes que podem ser lidos antes da marca se tornar inválida. void reset() Regressa à marca mais recente. Java 8/72

9 Classe OutputStream Alguns métodos da classeoutputstream: close() Encerra o fluxo binário de saída e liberta todos os recursos associados. void flush() Força envio de informação contida num tampão para o destino. void write(byte[] b) Escreveb.length bytes da tabela de bytes b para o fluxo binário de saída. void write(byte[] b, int off, int len) Escrevelen bytes da tabela de bytes b, começando na posição off para o fluxo binário de saída. Java 9/72

10 Classe PrintStream Alguns métodos da classeprintstream: void print(boolean b) void print(char c) void print(char[] c) void print(double d) void print(float f) void print(int i) void print(long l) void print(object obj) void print(string s) Imprime o correspondente tipo. void println() Termina a linha corrente. Java 10/72

11 Fluxos binários para ficheiros File: subclasse concreta de Object que abstrai a representação de um ficheiro e caminho de directorias. FileDescriptor: subclasse final de Object que representa um ficheiro aberto. FileInputStream: subclasse concreta de InputStream que lê fluxos binários de informação de um ficheiro (File ou FileDescriptor). FileOutputStream: subclasse concreta de OutputStream que escreve fluxos binários de informação para um ficheiro (File ou FileDescriptor). Java 11/72

12 Class File Alguns construtores da classe File: File(String pathname) Cria um ficheiro com a pathname recebida. A pathname pode ser relativa ou absoluta. No caso de ser relativa, é resolvida tendo em consideração a directoria corrente do utilizador. Alguns métodos da classe File: boolean exists() Testa existência física do ficheiro. boolean canread() Testa privilégios de leitura do ficheiro. boolean canwrite() Testa privilégios de escrita do ficheiro. boolean delete() Apaga o ficheiro. long length() Retorna a dimensão do ficheiro. String getname() Retorna o nome do ficheiro. String getpath() Retorna o caminho do ficheiro. Java 12/72

13 Classe FileDescriptor Um objecto FileDescriptor representa um valor dependente do sistema operativo que descreve um ficheiro aberto. As aplicações não devem criar objectos do tipo FileDescriptor, estes devem antes ser obtidos apartir do método getfd dos FileInputStream e FileOutputStream. Java 13/72

14 Classe FileInputStream Construtores da classe FileInputStream: FileInputStream(File file) FileInputStream(FileDescriptor fdobj) FileInputStream(String name) Cria um FileInputStream a partir do ficheiro recebido. Para além dos métodos típicos de close, read, skip, etc, tem ainda o seguinte método: FileDescriptor getfd() Retorna o objecto FileDescriptor que representa o ficheiro, no sistema de ficheiros, que está a ser usado pelo FileInputStream. Java 14/72

15 Classe FileOutputStream Construtores da classe FileOutputStream: FileOutputStream(File file) FileOutputStream(File file, boolean append) FileOutputStream(FileDescriptor fdobj) FileOutputStream(String name) FileOutputStream(String name, boolean append) Cria um FileOutputStream a partir do ficheiro recebido. Os construtores que recebem um boolean append escrevem no fim do ficheiro se append for true e escrevem no início do ficheiro se append for false. Para além dos métodos típicos de close, write, etc, tem ainda o seguinte método: FileDescriptor getfd() Retorna o objecto FileDescriptor que representa o ficheiro, no sistema de ficheiros, que está a ser usado pelo FileOutputStream. Java 15/72

16 Exemplos de fluxos binários import java.io.*; //... int nbytes=0; FileInputStream f = new FileInputStream( teste ); while(f.read()!= -1) nbytes++; System.out.println( Número = + nbytes); f.close() //... import java.io.*; //... FileOutputStream f = new FileOutputStream( teste ); f.write(65); f.write(66); f.write(67); f.close() //... Java 16/72

17 Fluxos de caracteres Reader: a classe abstracta que lê fluxos de caracteres. Writer: a classe abstracta que escreve fluxos de caracteres. InputStreamReader: a subclasse concreta de Reader que lê fluxos binários de informação e que os descodifica em caracteres usando um determinado charset. OutputStreamWriter: a subclasse concreta de Writer que codifica caracteres em bytes, usando um determinado charset, e os escreve em fluxos binários de informação. Java 17/72

18 Charsets padrão Qualquer implementação da plataforma Java suporta os seguintes charsets: US-ASCII Seven-bit ASCII, a.k.a. ISO646-US, a.k.a. the Basic Latin block of the Unicode character set. ISO ISO Latin Alphabet No. 1, a.k.a. ISO-LATIN-1. UTF-8 Eight-bit UCS Transformation Format. UTF-16BE Sixteen-bit UCS Transformation Format, big-endian byte order. UTF-16LE Sixteen-bit UCS Transformation Format, little-endian byte order. UTF-16 Sixteen-bit UCS Transformation Format, byte order identified by an optional byte-order mark. Java 18/72

19 Classe InputStreamReader (1) Alguns construtores da classe InputStreamReader: InputStreamReader(InputStream in) Cria um InputStreamReader com um charset default da correspondente JVM (normalmente o charset do sistema operativo). InputStreamReader(InputStream in, String charsetname) Cria um InputStreamReader com o charset recebido como parâmetro. A classe InputStreamReader é um embrulho dum objecto InputStream. Java 19/72

20 Classe InputStreamReader (2) Alguns métodos da classe InputStreamReader: void close() Encerra o fluxo de entrada e liberta todos os recursos associados. String getencoding() Retorna o nome do charset usado pelo fluxo de entrada. int read() Lê um caracter do fluxo de entrada. O caracter lido é retornado como um int. Se nenhum caracter é lido retorna -1. int read(char[] cbuf, int off, int len) Lê no máximolen caracter do fluxo de entrada para o tampãocbuf, colocandoos emcbuf apartir da posiçãooff. O número de caracteres lidos é retornado. Se nenhum caracter é lido retorna -1. Java 20/72

21 Classe OutputStreamWriter (1) Alguns construtores da classe OutputStreamWriter: OutputStreamWriter(OutputStream in) Cria um OutputStreamWriter com um charsetdefault da correspondente JVM (normalmente o charset do sistema operativo) OutputStreamWriter(OutputStream in, String charsetname) Cria um OutputStreamWriter com o charset recebido como parâmetro. A classe OutputStreamWriter é um embrulho dum objecto OutputStream. Java 21/72

22 Classe OutputStreamWriter (2) Alguns métodos da classe OutputStreamWriter: void close() Encerra o fluxo de entrada e liberta todos os recursos associados. void flush() Força envio de informação contida num tampão para o destino. String getencoding() Retorna o nome do charset usado pelo fluxo de entrada. void write(char[] cbuf, int off, int len) Escrevelen caracteres da tabelacbuf, começando na posiçãooff para o fluxo de saída. void write(string str, int off, int len) Escrevelen caracteres dastring str, começando na posiçãooff para o fluxo de saída. Java 22/72

23 Fluxos de carateres para ficheiros FileReader: a subclasse concreta de InputStreamReader para ler ficheiros de caracteres. FileWriter: a subclasse concreta de OutputStreamWriter para escrever para ficheiros de caracteres. Java 23/72

24 Classe FileReader Construtores da classe FileReader: FileReader(File file) FileReader(FileDescriptor fdobj) FileReader(String name) Cria um FileReader a partir do ficheiro recebido. Java 24/72

25 Classe FileWriter Construtores da classe FileWriter: FileWriter(File file) FileWriter(File file, boolean append) FileWriter(FileDescriptor fdobj) FileWriter(String name) FileWriter(String name, boolean append) Cria um FileWriter a partir do ficheiro recebido. Os construtores que recebem um boolean append escrevem no fim do ficheiro se append for true e escrevem no início do ficheiro se append for false. Java 25/72

26 Exemplos de fluxos de caracteres (1) import java.io.*; //... int c, uns=0; FileReader f = new FileReader( teste ); while(c = f.read()!= -1) if ((char)c == 1 ) uns++; System.out.println( Ocorreram = + uns + uns! ); f.close() //... Java 26/72

27 Exemplos de fluxos de caracteres (2) class LeituraDeInteiro { public static void main(string[] args) throws IOException { int ch, value=0; Reader in = args.length==0? new InputStreamReader(System.in) : new FileReader(args[0]); for( ;(ch=in.read()!=-1; ) value=10*value+ch-(int)'0'; System.out.println("Inteiro lido = " + value); } } Java 27/72

28 Transferência por tampão (1) Tipicamente, os fluxos de entrada e saída transferem de imediato cada dado. Para tornar as operações de leitura/escrita mais eficientes, deve usar-se um tampão (buffer). Java 28/72

29 Transferência por tampão (2) <<abstract>> InputStream <<abstract>> OutputStream FilterInputStream FilterOutputStream DataInputStream BufferedInputStream Transferência por tampão DataOutputStream BufferedOutputStream PrintStream Transferência imediata Java 29/72

30 Transferência por tampão (3) FilterInputStream: a subclasse concreta de InputStream que embrulha outro fluxo de entrada que usa para transferência de dados. FilterOutputStream: a subclasse concreta de OutputStream que embrulha outro fluxo de saída que usa para transferência de dados. FilterReader: a subclasse abstracta de Reader que embrulha outro fluxo de entrada que usa para transferência de dados. FilterWriter: a subclasse abstracta de Writer que embrulha outro fluxo de saída que usa para transferência de dados. Java 30/72

31 Transferência por tampão (4) Tipicamente, subclasses de FilterInputStream, FilterOutputStream, FilterReader e FilterWriter, redefinem algum dos seus métodos e/ou adicionam membros com novas funcionalidades. Java 31/72

32 Transferência por tampão (5) public class ConversorParaMaiusculas extends FilterReader { public ConversorParaMaiusculas(Reader in) { super(in); } public in read() throws IOException { int c = super.read(); return (c==-1? c : Character.toUpperCase((char)c); } public int read(char[] buf, int offset, int count) throws IOException { int n = super.read(buf,offset,count); int ultimo = offset+n; for (int i=offset;i<ultimo;i++) buf[i] = Character.toUpperCase(buf[i]); return n; } } Java 32/72

33 Transferência por tampão (6) public static void main(string[] args) throws IOException { FileReader src = new FileReader(args[0]); FilterReader fr = new ConversorParaMaiusculas(src); int c; while ((c=f.read())!=-1) System.out.print((char)c); System.out.println(); } Java 33/72

34 Transferência por tampão (7) Fluxos com transferência por tampão: BufferedInputStream BufferedOutputStream BufferedReader BufferedWriter Java 34/72

35 Transferência por tampão (8) BufferedInputStream: a subclasse concreta de FilterInputStream com transferência por tampão e métodos mark e reset. BufferedOutputStream: a subclasse concreta de FilterOutputStream com transferência por tampão. BufferedReader: a subclasse concreta de Reader com transferência por tampão e métodos mark e reset. BufferedWriter: a subclasse concreta de Writer com transferência por tampão. Java 35/72

36 Transferência por tampão (9) Construtores da classe BufferedInputStream: BufferedInputStream(InputStream in) BufferedInputStream(InputStream in, int size) Cria um BufferedInputStream que embrulha o fluxo de entrada recebido. O size recebido no segundo construtor é relativo ao tamanho do tampão. Java 36/72

37 Transferência por tampão (10) Quando um read é inicialmente chamado num BufferedInputStream, este chama um read no correspondente fluxo de entrada, enchendo o tampão (se existirem dados suficientes). Novas chamadas a read retornam dados do tampão. Quando todo o tampão foi lido, é chamado de novo o read sobre o correspondente fluxo de entrada. Este processo continua até que o correspondente fluxo de entrada é completamente lido. File FileInputStream BufferedInputStream tampão Programa Java { } Java 37/72

38 Transferência por tampão (11) Construtores da classe BufferedOutputStream: BufferedOutputStream(OutputStream out) BufferedOutputStream(OutputStream out, int size) Cria um BufferedOutputStream que embrulha o fluxo de saída recebido. O size recebido no segundo construtor é relativo ao tamanho do tampão. Java 38/72

39 Transferência por tampão (12) De forma semelhante ao read: Só quando um write, chamado num BufferedOutputStream, enche o tampão, é que é chamado um write no correspondente fluxo de saída para esvaziar o tampão. Este tampão pode fazer com que vários pequenos pedidos de write num BufferedInputStream sejam transformados apenas num write no correspondente fluxo de saída. Java 39/72

40 Transferência por tampão (13) A escrita é feita via tabelas de bytes: void write(byte[] b,int off,int len) void write(byte b) Antes de fechar um ficheiro de escrita com tampão, é necessário chamar o método flush, para todos os bytes armazenados serem enviados para o meio: void flush() O fecho de ficheiros é executado na chamada do método definido na classe FilterOutputStream: void close() Java 40/72

41 Transferência por tampão (14) Construtores da classe BufferedReader: BufferedReader(Reader in) BufferedInputStream(Reader in, int size) Cria um BufferedReader que embrulha o fluxo de entrada recebido. O size recebido no segundo construtor é relativo ao tamanho do tampão. Construtores da classe BufferedWriter: BufferedWriter(Writer out) BufferedWriter(Writer out, int size) Cria um BufferedWriter que embrulha o fluxo de saída recebido. O size recebido no segundo construtor é relativo ao tamanho do tampão. Java 41/72

42 Transferência por tampão (15) Alguns métodos da classe BufferedWriter: void newline() Escreve um separador de linha. Depende do sistema (não necessariamente o \n ). Java 42/72

43 Exemplos de criação de fluxos com transferência por tampão new BufferedInputStream(new FileInputStream( foo.in )); new BufferedReader(new FileReader( foo.in )); new BufferedOutputStream(new FileOutputStream( foo.out )); new BufferedWriter(new FileWriter( foo.out )); Java 43/72

44 Fluxos de dados (1) DataInput: interface que define métodos de leitura para os tipos primivitos e cadeias de caracteres. DataOutput: interface que define métodos de escrita para os tipos primitivos e cadeias de caracteres. DataInputStream: implementação da interface DataInput. DataOutputStream: implementação da interface DataOutput. RandomAccessFile: classe concreta que implementa as interfaces DataInput e DataOutput para acesso aleatório a um ficheiro. Java 44/72

45 Fluxos de dados (2) Métodos de leitura/escrita: Tipo boolean char byte short int long float double String Escrita void writeboolean(boolean) void writechar(char) void writebyte(byte) void writeshort(short) void writeint(int) void writelong(long) void writefloat(float) void writedouble(double) void writeutf(string) Leitura boolean readboolean() char readchar() byte readbyte() short readshort() int readint() long readlong() float readfloat() double readdouble() String readutf() Java 45/72

46 Fluxos de dados (3) Os ficheiros binários: São fluxos de bytes. Têm de ser abertos explicitamente pelo programador antes de serem acedidos. Abertura de ficheiros: Erro na abertura gera excepção FileNotFoundException. DataOutputStream idout = new DataOutputStream(new FileOutputStream( foo.out )); DataInputStream idin = new DataInputStream(new FileInputStream( foo.in )); Java 46/72

47 Exemplos de fluxos de dados (1) import java.io.*; public class Teste { public static void main(string[] args){ DataOutputStream idout; try { idout = new DataOutputStream( new FileOutputStream(args[0])); for(int k=0;k<10;k++) idout.writeutf("linha " + k + "\n"); idout.close(); } catch(ioexception e) { System.out.println(e.getMessage()); } } } Java 47/72

48 Exemplos de fluxos de dados (2) import java.io.*; public class Teste { public static void main(string[] args){ DataOutputStream idout; try { idout = new DataOutputStream( new BufferedOutputStream( new FileOutputStream(args[0]))); for(char c='a';c<='z';c++) { idout.write((byte)c); idout.write((byte)'\n'); } idout.flush(); idout.close(); } catch(ioexception e) { System.out.println(e.getMessage()); } } } Java 48/72

49 Exemplos de fluxos de dados (3) BufferedReader stdin = new BufferedReader( new InputStreamReader(System.in)); try { String input = stdin.readline(); System.out.println("Linha comando: " + input); } catch(ioexception e) { System.err.println( Erro na leitura do comando ); } Java 49/72

50 Acesso sequencial e aleatório Existem duas formas padrão de acesso a um dado ficheiro, acesso sequencial e aleatório. Acesso sequencial limitado por uma ordem sequencial de acesso informação seguinte sempre colocada à frente da informação anterior. Acesso aleatório permite avançar e recuar de forma arbitrária. Java 50/72

51 Classe RandomAccessFile (1) O acesso aletaório a ficheiros é implementado pela classe RandomAccessFile, classe concreta que deriva de Object e que implementa as interfaces DataInput e DataOutput. Construtores da classerandonaccessfile: RandomAccessFile(File file, String mode) RandomAccessFile(String name, String mode) Cria um ficheiro para ler/escrever com acesso aleatório de/para o ficheiro recebido. O modo representa o modo de acesso do ficheiro aberto, podendo ser: r (apenas leitura) ou rw (leitura e escrita), entre outros. Java 51/72

52 Classe RandomAccessFile (2) Alguns métodos de leitura: int read() int read(byte[]) int read(byte[], int offset, int length) boolean readboolean() byte readbyte() char readchar() double readdouble() float readfloat() int readint() long readlong() short readshort() String readutf() Java 52/72

53 Classe RandomAccessFile (3) Alguns métodos de escrita: void write(byte[]) void write(byte[], int offset, int length) void writeboolean(boolean b) void writebyte(int v) void writebytes(string s) void writechar(int v) void writechars(string s) void writedouble(double v) void writefloat(float v) void writeint(int v) void writelong(long v) void writeshort(int v) void writeutf(string str) Java 53/72

54 Classe RandomAccessFile (4) Alguns métodos de posicionamento: void seek(long pos) Posiciona-se no local indicado pelo parâmetro (se valor for superior ao tamanho no ficheiro, posiciona-se no fim). long length() Retorna comprimento do ficheiro. long setlength(long newlength) Altera comprimento do ficheiro. int skipbytes(int n) Salta por cima de um número de bytes do ficheiro de entrada (valor efectivo indicado pelo retorno). Java 54/72

55 Classe RandomAccessFile (5) File dados = new File(.., info ); RandomAcessFile f = new RandomAcessFile(dados, rw ); for(int i=65;i<91;i++) f.write(i) // escreve o alfabeto byte[] ler = new byte[10]; f.seek(4); // salta para o quinto byte f.read(ler,0,5); // lê as próximas 5 posições for(int=0;i<5;i++) System.out.println((char)ler[i] + : ); f.seek(3); // salta para o quarto byte System.out.println((char)f.read()); No terminal é imprimido E:F:G:H:I:D Java 55/72

56 InputStream Hierarchy <<abstract>> InputStream ObjectInputStream FilterInputStream FileInputStream DataInputStream BufferedInputStream Java 56/72

57 Reader Hierarchy Java 57/72

58 RandomAcessFile Hierarchy Java 58/72

59 Fluxos de objectos ObjectInputStream: a subclasse concreta de InputStream para leitura de objectos serializados. ObjectOutputStream: a subclasse concreta de OutputStream para serialização de objectos. Serializable: a interface que tem de ser implementada pelas classes que pretendem oferecer serialização. As classes ObjectInputStream e ObjectOutputStream, quando usados conjuntamente com as classes FileInputStream e FileOutputStream, respectivamente, permitem guardar de forma persistente os objectos duma aplicação. Java 59/72

60 Classe ObjectInputStream (1) Alguns construtores da classe ObjectInputStream: ObjectInputStream(InputStream in) Cria um ObjectInputStream que embrulha o fluxo de entrada recebido. Alguns métodos da classe ObjectInputStream: boolean defaultreadobject() Lê do fluxo de entrada os valores dos atributos não estáticos e não transientes do objecto (atributos da classe e todas as superclasses). Object readobject() Lê do fluxo de entrada o objecto. Classes que pretendam serialização atípica devem implementar o método: private void readobject(objectinputstream stream) throws IOException, ClassNotFoundException; Java 60/72

61 Classe ObjectInputStream (2) Outros métodos de leitura: int read() int read(byte[], int offset, int length) boolean readboolean() byte readbyte() char readchar() double readdouble() float readfloat() int readint() long readlong() short readshort() String readutf() Java 61/72

62 Classe ObjectOutputStream (1) Alguns construtores da classe ObjectOutputStream: ObjectOutputStream(OutputStream out) Cria um ObjectOutputStream que embrulha o fluxo de saída recebido. Alguns métodos da classe ObjectInputStream: protected boolean defaultwriteobject() Escreve no fluxo de saída os atributos não estáticos e não transientes do objecto (atributos da classe e todas as superclasses). void writeobject(object obj) Escreve no fluxo de saída o objecto obj. Classes que pretendam serialização atípica devem implementar o método: private void writeobject(objectoutputstream stream) throws IOException, ClassNotFoundException; Java 62/72

63 Classe ObjectInputStream (2) Outros métodos de escrita: void write(byte[]) void write(byte[], int offset, int length) void writeboolean(boolean b) void writebyte(int v) void writebytes(string s) void writechar(int v) void writechars(string s) void writedouble(double v) void writefloat(float v) void writeint(int v) void writelong(long v) void writeshort(int v) void writeutf(string str) Java 63/72

64 Exemplos de fluxos de objectos (1) FileOutputStream fos = new FileOutputStream( foo.out ); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeint(12345); oos.writeobject( Hoje ); oos.writeobject(new Date()); oos.close(); fos.close(); FileInputStream fis = new FileInputStream( foo.out ); ObjectInputStream ois = new ObjectInputStream(fis); int i = ois.readint(); String hoje = (String) ois.readobject(); Date data = (Data) ois.readobject(); ois.close(); fis.close(); Java 64/72

65 Exemplos de fluxos de objectos (2) Serialização de um objecto HashMap num ficheiro para uso futuro: FileOutputStream fos = new FileOutputStream( hm.out ); ObjectOutputStream oos = new ObjectOutputStream(fos); HashMap<?,?> hm = gethashmap(); oos.writeobject(hm); Uma nova cópia do objecto pode ser reconstruída a partir da serialização anterior: FileInputStream fis = new FileInputStream( hm.out ); ObjectInputStream ois = new ObjectInputStream(fis); HashMap<?,?> hm = (HashMap<?,?>) ois.readobject(); Java 65/72

66 Partilha de referências na serialização de objectos (1) A serialização preserva a integridade do grafo dos objectos em memória: chave: rosa entrada: hm chave: rose entrada: rose.jpg Quando o HashMap é reconstruído a partir da serialização, existirão apenas referências para um objecto rose.jpp, e não referências para duas cópias separadas de rose.jpg. Java 66/72

67 Partilha de referências na serialização de objectos (2) Quando tal não é pretendido podem usar-se os seguintes métodos: void writeunshared(object obj) Escreve o objecto obj para o fluxo de saída, sem partilha de referências. Isto é, escreve o objecto como um objecto distinto, em vez de usar uma referência para a correspondente serialização desse objecto. Qualquer objecto serializado com este método terá uma única referência para ele quando for reconstruído em memória. Object readunshared() Lê um objecto sem partilha de referência do fluxo de entrada. O objecto é suposto ser único, se o objecto é uma referência para um objecto já reconstruído uma excepção ObjectStreamException é lançada. Da mesma forma, se mais tarde se tentar reconstruir um objecto para a mesma referência uma excepção ObjectStreamException é lançada. Java 67/72

68 Interface Serializable (1) Os objectos de uma aplicação podem ser escritos num fluxo apenas se a sua classe concretizar a interface Serializable. Todos os atributos de um objecto que se pretendem serializar devem ser instância de uma classe que concretiza Serializable. Se se pretender que o valor de um atributo não seja serializado, usar na sua definição o qualificador transient (na realidade, é enviado o literal null). A interface Serializable não tem atributos nem métodos. Java 68/72

69 Interface Serializable (2) public class Nome implements java.io.serializable { private String nome; private long id; private transient boolean hashset = false; private transient int hash; private static long proxid = 0; public Nome(String nome) { this.nome = nome; id = proxid++; } public int hashcode() { if (!hashset) { hash = nome.hashcode(); hashset = true; } return hash; } //redefinição de equals e outros métodos } Java 69/72

70 Interface Serializable (3) public class Nome implements java.io.serializable { private String nome; private long id; private transient int hash; private static long proxid = 0; public Nome(String nome) { this.nome = nome; id = nextid++; hash = nome.hashcode(); } private void writeobject(objectoutputstream out) throws IOException { out.writeutf(nome); out.writelong(id); } //... continua no próximo slide Java 70/72

71 Interface Serializable (4) } private void readobject(objectinputstream in) throws IOException, ClassNotFoubdException { nome = in.readutf(); id = in.readlong(); hash = name.hashcode(); } public int hashcode() { return hash; } //redefinição de equals e outros métodos Java 71/72

72 Interface Serializable (5) private void writeobject(objectoutputstream out) throws IOException { out.defaultwriteobject(); } private void readobject(objectinputstream in) throws IOException, ClassNotFoubdException { in.defaultreadobject(); hash = nome.hashcode(); } Java 72/72

Arquivos. Profa. Thienne Johnson EACH/USP

Arquivos. Profa. Thienne Johnson EACH/USP Arquivos Profa. Thienne Johnson EACH/USP Java, como programar, 6ª edição Deitel & Deitel Capítulo 14 Programadores utilizam arquivos para armazenar dados a longo prazo Dados armazenados em arquivos são

Leia mais

Programação II Java Streams. Christopher Burrows

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

Leia mais

Capítulo 6. Java IO - Ficheiros

Capítulo 6. Java IO - Ficheiros Capítulo 6. Java IO - Ficheiros 1/26 Índice Indice 6.1 - Entrada e saída de dados 6.2 - Ficheiros de texto 6.3 - Ficheiros com formato proprietário 6.4 - A classe File 2/26 Índice 6.1 Entrada e saída de

Leia mais

PROGRAMAÇÃO COM OBJECTOS

PROGRAMAÇÃO COM OBJECTOS PROGRAMAÇÃO COM OBJECTOS Nuno Mamede Departamento de Engenharia Informática Instituto Superior Técnico Programação com Objectos de caracteres - 4 - STREAMS! Stream: " Uma abstracção " Representa uma fonte

Leia mais

Desenvolvimento Orientado a Objetos com Java

Desenvolvimento Orientado a Objetos com Java Java and all Java-based marks are trademarks or registered trademarks of Sun Microsystems, Inc. in the U.S. and other countries. Desenvolvimento Orientado a Objetos com Java Capítulo 10 Arquivos e Streams

Leia mais

Objetivos do Capítulo

Objetivos do Capítulo Capítulo 33 Arquivos e Fluxos de Dados Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Objetivos do Capítulo Analisar os conceitos de fluxo de entrada e de fluxo de saída de

Leia mais

Ficheiros. Ficheiros - Motivação. Streams. Entrada Binária. Não. Ficheiro

Ficheiros. Ficheiros - Motivação. Streams. Entrada Binária. Não. Ficheiro Ficheiros - Motivação Ficheiros Exemplo Suponha que desenvolve um programa para a calcular a média aritmética da primeira prova de frequência de uma turma e passado algum tempo realiza uma segunda prova

Leia mais

Modulo II Tópicos em Java - IO

Modulo II Tópicos em Java - IO Modulo II Tópicos em Java - IO Prof. Ismael H F Santos April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 1 Ementa Modulo II - Tópicos em JAVA - IO Entrada e Saída - Streams Filtros de Streams

Leia mais

STREAMS (FLUXOS) EM JAVA uma Introdução

STREAMS (FLUXOS) EM JAVA uma Introdução STREAMS (FLUXOS) EM JAVA uma Introdução Miguel Jonathan DCC-IM/UFRJ (rev. maio 2010) A palavra stream em inglês significa um "fluxo de água", como um riacho. A idéia que transmite é de algo fluindo continuamente,

Leia mais

Java 2 Standard Edition. Entrada. Helder da Rocha www.argonavis.com.br

Java 2 Standard Edition. Entrada. Helder da Rocha www.argonavis.com.br Java 2 Standard Edition Entrada e Saída Helder da Rocha www.argonavis.com.br 1 Assuntos abordados Este módulo explora os componentes mais importantes do pacote java.io e outros recursos da linguagem relacionados

Leia mais

Programação Orientada a Objetos com Java. Prof. Júlio Machado julio.machado@pucrs.br

Programação Orientada a Objetos com Java. Prof. Júlio Machado julio.machado@pucrs.br Programação Orientada a Objetos com Java Prof. Júlio Machado julio.machado@pucrs.br TRATAMENTO DE EXCEÇÕES Tratamento de Exceções O tratamento de exceções de Java envolve vários conceitos importantes:

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

Módulo VIII Linguagem Java Entrada e Saída de Dados Arquivos

Módulo VIII Linguagem Java Entrada e Saída de Dados Arquivos Especialização Avançada em Sistemas Distribuídos - EASD Módulo VIII Linguagem Java Entrada e Saída de Dados Arquivos Marcela Santana e Sérgio Gorender Universidade Federal da Bahia Arquivos Outro dispositivo

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

Roteiro. Introdução a Arquivos. Streams Serialização Arquivos de Acesso Randômico Exercícios. Armazenamento. Dados em vetores, listas e variáveis

Roteiro. Introdução a Arquivos. Streams Serialização Arquivos de Acesso Randômico Exercícios. Armazenamento. Dados em vetores, listas e variáveis Arquivos e Porto Alegre, novembro de 2006 Adaptado das aulas dos Profs: Isabel Manssour, Luciana Nedel, Bernardo Copstein e Júlio Machado Roteiro Serialização Arquivos de Acesso Randômico Exercícios Armazenamento

Leia mais

Bruce Eckel, Thinking in Java, 4th edition, PrenticeHall, New Jersey, cf. http://mindview.net/books/tij4. jvo@ualg.pt José Valente de Oliveira 16-1

Bruce Eckel, Thinking in Java, 4th edition, PrenticeHall, New Jersey, cf. http://mindview.net/books/tij4. jvo@ualg.pt José Valente de Oliveira 16-1 Streams III Bruce Eckel, Thinking in Java, 4th edition, PrenticeHall, New Jersey, cf. http://mindview.net/books/tij4 jvo@ualg.pt José Valente de Oliveira 16-1 Previously: Serializing a collection public

Leia mais

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

Leia mais

Em JAVA, todas as considerações (ou quase todas) que se relacionam com as mais

Em JAVA, todas as considerações (ou quase todas) que se relacionam com as mais STREAMS DE JAVA Em JAVA, todas as considerações (ou quase todas) que se relacionam com as mais diferentes formas de se realizar a leitura e a escrita de dados a partir das mais diversas fontes e para os

Leia mais

Entrada/saída e rede

Entrada/saída e rede JAVA 6 Entrada/saída e rede ESTE MÓDULO MOSTRA AS APIS JAVA PARA ACESSO A DISCO E À REDE. Uma visão geral do modelo de multithreading da linguagem também é oferecida. Tópicos abordados neste módulo Threads

Leia mais

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 2: Classes e objectos LEEC@IST Java 1/24 Classes (1) Sintaxe Qualif* class Ident [ extends IdentC] [ implements IdentI [,IdentI]* ] { [ Atributos Métodos ]* Qualif:

Leia mais

Descrição. Implementação. Departamento de Informática e Estatística Universidade Federal de Santa Catarina LAB 4 Transferência de Arquivos

Descrição. Implementação. Departamento de Informática e Estatística Universidade Federal de Santa Catarina LAB 4 Transferência de Arquivos Departamento de Informática e Estatística Universidade Federal de Santa Catarina LAB 4 Transferência de Arquivos Descrição Implemente nesta atividade de laboratório um programa em Java utilizando threads

Leia mais

Manual do Desenvolvedor Criptografia de Arquivos do WebTA

Manual do Desenvolvedor Criptografia de Arquivos do WebTA Manual do Desenvolvedor Criptografia de Arquivos do WebTA Versão 1.4 Índice 1. Objetivo..3 2. Processo..3 3. API de Criptografia - Biblioteca Java..4 3.1 WEBTACryptoUtil..4 3.1.1 decodekeyfile..4 3.1.2

Leia mais

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 Pontifícia Universidade Católica de São Paulo Departamento de Ciência da Computação LP: Laboratório de Programação Apontamento 12 Prof. ISVega Abril de 2004 Interação com o Usuário CONTEÚDO 12.1Módulo

Leia mais

insfcanceof new public switch transient while byte continue extends for int null

insfcanceof new public switch transient while byte continue extends for int null Palavras -chave de JAV A abstract catch do final implements long private static throw void boolean char double finally import native protected super throws volatile break class float insfcanceof new public

Leia mais

Bacharelado em Ciência e Tecnologia BC-0505 - Processamento da Informação Teoria Arquivos Prof. Edson Pinheiro Pimentel edson.pimentel@ufabc.edu.

Bacharelado em Ciência e Tecnologia BC-0505 - Processamento da Informação Teoria Arquivos Prof. Edson Pinheiro Pimentel edson.pimentel@ufabc.edu. Bacharelado em Ciência e Tecnologia BC-0505 - Processamento da Informação Teoria Arquivos Prof. Edson Pinheiro Pimentel edson.pimentel@ufabc.edu.br Conceitos Arquivos permitem armazenar dados de maneira

Leia mais

Programação de Computadores - I. Profª Beatriz Profº Israel

Programação de Computadores - I. Profª Beatriz Profº Israel Programação de Computadores - I Profª Beatriz Profº Israel As 52 Palavras Reservadas O que são palavras reservadas São palavras que já existem na linguagem Java, e tem sua função já definida. NÃO podem

Leia mais

Programação Na Web. Linguagem Java Parte II. break com o nome do bloco. Sintaxe. Nome do bloco. Termina o bloco. António Gonçalves ...

Programação Na Web. Linguagem Java Parte II. break com o nome do bloco. Sintaxe. Nome do bloco. Termina o bloco. António Gonçalves ... Programação Na Web Linguagem Java Parte II Sintaxe António Gonçalves break com o nome do bloco Nome do bloco Termina o bloco class class Matrix Matrix { private private int[][] int[][] mat; mat; public

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

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática Folha 1-1 Introdução à Linguagem de Programação JAVA 1 Usando o editor do ambiente de desenvolvimento JBUILDER pretende-se construir e executar o programa abaixo. class Primeiro { public static void main(string[]

Leia mais

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 3: Métodos LEEC@IST Java 1/45 Métodos (1) Sintaxe Qualif Tipo Ident ( [ TipoP IdentP [, TipoP IdentP]* ] ) { [ Variável_local Instrução ]* Qualif: qualificador (visibilidade,

Leia mais

LP2 Laboratório de Programação 2 Ciência da Computação. Arquivos

LP2 Laboratório de Programação 2 Ciência da Computação. Arquivos Arquivos Um arquivo é uma abstração utilizada para uniformizar a interação entre o ambiente de execução e os dispositivos externos. A interação de um programa com um dispositivo através de arquivos passa

Leia mais

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 Pontifícia Universidade Católica de São Paulo Departamento de Ciência da Computação LP: Laboratório de Programação Apontamento 15 Prof. ISVega Maio de 2004 Arquivos de Texto CONTEÚDO 15.1Processamento

Leia mais

Exercícios de Revisão Java Básico

Exercícios de Revisão Java Básico Exercícios de Revisão Java Básico (i) Programação básica (estruturada) 1) Faça um programa para calcular o valor das seguintes expressões: S 1 = 1 1 3 2 5 3 7 99... 4 50 S 2 = 21 50 22 49 23 48...250 1

Leia mais

Comandos de repetição For (inicialização; condição de execução; incremento/decremento) { //Código }

Comandos de repetição For (inicialização; condição de execução; incremento/decremento) { //Código } Este documento tem o objetivo de demonstrar os comandos e sintaxes básicas da linguagem Java. 1. Alguns passos para criar programas em Java As primeiras coisas que devem ser abordadas para começar a desenvolver

Leia mais

Módulo 06 Desenho de Classes

Módulo 06 Desenho de Classes Módulo 06 Desenho de Classes Última Atualização: 13/06/2010 1 Objetivos Definir os conceitos de herança, polimorfismo, sobrecarga (overloading), sobreescrita(overriding) e invocação virtual de métodos.

Leia mais

Threads e Sockets em Java. Threads em Java. Programas e Processos

Threads e Sockets em Java. Threads em Java. Programas e Processos Threads em Java Programas e Processos Um programa é um conceito estático, isto é, um programa é um arquivo em disco que contém um código executável por uma CPU. Quando este programa é executado dizemos

Leia mais

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

Curso Adonai QUESTÕES Disciplina Linguagem JAVA 1) Qual será o valor da string c, caso o programa rode com a seguinte linha de comando? > java Teste um dois tres public class Teste { public static void main(string[] args) { String a = args[0]; String

Leia mais

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 6: Herança e Polimorfismo LEEC@IST Java 1/52 Herança revisão A herança é um mecanismo em que a subclasse constitui uma especialização da superclasse. A superclasse pode

Leia mais

A ) O cliente terá que implementar uma interface remota. . Definir a interface remota com os métodos que poderão ser acedidos remotamente

A ) O cliente terá que implementar uma interface remota. . Definir a interface remota com os métodos que poderão ser acedidos remotamente Java RMI - Remote Method Invocation Callbacks Folha 9-1 Vimos, na folha prática anterior, um exemplo muito simples de uma aplicação cliente/ servidor em que o cliente acede à referência remota de um objecto

Leia mais

Programa de Computador que funciona em Rede

Programa de Computador que funciona em Rede Programa de Computador que funciona em Rede professor Robinson Vida Noronha 1 Paradigma Um programa rodando em rede é como uma loja. 2 Uma loja é composta por Vendedores Vendedores 3 Um loja deve servir

Leia mais

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery Linguagem de Programação JAVA Técnico em Informática Professora Michelle Nery Agenda Regras paravariáveis Identificadores Válidos Convenção de Nomenclatura Palavras-chaves em Java Tipos de Variáveis em

Leia mais

BSI UFRPE Prof. Gustavo Callou gcallou@gmail.com

BSI UFRPE Prof. Gustavo Callou gcallou@gmail.com BSI UFRPE Prof. Gustavo Callou gcallou@gmail.com HelloWorld.java: public class HelloWorld { public static void main (String[] args) { System.out.println( Hello, World ); } } Identificadores são usados

Leia mais

Prova de Java. 1) Copie o programa abaixo no eclipse e complete-o, utilizando os conceitos aprendidos durante o curso. (4 pontos)

Prova de Java. 1) Copie o programa abaixo no eclipse e complete-o, utilizando os conceitos aprendidos durante o curso. (4 pontos) Prova de Java 1) Copie o programa abaixo no eclipse e complete-o, utilizando os conceitos aprendidos durante o curso. (4 pontos) O programa consiste em uma aplicação que simula o comportamento de dois

Leia mais

Tabelas (arrays) (vetores, matrizes, etc) Algoritmos de pesquisa Algoritmos de ordenação

Tabelas (arrays) (vetores, matrizes, etc) Algoritmos de pesquisa Algoritmos de ordenação Java Tabelas (arrays) (vetores, matrizes, etc) Algoritmos de pesquisa Algoritmos de ordenação 1 Tabelas para quê? As tabelas são utilizadas quando se pretende armazenar e manipular um grande número de

Leia mais

Redes de Computadores - 2010/1

Redes de Computadores - 2010/1 Redes de Computadores - 2010/1 Miniprojeto Universidade Federal do Espírito Santo - UFES Professor: Magnos Martinello 20 de maio de 2010 1 1 Proposta A proposta do trabalho é reforçar o compreendimento

Leia mais

Aula 30 - Sockets em Java

Aula 30 - Sockets em Java Aula 30 - Sockets em Java Sockets Sockets são estruturas que permitem que funções de software se interconectem. O conceito é o mesmo de um soquete (elétrico, telefônico, etc...), que serve para interconectar

Leia mais

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this.

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this. Aula 2 Objetivos Encapsulamento na linguagem Java; Utilizando a referência this. Encapsulamento, data hiding é um conceito bastante importante em orientação a objetos. É utilizado para restringir o acesso

Leia mais

A Linguagem Java. Alberto Costa Neto DComp - UFS

A Linguagem Java. Alberto Costa Neto DComp - UFS A Linguagem Java Alberto Costa Neto DComp - UFS 1 Roteiro Comentários Variáveis Tipos Primitivos de Dados Casting Comandos de Entrada e Saída Operadores Constantes 2 Comentários /** Classe para impressão

Leia mais

Licenciatura em Engenharia Informática PROVA DE TESTE PRÁTICO Sistemas Distribuídos I 2º Semestre, 2005/2006

Licenciatura em Engenharia Informática PROVA DE TESTE PRÁTICO Sistemas Distribuídos I 2º Semestre, 2005/2006 Departamento de Informática Faculdade de Ciências e Tecnologia UNIVERSIDADE NOVA DE LISBOA Licenciatura em Engenharia Informática PROVA DE TESTE PRÁTICO Sistemas Distribuídos I 2º Semestre, 2005/2006 NOTAS:

Leia mais

ÇÃO COM OBJECTOS PROGRAMAÇÃ. Programação com Objectos. Programação com Objectos TUDO É UM OBJECTO TUDO É UM OBJECTO ÍNDICE.

ÇÃO COM OBJECTOS PROGRAMAÇÃ. Programação com Objectos. Programação com Objectos TUDO É UM OBJECTO TUDO É UM OBJECTO ÍNDICE. PROGRAMAÇÃ ÇÃO COM OBJECTOS TUDO É UM OBJECTO Programação com Objectos ÍNDICE Introdução aos objectos Polimorfismo TUDO É UM OBJECTO Interface e classes internas Instruções de controlo Guardar os objectos

Leia mais

Trabalho Prático Nº1 Introdução ao C#.NET

Trabalho Prático Nº1 Introdução ao C#.NET Trabalho Prático Nº1 Introdução ao C#.NET 1. OBJECTIVOS - Entender o contexto da plataforma.net - Desenvolver programas simples em C#.NET - Saber efectuar entradas de dados em modo Consola e Windows Forms

Leia mais

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 1: Introdução MEEC@IST Java 1/27 História versões (1) [1995] Versão 1.0, denominada Java Development Kit (JDK) 212 classes em 8 pacotes Lento, muitos bugs, mas com Applets

Leia mais

Programação de Redes de Computadores em Java

Programação de Redes de Computadores em Java Programação de Redes de Computadores em Java Material reescrito para os alunos da disciplina CAP312 Programação de Redes de Computadores do programa de pós-graduação em Computação Aplicada do Instituto

Leia mais

Capítulo II Modelos de Programação Distribuída

Capítulo II Modelos de Programação Distribuída Capítulo II Modelos de Programação Distribuída From: Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 4, Addison-Wesley 2005 From: M. Ben-Ari Principles of Concurrent

Leia mais

Especialização em desenvolvimento para web com interfaces ricas. Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares

Especialização em desenvolvimento para web com interfaces ricas. Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares Especialização em desenvolvimento para web com interfaces ricas Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares Objetivos Conceito de exceções Tratar exceções pelo uso de try, catch e

Leia mais

Capítulo 3. Programação por objectos em Java

Capítulo 3. Programação por objectos em Java Capítulo 3. Programação por objectos em Java 1/46 Índice Indice 3.1 - Qualificadores de visualização 3.2 - Classe 3.3 - Objecto 3.4 - Métodos 3.5 - Herança 3.6 - Reescrita de métodos 3.7 - Classes abstractas

Leia mais

3 Classes e instanciação de objectos (em Java)

3 Classes e instanciação de objectos (em Java) 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

Introdução. Manipulação de arquivos em C. Estrutura de Dados II Prof Jairo Francisco de Souza

Introdução. Manipulação de arquivos em C. Estrutura de Dados II Prof Jairo Francisco de Souza Introdução Manipulação de arquivos em C Estrutura de Dados II Prof Jairo Francisco de Souza Manipulação de Arquivo em C Existem dois tipos possíveis de acesso a arquivos na linguagem C : sequencial (lendo

Leia mais

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento Eclipse Introdução à Linguagem de Programação JAVA

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento Eclipse Introdução à Linguagem de Programação JAVA P. Fazendeiro & P. Prata POO FP1/1 ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento Eclipse Introdução à Linguagem de Programação JAVA 0 Inicie o ambiente de desenvolvimento integrado

Leia mais

UNIVERSIDADE FEDERAL DO PARANÁ

UNIVERSIDADE FEDERAL DO PARANÁ CURSO: Ciência da Computação DATA: / / 2013 PERÍODO: 4 o. PROFESSOR: Andrey DISCIPLINA: Técnicas Alternativas de Programação AULA: 03 APRESENTAÇÃO: Hoje vamos conhecer o comando switch, o bloco try catch;

Leia mais

Cliente-servidor com Sockets TCP

Cliente-servidor com Sockets TCP Cliente-servidor com Sockets TCP Paulo Sérgio Almeida Grupo de Sistemas Distribuídos Departamento de Informática Universidade do Minho 2007/2008 c 2000 2007 Paulo Sérgio Almeida Cliente-servidor com Sockets

Leia mais

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento NetBeans Introdução à Linguagem de Programação JAVA

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento NetBeans Introdução à Linguagem de Programação JAVA P. Fazendeiro & P. Prata POO FP1/1 ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento NetBeans Introdução à Linguagem de Programação JAVA 0 Iniciar o ambiente de desenvolvimento integrado

Leia mais

JavaScript 2.0X 1.0 3.0X 1.1 4.0 4.05 1.2 4.06 4.61 1.3 5.0 1.4 6.0 1.5

JavaScript 2.0X 1.0 3.0X 1.1 4.0 4.05 1.2 4.06 4.61 1.3 5.0 1.4 6.0 1.5 JavaScript Diego R. Frank, Leonardo Seibt FIT Faculdades de Informática de Taquara Fundação Educacional Encosta Inferior do Nordeste Av. Oscar Martins Rangel, 4500 Taquara RS Brasil difrank@terra.com.br,

Leia mais

Construção de novas Classes em Java. Classes Atributos Métodos Herança...

Construção de novas Classes em Java. Classes Atributos Métodos Herança... Construção de novas Classes em Java Classes Atributos Métodos Herança... 1 Exemplo Representação em UML Java (Unified Modeling Language) Stack items : Vector Stack( ) push( ) pop( ) isempty( ) finalize(

Leia mais

UNIVERSIDADE ESTADUAL DO OESTE DO PARANÁ CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS COLEGIADO DE INFORMÁTICA

UNIVERSIDADE ESTADUAL DO OESTE DO PARANÁ CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS COLEGIADO DE INFORMÁTICA UNIVERSIDADE ESTADUAL DO OESTE DO PARANÁ CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS COLEGIADO DE INFORMÁTICA Disciplina: Redes de Computadores Ano: 2007 Professor: Luiz Antonio Trabalho 1º Bimestre Cliente/Servidor

Leia mais

Algoritmia e Programação APROG. Linguagem JAVA. Básico. Nelson Freire (ISEP DEI-APROG 2012/13) 1/31

Algoritmia e Programação APROG. Linguagem JAVA. Básico. Nelson Freire (ISEP DEI-APROG 2012/13) 1/31 APROG Algoritmia e Programação Linguagem JAVA Básico Nelson Freire (ISEP DEI-APROG 2012/13) 1/31 Linguagem Java Estrutura de um Programa Geral Básica Estruturas de Dados Variáveis Constantes Tipos de Dados

Leia mais

Multithreading. Programação Orientada por Objectos com Java. Ademar Aguiar. MRSC - Programação em Comunicações

Multithreading. Programação Orientada por Objectos com Java. Ademar Aguiar. MRSC - Programação em Comunicações Programação Orientada por Objectos com Java www.fe.up.pt/~aaguiar ademar.aguiar@fe.up.pt 1 Multithreading 154 Objectivos Ser capaz de: Explicar os conceitos básicos de multithreading Criar threads múltiplos

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

NOTAS INTRODUTÓRIAS SOBRE PROGRAMAÇÃO EM JAVA (PARTE I)

NOTAS INTRODUTÓRIAS SOBRE PROGRAMAÇÃO EM JAVA (PARTE I) NOTAS INTRODUTÓRIAS SOBRE PROGRAMAÇÃO EM JAVA (PARTE I) João M. P. Cardoso Faculdade de Ciências e Tecnologia Universidade do Algarve Campus de Gambelas 8000 117 Faro, Portugal Email: jmcardo@ualg.pt 1

Leia mais

Lição 9 Trabalhando com bibliotecas de classes

Lição 9 Trabalhando com bibliotecas de classes Lição 9 Trabalhando com bibliotecas de classes Introdução à Programação I 1 Objetivos Ao final da lição, o estudante deverá estar apto a: Explicar o que é programação orientada a objetos e alguns de seus

Leia mais

2 Orientação a objetos na prática

2 Orientação a objetos na prática 2 Orientação a objetos na prática Aula 04 Sumário Capítulo 1 Introdução e conceitos básicos 1.4 Orientação a Objetos 1.4.1 Classe 1.4.2 Objetos 1.4.3 Métodos e atributos 1.4.4 Encapsulamento 1.4.5 Métodos

Leia mais

Capítulo 5 Reuso de Classes

Capítulo 5 Reuso de Classes Java and all Java-based marks are trademarks or registered trademarks of Sun Microsystems, Inc. in the U.S. and other countries. Desenvolvimento Orientado a Objetos com Java Capítulo 5 Reuso de Classes

Leia mais

Introdução à linguagem

Introdução à linguagem A Tecnologia Java 1 Introdução à linguagem Origens do JAVA Projecto Green, programação para a electrónica de Consumo (Dezembro 1990): Pouca memória disponível Processadores fracos Arquitecturas muito diferentes

Leia mais

Encapsulamento de Dados

Encapsulamento de Dados Encapsulamento de Dados Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Modificadores de Visibilidade Especificam

Leia mais

Mecanismos de Comunicação. Sockets em java (http://java.sun.com/docs/books/tutorial/networking/sockets/)

Mecanismos de Comunicação. Sockets em java (http://java.sun.com/docs/books/tutorial/networking/sockets/) Mecanismos de Comunicação Sockets em java (http://java.sun.com/docs/books/tutorial/networking/sockets/) Sockets o que é? Um socket é um mecanismo de comunicação (dois sentidos) entre dois programas a funcionar

Leia mais

Java 1 visão geral. Vitor Vaz da Silva

Java 1 visão geral. Vitor Vaz da Silva Java 1 visão geral Vitor Vaz da Silva Introdução 1991 Um grupo de projectistas da Sun Green Team tenta criar uma nova geração de computadores portáteis inteligentes e com grande capacidade de comunicação.

Leia mais

INF1013 MODELAGEM DE SOFTWARE

INF1013 MODELAGEM DE SOFTWARE INF1013 MODELAGEM DE SOFTWARE Departamento de Informática Ivan Mathias Filho ivan@inf.puc-rio.br Programa Capítulo 18 Sockets OLadoServidor O Lado Cliente Múltiplos Clientes 1 Programa Capítulo 18 Sockets

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 Compreender como desenvolver algoritmos básicos em JAVA Aprender como escrever programas na Linguagem JAVA baseando-se na Linguagem Portugol aprender as sintaxes equivalentes entre

Leia mais

Noções sobre Objetos e Classes

Noções sobre Objetos e Classes Noções sobre Objetos e Classes Prof. Marcelo Cohen 1. Elementos de programação Revisão de programação variáveis, tipos de dados expressões e operadores cadeias de caracteres escopo de variáveis Revisão

Leia mais

Programação com sockets (em Java)

Programação com sockets (em Java) com sockets (em Java) Prof. Dr. Julio Arakaki Depto. Ciência da 1 Comunicação entre processos // aplicações - é um dos mecanismos mais utilizados - Java oferece modos de utilização:. TCP ( Transmission

Leia mais

5 Caso de estudo O cartão fidelidade

5 Caso de estudo O cartão fidelidade 5 Caso de estudo O cartão fidelidade Cartão de fidelização de clientes das distribuidoras de combustível. Definição em JAVA da classe CartaoFidelidade, que deverá apresentar uma funcionalidade semelhante

Leia mais

Java : Comunicação Cliente-Servidor.

Java : Comunicação Cliente-Servidor. Java : Comunicação Cliente-Servidor. Objetivo: Capacitar o aluno a desenvolver uma aplicação servidora para múltiplos clientes. Apresentar as classes Socket e ServerSocket, classes de fluxo de dados, a

Leia mais

Profa. Thienne Johnson

Profa. Thienne Johnson Profa. Thienne Johnson E. Gamma and R. Helm and R. Johnson and J. Vlissides. Design Patterns - Elements of Reusable Object-Oriented Software. Addison- Wesley, 1995. Conhecido como GoF (Gang of Four) Versão

Leia mais

Escola Superior de Gestão e Tecnologia. Tratamento de Exceções

Escola Superior de Gestão e Tecnologia. Tratamento de Exceções Escola Superior de Gestão e Tecnologia Tratamento de Exceções Objetivos Compreender como o tratamento de exceção e de erro funciona. Como u4lizar try, throw e catch para detectar, indicar e tratar exceções,

Leia mais

Revisão da linguagem Java

Revisão da linguagem Java Revisão da linguagem Java Laboratório de Programação Pedro Vasconcelos, DCC/FCUP Fevereiro 2015 Java TM linguagem de programação de propósito genérico desenvolvida pela Sun (e agora Oracle) suporta tipos

Leia mais

O uso de exceções permite separar a detecção da ocorrência de uma situação excepcional do seu tratamento, ao se programar um método em Java.

O uso de exceções permite separar a detecção da ocorrência de uma situação excepcional do seu tratamento, ao se programar um método em Java. Exceções em Java Miguel Jonathan DCC/IM/UFRJ (rev. abril de 2011) Resumo dos conceitos e regras gerais do uso de exceções em Java O uso de exceções permite separar a detecção da ocorrência de uma situação

Leia mais

Programação em Rede Baseada em Java. Luiz Affonso Guedes Tópicos em Redes de Computadores Programação Distribuída www.dca.ufrn.

Programação em Rede Baseada em Java. Luiz Affonso Guedes Tópicos em Redes de Computadores Programação Distribuída www.dca.ufrn. Programação em Rede Baseada em Java Luiz Affonso Guedes Tópicos em Redes de Computadores Programação Distribuída www.dca.ufrn.br/~affonso/cursos Definiçõs Básicas Uma rede é um conjunto de computadores

Leia mais

UNIVERSIDADE FEDERAL DO PARANÁ

UNIVERSIDADE FEDERAL DO PARANÁ CURSO: Ciência da Computação DATA: / / 2013 PERÍODO: 4 o. PROFESSOR: Andrey DISCIPLINA: Técnicas Alternativas de Programação AULA: 02 APRESENTAÇÃO: Apresentação; conceitos básicos da linguagem java; estrutura

Leia mais

Camada de Transporte. Bruno Silvério Costa

Camada de Transporte. Bruno Silvério Costa Camada de Transporte Bruno Silvério Costa Serviços Oferecidos à camada superior Camadas de rede, transporte e aplicação. Primitivas do Serviço de Transporte As primitivas para um serviço de transporte

Leia mais

Guia de Fatores de Qualidade de OO e Java

Guia de Fatores de Qualidade de OO e Java Qualiti Software Processes Guia de Fatores de Qualidade de OO e Java Versã o 1.0 Este documento só pode ser utilizado para fins educacionais, no Centro de Informática da Universidade Federal de Pernambuco.

Leia mais

Programação Avançada em Java. Patrícia Augustin Jaques

Programação Avançada em Java. Patrícia Augustin Jaques de Programação Avançada em Java Autoria: - pjaques@unisinos.br Última atualização: Outubro de 2007. Nenhuma parte desta apostila pode ser utilizada ou reproduzida, em qualquer meio ou forma, seja mecânico

Leia mais

Orientação a Objetos em Java. Leonardo Gresta Paulino Murta leomurta@ic.uff.br

Orientação a Objetos em Java. Leonardo Gresta Paulino Murta leomurta@ic.uff.br Orientação a Objetos em Java Leonardo Gresta Paulino Murta leomurta@ic.uff.br Agenda Introdução; Orientação a Objetos; Orientação a Objetos em Java; Leonardo Murta Orientação a Objetos em Java 2 Agosto/2007

Leia mais

Caso 1 NetScanner Main

Caso 1 NetScanner Main Caso 1 NetScanner import java.util.scanner; import java.net.unknownhostexception; import java.util.logging.level; import java.util.logging.logger; import javax.swing.joptionpane; public class Main { System.out.println("Digite

Leia mais

Slides_Java_1 !"$ % & $ ' ' Output: Run java. Compile javac. Name of program. Must be the same as name of file. Java source code.

Slides_Java_1 !$ % & $ ' ' Output: Run java. Compile javac. Name of program. Must be the same as name of file. Java source code. Slides_Java_1!"#$!" $ % & $ Sistemas Informáticos I, 2005/2006 ( Java source code Compile javac Java bytecode Run java Output:!"#) %& Name of program. Must be the same as name of file.!"#$!"$ % & $ Where

Leia mais

Aula 09 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes http://www.profbrunogomes.com.br/

Aula 09 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes http://www.profbrunogomes.com.br/ Aula 09 Introdução à Java Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes http://www.profbrunogomes.com.br/ Agenda da Aula Java: Sintaxe; Tipos de Dados; Variáveis; Impressão de Dados.

Leia mais

11.7 Exercícios de Revisão11.7

11.7 Exercícios de Revisão11.7 762 Capítulo 11 Processamento de Arquivos II Ana Bolena 1012 7.8 8.0 Ana de Cleves 1022 4.5 6.0 Catarina Aragon 1014 5.5 6.5 Catarina Howard 1340 6.0 7.7 Catarina Parr 1440 4.0 6.0 Henrique VIII 1029 9.5

Leia mais

Análise de Programação

Análise de Programação Análise de Programação Conceitos Avançados da Linguagem de Programação Java Prof Gilberto B Oliveira Encapsulamento Proteger o dado dentro de uma classe (capsula segura) Facilita o uso da classe por outros

Leia mais

AULA DE JAVA 1 - CONCEITOS BÁSICOS

AULA DE JAVA 1 - CONCEITOS BÁSICOS AULA DE JAVA 1 - CONCEITOS BÁSICOS DAS 5316 Integração de Sistemas Corporativos Roque Oliveira Bezerra, M. Eng roque@das.ufsc.br Prof. Ricardo J. Rabelo ROTEIRO Introdução Fases de um programa Java Strings

Leia mais