Beruflich Dokumente
Kultur Dokumente
DESENVOLVIMENTO DE SISTEMAS
PROGRAMAÇÃO
DE
OBJETOS
DISTRIBUÍDOS
Prof. Zanete
SUMÁRIO
1 INTRODUÇÃO
3
2 ARRAY DE BYTES
4
3 STREAM DE ENTRADA E SAÍDA
6
4 A CLASSE STRING
9
5 URL - UNIFORM RESOURCE LOCATOR
10
13
6 THREADS
16
7 SOCKETS
17
ANEXO I
20
BIBLIOGRAFIA
2
1 INTRODUÇÃO
3
2 ARRAY DE BYTES
A CLASSE FILE
A classe File oferece abstração para informações sobre arquivos, como por
exemplo, caminho, data e tamanho do arquivo em um sistema de arquivos.
import java.io.*;
public class existeArquivo {
public static void main(String args[])
{
File f = new File(args[0]);
if (f.exists())
{
System.out.print("O arquivo " + args[0] + " existe");
System.out.println(" e possui " + f.length() + " bytes");
}
else
{
System.out.println("O arquivo nao existe");
}
}
}
ARRAY DE BYTES
Arrays de bytes são declarados para armazenar uma certa quantidade de bytes.
Cada byte representa um inteiro de 0 a 255 de acordo com a tabela ASCII. Veja o
ANEXO I.
Neste exemplo foi criado um array de bytes nomeado como pedaco. O array
possui 10 posições, e portanto pode armazenar no máximo 10 bytes.
4
O exemplo abaixo apresenta na tela todos os bytes do vetor:
A saída será: 116 101 99 110 111 108 111 103 105 97
Neste outro exemplo a saída de bytes foi convertida para caracteres:
A saída será: t e c n o l o g i a
Neste outro exemplo o todo o array de bytes é convertido para String de uma só
vez:
System.out.println(new String(pedaco));
A saída será: t e c n o l o g i a
A saída será: t e c n o l o g i a
5
3 STREAM DE ENTRADA E SAÍDA
Uma Stream de E/S (Entrada e Saída) gera o caminho pelo qual seus programas
podem enviar uma seqüência de bytes de uma fonte até um destino. Uma Stream de
entrada é uma fonte ou produtor de bytes, e uma Stream de saída é um destino ou
consumidor de bytes.
Uma fonte e um destino de dados de um programa pode ser o disco, o teclado, o
mouse, a memória, o monitor, uma conexão de rede etc.
6
STREAM DE BYTES
1 import java.awt.*;
2 import com.sun.image.codec.jpeg.*;
3 import java.io.*;
4
5 public class ShowImage extends Frame
6 {
7 public static void main(String[] args)
8 {
9 ShowImage f = new ShowImage();
10 f.setTitle("teste JPG");
11 f.setSize(500, 500);
12 f.setVisible(true);
13 }
14 public void paint(Graphics g)
15 {
16 try
17 {
18 FileInputStream is = new FileInputStream("BannerProj.jpg");
19 JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(is);
20 Image image = decoder.decodeAsBufferedImage();
21 g.drawImage(image, 0, 0, this);
22 }
23 catch(IOException e) {}
24 }
25 }
7
A JPEGImageDecoder irá decodificar uma InputStream que contém dados de
imagem JPEG e retornará uma imagem JPG buferizada.
Esses passos são realizados nas linhas 19 e 20 do exemplo acima. Na linha 19 cria-se
o objeto decoder e na linha 20 aplica-se o método decodeAsBufferedImage que irá
retornar um objeto Image pronto para ser desenhado. A linha 21 desenha a imagem no
frame através do método drawImage(image, 0, 0, this); onde o parâmetro image
representa o próprio objeto imagem e os parâmetros 0, 0, representa as posições de
coluna e linha em pixels onde a imagem será exibida dentro do frame. O parâmetro this
representa o objeto frame (Observer) no qual a imagem será exibida (pois a classe
ShowImage é um Frame). Por não tratar eventos, a janela deste programa não será
fechada, para encerrar a execução pressione Ctrl-C no prompt de comando.
STREAM DE CARACTERES
As classes FileWriter e PrintWriter permitem gravar arquivos textos.
A tabela abaixo apresenta alguns caracteres especiais que podem ser usados na
geração de arquivos textos:
Caracteres Especiais
\n Pula linha (newline ou linefeed)
\r Retorno de carro (carriage return)
\b Retrocesso (backspace)
\t Tabulação (horizontal tabulation)
\f Nova página (formfeed)
\ Apóstrofe
\ Aspas
\\ Barra invertida
8
4 A CLASSE STRING
A Classe String possui uma série de métodos para manipular strings. É possível
através dos métodos dessa classe obter informações como, o tamanho de uma
determinada string (em nº de caracteres), se a string começa ou termina com
determinada seqüência de caracteres, se ao longo de sua extensão existe determinado
caracter e enfim várias outras possibilidades.
Dentre os vários métodos existente nessa classe os mais usados são:
9
5 URL - UNIFORM RESOURCE LOCATOR
Se você já navegou pela Web, provavelmente já usou URL's para ter acesso
páginas Web.
Talvez seja mais fácil, embora não completamente preciso, pensar em um URL
como o nome de um arquivo na World Wide Web porque a maioria dos URLs se refere
a um arquivo em alguma máquina na rede. Porém, lembre-se que URL também pode
apontar outros recursos na rede, como consultas de banco de dados e saída de dados.
10
O nome de recurso é o endereço completo ao recurso. O formato do nome de
recurso depende completamente do protocolo usado, mas para muitos protocolos,
inclusive HTTP, o nome de recurso contém um ou mais dos componentes listados na
tabela seguinte:
CRIANDO UM URL
O modo mais fácil para criar um objeto de URL é através de uma String que
representa a forma legível do endereço de URL. Esta é tipicamente a forma que as
pessoas usam para um URL. Por exemplo, o URL para o site da Faccar leva a seguinte
forma: http://www.faccar.com.br
Em seu programa Java, você pode usar uma String que contém este texto para
criar um objeto URL:
11
EXAMINANDO UM URL
A classe de URL provê vários métodos que examinam objetos de URL. Você
pode obter o protocolo, o nome do host, número da porta, e nome do arquivo de um
URL usando os seguintes métodos de acesso:
import java.net.*;
public class AnaliseURL
{
public static void main(String args[])
{
try
{
String faccar = "http://www.faccar.com.br:8080/zanete/oop.htm#introducao";
URL aURL = new URL(faccar);
System.out.println("protocolo = " + aURL.getProtocol());
System.out.println("nome da maquina = " + aURL.getHost());
System.out.println("nome do arquivo = " + aURL.getFile());
System.out.println("porta = " + aURL.getPort());
System.out.println("referencia = " + aURL.getRef());
} catch (MalformedURLException e) {}
}
}
Exemplo 9 Uso de métodos URL
protocolo = http
nome da maquina = www.faccar.com.br
nome do arquivo = /zanete/oop.htm
porta = 8080
referencia = introducao
12
6 THREADS
13
Um programa Multithreaded.
14
Exercício:
Criar um programa Contador.java utilizando o modificador synchronized.
public synchronized void run()
O resultado esperado é que o método run() seja utilizado com exclusividade por
uma das threads e só depois ao término da primeira execução, dar-se-a uma chance
para a outra thread.
15
7 SOCKETS
16
ANEXO I
TABELA ASCII
ASCII (acrônimo para American Standard Code for Information Interchange) é um
conjunto de códigos para o computador representar números, letras, pontuação e
outros caracteres.
ASCII é uma padronização da indústria de computadores, onde cada caracter é
manipulado na memória discos etc, sob forma de código binário. O código ASCII é
formado por todas as combinações possíveis de 7 bits, sendo que existem várias
extensões que abrangem 8 ou mais bits.
CARACTERES NORMAIS
Binário Decimal Hex Gráfico Binário Decimal Hex Gráfico
00100000 32 20 (vazio) (␠ ) 01010000 80 50 P
00100001 33 21 ! 01010001 81 51 Q
00100010 34 22 " 01010010 82 52 R
00100011 35 23 # 01010011 83 53 S
00100100 36 24 $ 01010100 84 54 T
00100101 37 25 % 01010101 85 55 U
00100110 38 26 & 01010110 86 56 V
00100111 39 27 ' 01010111 87 57 W
00101000 40 28 ( 01011000 88 58 X
00101001 41 29 ) 01011001 89 59 Y
00101010 42 2A * 01011010 90 5A Z
00101011 43 2B + 01011011 91 5B [[[]]
00101100 44 2C , 01011100 92 5C \
00101101 45 2D - 01011101 93 5D [[]]]
00101110 46 2E . 01011110 94 5E ^
00101111 47 2F / 01011111 95 5F [[_]]
00110000 48 30 0 01100000 96 60 `
00110001 49 31 1 01100001 97 61 a
00110010 50 32 2 01100010 98 62 b
00110011 51 33 3 01100011 99 63 c
00110100 52 34 4 01100100 100 64 d
00110101 53 35 5 01100101 101 65 e
00110110 54 36 6 01100110 102 66 f
00110111 55 37 7 01100111 103 67 g
00111000 56 38 8 01101000 104 68 h
00111001 57 39 9 01101001 105 69 i
00111010 58 3A : 01101010 106 6A j
17
Binário Decimal Hex Gráfico Binário Decimal Hex Gráfico
00111011 59 3B ; 01101011 107 6B k
00111100 60 3C [[<]] 01101100 108 6C l
00111101 61 3D = 01101101 109 6D m
00111110 62 3E [[>]] 01101110 110 6E n
00111111 63 3F ? 01101111 111 6F o
01000000 64 40 @ 01110000 112 70 p
01000001 65 41 A 01110001 113 71 q
01000010 66 42 B 01110010 114 72 r
01000011 67 43 C 01110011 115 73 s
01000100 68 44 D 01110100 116 74 t
01000101 69 45 E 01110101 117 75 u
01000110 70 46 F 01110110 118 76 v
01000111 71 47 G 01110111 119 77 w
01001000 72 48 H 01111000 120 78 x
01001001 73 49 I 01111001 121 79 y
01001010 74 4A J 01111010 122 7A z
01001011 75 4B K 01111011 123 7B [[{]]
01001100 76 4C L 01111100 124 7C |
01001101 77 4D M 01111101 125 7D [[}]]
01001110 78 4E N 01111110 126 7E ~
01001111 79 4F O 01111111 127 7F Delete
CARACTERES DE CONTROLE
Os caracteres de controle tiveram sua origem nos primórdios da computação,
quando se usavam máquinas de escrever eletro-mecânicas, fitas de papel perfurado e
impressoras de cilindro (drum printers), portanto muitos deles são dirigidos a este
equipamento.
Binário Decimal Hex Ctrl Sigla Controle Gráfico
00000000 00 00 ^@ Null Null - Nulo
00000001 01 01 ^A SOH Start of Header - Início do cabeçalho
00000010 02 02 ^B STX Start of Text - Início do texto
00000011 03 03 ^C ETX End of Text - Fim do texto
00000100 04 04 ^D EOT End of Tape - Fim de fita
00000101 05 05 ^E ENQ Enquire - Interroga identidade do terminal
00000110 06 06 ^F ACK Acknowledge - Reconhecimento
00000111 07 07 ^G BEL Bell - Campainha •
00001000 08 08 ^H BS Back-space - Espaço atrás
00001001 09 09 ^I HT Horizontal Tabulation - Tabulação horizontal
00001010 10 0A ^J LF Line-Feed - Alimenta linha
00001011 11 0B ^K VT Vertical Tabulation - Tabulação vertical
00001100 12 0C ^L FF Form-Feed - Alimenta formulário
00001101 13 0D ^M CR Carriage-Return - Retorno do carro
18
Binário Decimal Hex Ctrl Sigla Controle Gráfico
00001110 14 0E ^N SO Shift-Out - Saída do shift (passa a usar caracteres de baixo da tecla -
minúsculas, etc.)
00001111 15 0F ^O SI Shift-In - Entrada no shift (passa a usar caracteres de cima da tecla:
maiúsculas, caracteres especiais, etc.)
00010000 16 10 ^P DLE Data-Link Escape
00010001 17 11 ^Q DC1 Device-Control 1
00010010 18 12 ^R DC2 Device-Control 2
19
BIBLIOGRAFIA
[CES 1996] CESTA, Augusto. Tutorial: A linguagem de programação Java. [1996]. DCC
Unicamp: Campinas. Disponível em:
http://www.ic.unicamp.br/~cmrubira/aacesta/java/javatut.html
Acesso em: 22 fev. 2010.
[DEI 2003] DEITEL, H. M. Java, como programar. 4. ed. - Porto Alegre: Bookman, 2003.
[LEM 2003] LEMAY, Laura. Aprenda em 21 dias Java: Professional reference. Rio de Janeiro:
Campus, 2003.
[RIC 2001] RICARTE, Ivan Luiz Marques. Programação orientada a objetos: Uma abordagem
com Java. Campinas: FEEC/UNICAMP, 2001. (Apostila)
[SUN 2003] SUN MICROSYSTEMS. The Java Tutorial - The Really Big Index. [November 3,
2003]. Disponível em: http://java.sun.com/docs/books/tutorial/reallybigindex.html
Acesso em: 22 fev. 2010.
[SUN 2009] SUN MICROSYSTEMS. JavaTM 2 Platform, Standard Edition 6, API Specification.
[December 18, 2009]. Disponível em: http://java.sun.com/javase/6/docs/api/
Acesso em: 22 fev. 2010.
20