You are on page 1of 19

Objectivos do mdulo

1 Objectivo:

Programao em JAVA avanada


Curso tcnico de informtica sistemas Mdulo 0791 Carga horria: 50 horas Formador: Ricardo Carvalho

Reconhecer as estruturas complexas da programao em JAVA.

Formador Ricardo Carvalho

Formador Ricardo Carvalho

Contedos
Comunicao em rede Modificadores Packages Multithreading Streams

Trabalho
Realizao de um trabalho individual sobre todas as aprendizagens desenvolvidas durante o mdulo, nomeadamente os programas desenvolvidos em linguagem JAVA.

Formador Ricardo Carvalho

Formador Ricardo Carvalho

Comunicao em rede
Linguagem JAVA e comunicao em rede Links em applets Comunicao entre applets

COMUNICAO EM REDE

Formador Ricardo Carvalho

Formador Ricardo Carvalho

Linguagem JAVA e comunicao em rede


Java dispe de diversas classes para manipular e processar informao em rede So suportados dois mecanismos bsicos:
Sockets - troca de pacotes de informao URL - mecanismo alto-nvel para troca de informao

Linguagem JAVA e comunicao em rede


Package java.net
O package contm as seguintes classes:
URL encapsula um endereo WWW URLconnection uma ligao WWW InetAddress um endereo IP com nome de host Socket lado do cliente, liga a um porto, utiliza TCP ServerSocket ausculta um determinado porto por ligaes de clientes (a ligao implica TCP) DatagramSocket um socket UDP, para clientes e servidores DatagramPacket empacota informao num pacote UDP com informao de encaminhamento IP
Formador Ricardo Carvalho
8

Estas classes possibilitam comunicaes baseadas em sockets:


permitem manipular I/O de rede como I/O de ficheiros os sockets so tratados como streams alto-nvel o que possibilita a leitura/escrita de/para sockets como se fosse para ficheiros
Formador Ricardo Carvalho
7

Linguagem JAVA e comunicao em rede


Sockets
Um socket um mecanismo que permite que programas troquem pacotes de bytes entre si. Quando um socket envia um pacote, este acompanhado por duas componentes de informao:
Um endereo de rede que especifica o destinatrio do pacote Um nmero de porto que indica ao destinatrio qual o socket usar para enviar informao

Linguagem JAVA e comunicao em rede


Objectos URL
A classe URL fornece um acesso a dados a um mais altonvel do que os sockets Um objecto URL encapsula um Uniform Resource Locator (URL) que uma vez criado pode ser usado para aceder a dados de um endereo especificado pelo URL O acesso aos dados no necessita de se preocupar com o protocolo utilizado Para alguns tipos de dados, um objecto URL sabe devolver os contedos. Por exemplo, dados JPEG num objecto ImageProducer, ou texto numa String
9

Os sockets normalmente funcionam em pares: um cliente e um servidor

Formador Ricardo Carvalho

Formador Ricardo Carvalho

10

Links em applets
URLs absolutos

Comunicao entre applets


Um applet pode comunicar com outro applet atravs do uso de funes de JavaScript. As funes JavaScript permite a comunicao entre applets recebendo mensagens de um applet e invocando mtodos no outro. com/javase/tutorial/deployment/applet/inv okingJavaScriptFromApplet.html

URLs relativos

Mtodos de acesso
getProtocol(), getHost(), getFile(), getPort(), getRef(), sameFile(URL), getContent(), openStream()

Formador Ricardo Carvalho

11

Formador Ricardo Carvalho

12

Comunicao entre applets


Os applets devem estar na mesma directoria.

MODIFICADORES

Formador Ricardo Carvalho

13

Formador Ricardo Carvalho

14

Modificadores
Controlo de acesso a mtodos e variveis Modificador final Mtodos e classes abstract

Controlo de acesso a mtodos e variveis


Java controla o acesso a atributos e mtodos atravs do uso dos modificadores de acesso. So eles :
Private Public Protected

Interfaces

Formador Ricardo Carvalho

15

Formador Ricardo Carvalho

16

Controlo de acesso a mtodos e variveis


public
o menos restritivo de todos. Atributos e mtodos declarados como public em uma classe podem ser acedidos pelos mtodos da prpria classe, por classes derivadas desta e por qualquer outra classe em qualquer outro pacote.

Controlo de acesso a mtodos e variveis


Private
Marcando um atributo como privado, fechamos o acesso ao mesmo de todas as outras classes, fazendo com que o seguinte cdigo no compile. prtica quase que obrigatria proteger seus atributos comprivate

protected :
Atributos e mtodos definidos como protected so acessveis pelos mtodos da prpria classe e pelas classes derivadass
Formador Ricardo Carvalho
17

Formador Ricardo Carvalho

18

Controlo de acesso a mtodos e variveis


Private
Tambm pode ser usada para modificar o acesso a um mtodo. Tal funcionalidade normalmente usada quando existe um mtodo apenas auxiliar a prpria classe e no queremos que outras pessoas o usem (ou apenas para seguir a boa prtica de expor o mnimo).

Modificador final
A palavra chave final tem vrias utilidades. Numa classe,
define que a classe nunca poder ter uma filha, isso , no pode ser estendida. A classe String, por exemplo, final.

Mtodo,
Como modificador de mtodo, final indica que aquele mtodo no pode ser reescrito.

Formador Ricardo Carvalho

19

Formador Ricardo Carvalho

20

Modificador final
Varivel
indica que o valor daquela varivel nunca poder ser alterado, uma vez atribudo. Se a varivel for um atributo, voc tem que inicializar seu valor durante a construo do objecto - caso contrrio, ocorre um erro de compilao, pois atributos final no so inicializados com valores default).

Modificador final
Uma varivel static final tem uma cara de constante daquela classe e, se for public static final, a parece uma constante global.

Formador Ricardo Carvalho

21

Formador Ricardo Carvalho

22

Mtodos e classes abstract


Classes Abstractas
Usadas para guiar a criao de outras classes. Elas implementam ou apenas definem comportamentos que so genricos o suficiente para serem comuns a vrias outras classes. Utilizamos a palavra reservada abstract para definir uma classe abstrata. Se tentarmos instanciar uma classe abstrata receberemos um erro de compilao.
Formador Ricardo Carvalho
23

Mtodos e classes abstract


Em Suma, uma classe abstracta serve somente para o polimorfismo e herana dos atributos e mtodos.

Formador Ricardo Carvalho

24

Mtodos e classes abstract


Mtodos abstratos
Podem existir apenas em classes abstratas. Indica que todas as classes filhas (concretas, isto , que no forem abstratas) devem reescrever esse mtodo ou no compilaro.

Interfaces
Uma interface semelhante a uma classe abstrata excepto pelo fato desta no poder ter qualquer mtodo concreto ou varivel de instncia. Uma interface representa uma coleco de declaraes de mtodos abstractos e possivelmente constantes. Qualquer classe que implementa uma interface deve obrigatoriamente implementar todos os mtodos especificados pela interface. Outra caracterstica importante que uma classe pode derivar de apenas uma nica outra classe (herana simples), mas podeimplementar um nmero indeterminado de interfaces.

Formador Ricardo Carvalho

25

Formador Ricardo Carvalho

26

Packages
Programas Escrita do cdigo Excepes em JAVA Limitaes colocadas na programao Clausula finally

PACKAGES

Formador Ricardo Carvalho

27

Formador Ricardo Carvalho

28

Programas
package:
Grupo de tipos relacionados (classes e interfaces); Fornece: Proteco no que respeita a acessos; Gesto de nomes. Resulta em:
Facilidade em encontrar e usar as classes e interfaces; Evitar conflitos no que respeita aos nomes; Controlar o acesso.

Programas
As classes e interfaces que fazem parte da plataforma Java so membros de vrios packages (dependendo da sua funo).
java.lang classes fundamentais; java.io classes para ler e escrever (input e output); etc.

Os programadores devem agrupar em packages classes e interfaces relacionadas


Formador Ricardo Carvalho
29

Formador Ricardo Carvalho

30

Programas
Criao de Packages
Escolher um nome e colocar package nome na primeira linha do ficheiro de cdigo de cada classe e cada interface que se quer colocar nesse package.

Programas
Utilizao de packages

Utilizao de Packages
Referir-se aos elementos pelo seu nome completo; Importar o elemento; Importar todos os elementos do package.ages
Formador Ricardo Carvalho
31

Formador Ricardo Carvalho

32

Escrita do cdigo
Considere o seguinte mtodo que l um ficheiro inteiro para a memria

Escrita do cdigo
Ignora potenciais erros
O que acontece se o ficheiro no pode abrir? O que acontece se no se conseguir obter o tamanho do ficheiro? O que acontece se no houver memria suficiente? O que acontece se a leitura falhar? O que acontece se o ficheiro no fechar?

Formador Ricardo Carvalho

33

Formador Ricardo Carvalho

34

Escrita do cdigo
necessrio detectar, reportar e manipular os erros.

Escrita do cdigo
Utilizar excepes em vez das tcnicas de gesto de erros tradicionais.

Formador Ricardo Carvalho

35

Formador Ricardo Carvalho

36

Excepes em JAVA
Uma excepo um evento que ocorre durante a execuo de um programa e que desfaz o fluxo normal de instrues.
Por exemplo, tentar aceder um elemento fora dos limites de um array, tentar dividir um nmero por zero, so exemplos de excepes.

Excepes em JAVA
Excepes no verificveis:
Este tipo de excepo deriva da classe RuntimeException. Podemos escolher o que fazer com uma excepo que ocorre em tempo de execuo (como dividir um nmero por zero ou acessar um elemento invlido de um array); Podemos tentar captur-la e trat-la ou ento a ignorarmos.
37

A diferena entre um erro e uma excepo que uma excepo pode ser capturada e o programa pode seguir em frente a partir dali, j quando um erro ocorre o programa necessariamente ir terminar.
Formador Ricardo Carvalho

Formador Ricardo Carvalho

38

Excepes em JAVA
Excepo verificveis:
Excepes deste tipo so extenses da classe Exception. Elas devem obrigatoriamente ser capturadas em algum lugar da aplicao, sob pena de ocorrer erro de compilao caso isso no seja feito.

Excepes em JAVA
Excepo verificveis:
Podem ter sido causadas por algo fora do controlo do nosso programa; DEVEM ser tratadas pelo nosso cdigo, seno o programa no compila.

No verificveis (runtime):
So culpa nossa! (provavelmente) poderiam ter sido evitadas se fossem devidamente analisadas e tratadas no cdigo (verificar situaes de erro). No precisam de ser tratadas, mas faro
39

Formador Ricardo Carvalho

Formador Ricardo Carvalho

40

10

Excepes em JAVA
Tratamento de Excepes Quando chamamos um mtodo que pode retornar uma excepo temos trs alternativas: Excepes em JAVA

Excepes em JAVA
Captao de excepes
Se um bloco de cdigo chama um ou mais mtodos que podem disparar excepes, coloque o cdigo dentro de um bloco try, com um ou mais blocos catch imediatamente posterior a este. Cada bloco catch trata de uma excepo particular. Pode-se opcionalmente incluir um bloco finally aps todos os blocos catch, o qual sempre executado mesmo que nenhuma excepo ocorra.
41

Capturar a excepo e trat-la Deixar a excepo passar pelo mtodo; em algum outro lugar ela deve ser capturada. Capturar a excepo e disparar uma excepo diferente. A nova excepo deve ser capturada em algum lugar.
Formador Ricardo Carvalho

Formador Ricardo Carvalho

42

Excepes em JAVA
Captao de excepes

Excepes em JAVA
Deixando uma excepo passar atravs do mtodo
Quando uma excepo ocorre mas no temos condio de trat-la naquele local, podemos pass-la adiante para que num mtodo mais acima ela possa ser tratada adequadamente. Para liberar um mtodo de tratar uma determinada excepo devemos usar o comando throws na declarao do mesmo.

Formador Ricardo Carvalho

43

Formador Ricardo Carvalho

44

11

Excepes em JAVA
Deixando uma excepo passar atravs do mtodo

Excepes em JAVA
Capturando uma excepo e disparando outra diferente
Uma outra alternativa para tratar uma excepo captur-la e disparar uma excepo diferente, possivelmente uma criada por ns mesmos.

Formador Ricardo Carvalho

45

Formador Ricardo Carvalho

46

Excepes em JAVA
Capturando uma excepo e disparando outra diferente

Limitaes colocadas na programao


Excepes (podem ser resolvidos pelo programa):
Erros de I/O (teclado/ floppy / disco / entrada de dados) Erros de rede (internet, LAN) Casting ilegal, desreferenciao de objectos (null), matemtica ndice de array / coleco fora dos limites

Erros (no podem ser resolvidos de forma conveniente):


Falta de memria Erro / bug / crash na Java Virtual Machine Classes Java requeridas pelo programa corruptas
Formador Ricardo Carvalho
47

Formador Ricardo Carvalho

48

12

finnaly
Os blocos try e catch podem conter uma terceira clusula chamada finally que indica o que deve ser feito aps o trmino do bloco try ou de um catch qualquer.

Excepes
http://docs.oracle.com/javase/tutorial/esse ntial/exceptions/index.html

Formador Ricardo Carvalho

49

Formador Ricardo Carvalho

50

Multithreading
Criao, utilizao e paragem de threads Paralelismo Sincronismo Partilha

MULTITHREADING

Formador Ricardo Carvalho

51

Formador Ricardo Carvalho

52

13

Introduo aos Threads


Uma thread pode ser definido como um fluxo de controle sequencial isolado dentro de um programa. tem um comeo, um fim e uma sequncia de comandos no um programa, no executa sozinho, executa dentro de um programa. permitem que um programa simples possa executar vrias tarefas diferentes ao mesmo tempo, independentemente umas das outras.
Formador Ricardo Carvalho
53

Introduo aos Threads


Classe Thread mtodo run(), e nele que so executadas as tarefas s quais thread se destina. mtodos bsicos para se lidar com threads (run(), start(), stop(), sleep(), etc.).

Formador Ricardo Carvalho

54

Applets com Theards


Implementao: 2 formas
Criando uma subclasse da classe Thread e definindo o seu mtodo run() de maneira adequada realizao da tarefa do thread. Criando uma instncia de Thread que recebe como parmetro um objecto que implemente a interface Runnable - esse objecto providenciar o mtodo run() para a thread.

Applets com Theards:estados

Formador Ricardo Carvalho

55

Formador Ricardo Carvalho

56

14

Applets com Theards: estados


New Thread

Applets com Theards: estados


Runnable

Formador Ricardo Carvalho

57

Formador Ricardo Carvalho

58

Applets com Theards: estados Not Runnable

Applets com Theards: estados Not Runnable

Formador Ricardo Carvalho

59

Formador Ricardo Carvalho

60

15

Applets com Theards: estados


Dead

Paralelismo
A necessidade de se fazer vrias coisas simultaneamente, ao mesmo tempo, paralelamente aparece frequentemente na computao. Para vrios programas distintos, normalmente o prprio sistema operacional gere isso atravs de vrios processos em paralelo.

Em um programa s (um processo s), se queremos executar coisas em paralelo, normalmente falamos de Threads.
Formador Ricardo Carvalho
61

Formador Ricardo Carvalho

62

Paralelismo
(212) Ateno utilizao de Threads!
actualizar a Conta enquanto outra pessoa est depositando um dinheiro. Queramos que uma Thread no pudesse mexer em uma Conta enquanto outra Thread est mexendo nela. No h como impedir o escalonador de fazer tal escolha. Ento, o que fazer?

Partilha
Acesso a Recursos partilhados
Os dados podem ficar corrompidos se acedidos por vrios threads. Utilizar a palavra synchronized para evitar conflitos de recursos partilhados.

Definir um bloco de cdigo como sendo corrido somente por uma Thread de cada vez. (synchronized )
Formador Ricardo Carvalho
63

Formador Ricardo Carvalho

64

16

Sincronismo
Se um thread invoca um mtodo synchronized, nenhum outro thread pode executar um mtodo sincronizado no mesmo objecto at o primeiro thread completar a sua tarefa.

STREAMS

Formador Ricardo Carvalho

65

Formador Ricardo Carvalho

66

Streams
Input e output - streams Classes relativas a streams

Input e output - streams


Classe java.io
controle de entrada e sada de dados

utilizar fluxos de entrada (InputStream) e de sada (OutputStream) para toda e qualquer operao, seja ela relativa a um arquivo, a um campo blob da base de dados, a uma conexo remota via sockets, ou at mesmo s entrada e sada padro de um programa.
Formador Ricardo Carvalho
67

Formador Ricardo Carvalho

68

17

Classes relativas a streams


As classes abstratas InputStream e OutputStream definem, respectivamente, o comportamento padro dos fluxos em Java: em um fluxo de entrada, possvel ler bytes e, no fluxo de sada, escrever bytes.

Classes relativas a streams


InputStream, InputStreamReader e BufferedReader

Formador Ricardo Carvalho

69

Formador Ricardo Carvalho

70

Classes relativas a streams


Ler do teclado

Classes relativas a streams


OutputStream, OutputStreamWriter e BufferedWriter

Formador Ricardo Carvalho

71

Formador Ricardo Carvalho

72

18

Classes relativas a streams


Scanner e PrintStream
A partir do Java 5 temos a classe java.util.Scanner, que facilita bastante o trabalho de ler de um InputStream. Alm disso, a classe PrintStream possui um construtor que j recebe o nome de um arquivo como argumento.

Formador Ricardo Carvalho

73

19

You might also like