![Page 1: Programação Orientada a Objetos – SCC0204 Prof.: Fernando V. Paulovich](https://reader038.vdocuments.com.br/reader038/viewer/2022102909/568131ae550346895d981c15/html5/thumbnails/1.jpg)
Programação Orientada a Objetos – SCC0204Prof.: Fernando V. Paulovich
E-mail: [email protected]
Monitor PAE: Ricardo Ramos de OliveiraE-mail: [email protected]
22 de Novembro de 201022 de Novembro de 2010Universidade de São PauloUniversidade de São Paulo
![Page 2: Programação Orientada a Objetos – SCC0204 Prof.: Fernando V. Paulovich](https://reader038.vdocuments.com.br/reader038/viewer/2022102909/568131ae550346895d981c15/html5/thumbnails/2.jpg)
2
ROTEIROROTEIRO
Programação Cliente-Servidor
Servidor e cliente de instâncias de classes
Aplicativo Tic Tac Toe Game
1 Conceitos Básicos sobre Redes
2
3
4
![Page 3: Programação Orientada a Objetos – SCC0204 Prof.: Fernando V. Paulovich](https://reader038.vdocuments.com.br/reader038/viewer/2022102909/568131ae550346895d981c15/html5/thumbnails/3.jpg)
3
ROTEIROROTEIRO
1 Conceitos Básicos sobre Redes
2 Programação Cliente-Servidor
3 Servidor e cliente de instâncias de classes
4 Aplicativo Tic Tac Toe Game
![Page 4: Programação Orientada a Objetos – SCC0204 Prof.: Fernando V. Paulovich](https://reader038.vdocuments.com.br/reader038/viewer/2022102909/568131ae550346895d981c15/html5/thumbnails/4.jpg)
4
Conceitos Básicos sobre RedesConceitos Básicos sobre Redes1
Servidor → é o computador que contém a aplicação que desejamos executar via remota.
Serviço → é uma aplicação sendo executada no servidor. É comum usar os termos “serviço” e “servidor” para designar a aplicação a ser executada (ex. servidor de FTP).
![Page 5: Programação Orientada a Objetos – SCC0204 Prof.: Fernando V. Paulovich](https://reader038.vdocuments.com.br/reader038/viewer/2022102909/568131ae550346895d981c15/html5/thumbnails/5.jpg)
5
Cliente →é a aplicação remota que fará a comunicação e interação com o serviço/servidor.
Endereço → é a informação da localização de um computador em uma rede local ou na
Internet.
Porta → é um endereço local em um computador conectado a uma rede, identificado por um número único.
Conceitos Básicos sobre RedesConceitos Básicos sobre Redes1
![Page 6: Programação Orientada a Objetos – SCC0204 Prof.: Fernando V. Paulovich](https://reader038.vdocuments.com.br/reader038/viewer/2022102909/568131ae550346895d981c15/html5/thumbnails/6.jpg)
6
Protocolo → Padrão de comunicação estabelecido entre cliente e servidor.
Socket → é o canal de comunicações para o envio e recebimento de informações entre cliente e servidor.
Conceitos Básicos sobre RedesConceitos Básicos sobre Redes1
![Page 7: Programação Orientada a Objetos – SCC0204 Prof.: Fernando V. Paulovich](https://reader038.vdocuments.com.br/reader038/viewer/2022102909/568131ae550346895d981c15/html5/thumbnails/7.jpg)
7
ROTEIROROTEIRO
3 Servidor e cliente de instâncias de classes
4 Aplicativo Tic Tac Toe Game
1 Conceitos Básicos sobre Redes2 Programação Cliente-Servidor
![Page 8: Programação Orientada a Objetos – SCC0204 Prof.: Fernando V. Paulovich](https://reader038.vdocuments.com.br/reader038/viewer/2022102909/568131ae550346895d981c15/html5/thumbnails/8.jpg)
8
Programação Cliente-ServidorProgramação Cliente-Servidor2
Uma aplicação cliente-servidor em Java segue um padrão simples de desenvolvimento
Imaginemos uma aplicação onde o cliente deva recuperar uma linha de texto enviada pelo servidor (a linha de texto pode conter a hora local, uma cotação de moeda, etc.).
![Page 9: Programação Orientada a Objetos – SCC0204 Prof.: Fernando V. Paulovich](https://reader038.vdocuments.com.br/reader038/viewer/2022102909/568131ae550346895d981c15/html5/thumbnails/9.jpg)
9
Programação Cliente-ServidorProgramação Cliente-Servidor2
O algoritmo do cliente e do servidor para leitura e processamento de uma String.
![Page 10: Programação Orientada a Objetos – SCC0204 Prof.: Fernando V. Paulovich](https://reader038.vdocuments.com.br/reader038/viewer/2022102909/568131ae550346895d981c15/html5/thumbnails/10.jpg)
10
Programação Cliente-ServidorProgramação Cliente-Servidor2
O primeiro passo do algoritmo (a criação de uma conexão) é feita pela criação de uma instância da classe Socket.
Podemos obter uma stream de entrada a partir da instância de Socket (usando o método getInputStream).
Solicitamos a leitura, e o servidor criará esta string para ser enviada quando for requisitado, imprimimos a string lida e fechamos a stream e a conexão.
![Page 11: Programação Orientada a Objetos – SCC0204 Prof.: Fernando V. Paulovich](https://reader038.vdocuments.com.br/reader038/viewer/2022102909/568131ae550346895d981c15/html5/thumbnails/11.jpg)
11
Programação Cliente-ServidorProgramação Cliente-Servidor2
Exemplo
O serviço daytime é registrado na porta 13 e retorna, quando conectado e solicitado, uma string contendo a data e hora do servidor.
O protocolo de comunicação com um servidor destes é, então, muito simples: basta estabelecer a conexão, ler uma única string e encerrar a conexão.
![Page 12: Programação Orientada a Objetos – SCC0204 Prof.: Fernando V. Paulovich](https://reader038.vdocuments.com.br/reader038/viewer/2022102909/568131ae550346895d981c15/html5/thumbnails/12.jpg)
12
Programação Cliente-ServidorProgramação Cliente-Servidor2
Esta classe implementa um cliente simples para o serviço daytime (porta 13).
![Page 13: Programação Orientada a Objetos – SCC0204 Prof.: Fernando V. Paulovich](https://reader038.vdocuments.com.br/reader038/viewer/2022102909/568131ae550346895d981c15/html5/thumbnails/13.jpg)
13
Programação Cliente-ServidorProgramação Cliente-Servidor2
Esta classe implementa um servidor para o serviço daytime (porta 13).
![Page 14: Programação Orientada a Objetos – SCC0204 Prof.: Fernando V. Paulovich](https://reader038.vdocuments.com.br/reader038/viewer/2022102909/568131ae550346895d981c15/html5/thumbnails/14.jpg)
14
Programação Cliente-ServidorProgramação Cliente-Servidor2
Exercicio
De acordo com a classe ServidorDeDaytime.java do slide anterior implemente o método processaConexão(), compile e execute o código do Servidor em seguida compile e execute o código da classe ClienteDeDaytime.java.
![Page 15: Programação Orientada a Objetos – SCC0204 Prof.: Fernando V. Paulovich](https://reader038.vdocuments.com.br/reader038/viewer/2022102909/568131ae550346895d981c15/html5/thumbnails/15.jpg)
15
ROTEIROROTEIRO
4 Aplicativo Tic Tac Toe Game
1 Conceitos Básicos sobre Redes
Programação Cliente-Servidor2
3 Servidor e cliente de instâncias de classes
![Page 16: Programação Orientada a Objetos – SCC0204 Prof.: Fernando V. Paulovich](https://reader038.vdocuments.com.br/reader038/viewer/2022102909/568131ae550346895d981c15/html5/thumbnails/16.jpg)
16
Servidor e cliente de instâncias de classesServidor e cliente de instâncias de classes3
Como podemos escrever um servidor para servir instâncias de classes em Java?
O cliente também deverá ser capaz de receber do servidor estas instâncias.
Vamos usar a classe Livro para criar as instâncias que serão enviadas.
![Page 17: Programação Orientada a Objetos – SCC0204 Prof.: Fernando V. Paulovich](https://reader038.vdocuments.com.br/reader038/viewer/2022102909/568131ae550346895d981c15/html5/thumbnails/17.jpg)
17
Servidor e cliente de instâncias de classesServidor e cliente de instâncias de classes3
Classe Livro
![Page 18: Programação Orientada a Objetos – SCC0204 Prof.: Fernando V. Paulovich](https://reader038.vdocuments.com.br/reader038/viewer/2022102909/568131ae550346895d981c15/html5/thumbnails/18.jpg)
18
Servidor e cliente de instâncias de classesServidor e cliente de instâncias de classes3
O protocolo de comunicação entre o servidor e o cliente de instâncias da classe Livro está mostrado na abaixo.
![Page 19: Programação Orientada a Objetos – SCC0204 Prof.: Fernando V. Paulovich](https://reader038.vdocuments.com.br/reader038/viewer/2022102909/568131ae550346895d981c15/html5/thumbnails/19.jpg)
19
Servidor e cliente de instâncias de classesServidor e cliente de instâncias de classes3
ServidorDeLivros.java
![Page 20: Programação Orientada a Objetos – SCC0204 Prof.: Fernando V. Paulovich](https://reader038.vdocuments.com.br/reader038/viewer/2022102909/568131ae550346895d981c15/html5/thumbnails/20.jpg)
20
Servidor e cliente de instâncias de classesServidor e cliente de instâncias de classes3
Continuação... método processaConexão() da classe ServidorDeLivros.java.
![Page 21: Programação Orientada a Objetos – SCC0204 Prof.: Fernando V. Paulovich](https://reader038.vdocuments.com.br/reader038/viewer/2022102909/568131ae550346895d981c15/html5/thumbnails/21.jpg)
21
Servidor e cliente de instâncias de classesServidor e cliente de instâncias de classes3
ClienteDeLivros.java
![Page 22: Programação Orientada a Objetos – SCC0204 Prof.: Fernando V. Paulovich](https://reader038.vdocuments.com.br/reader038/viewer/2022102909/568131ae550346895d981c15/html5/thumbnails/22.jpg)
22
Servidor e cliente de instâncias de classesServidor e cliente de instâncias de classes3
Ao invés de usar uma instância de BufferedReader para “ler” dados do servidor, iremos usar uma instância de ObjectInputStream.
Existe uma outra diferença entre este cliente e outros: este deve, obrigatoriamente, ter um bloco catch para processar a exceção ClassNotFoundException, que será criada caso a classe cuja instância desejamos recuperar não existir do lado do cliente.
![Page 23: Programação Orientada a Objetos – SCC0204 Prof.: Fernando V. Paulovich](https://reader038.vdocuments.com.br/reader038/viewer/2022102909/568131ae550346895d981c15/html5/thumbnails/23.jpg)
23
ROTEIROROTEIRO
1 Conceitos Básicos sobre Redes
Programação Cliente-Servidor2
Servidor e cliente de instância de classes3
4 Aplicativo Tic Tac Toe Game
![Page 24: Programação Orientada a Objetos – SCC0204 Prof.: Fernando V. Paulovich](https://reader038.vdocuments.com.br/reader038/viewer/2022102909/568131ae550346895d981c15/html5/thumbnails/24.jpg)
24
Aplicativo Tic Tac Toe GameAplicativo Tic Tac Toe Game4
O aplicativo do jogo Tic Tac Toe ou Jogo da velha como é conhecido popularmente será desenvolvido utilizando um servidor e vários clientes conectados simultaneamente, cada cliente tem a sua vez de interagir com o servidor. Os clientes são dependentes.
Este aplicativo ilustra o papel de um servidor como mediador em um jogo.
O jogo-da-velha é um bom exemplo: dois jogadores, através dos seus clientes,se conectam com o servidor, e um depois do outro, enviam comandos para este.
![Page 25: Programação Orientada a Objetos – SCC0204 Prof.: Fernando V. Paulovich](https://reader038.vdocuments.com.br/reader038/viewer/2022102909/568131ae550346895d981c15/html5/thumbnails/25.jpg)
25
Além de receber e processar os movimentos feitos pelos clientes, o servidor é responsável por analisar estes movimentos:
- Verificar se eles são válidos,
- informar os jogadores dos movimentos de ambos
- determinar quando o jogo tiver um vencedor
- Encerrar as conexões com os clientes
Aplicativo Tic Tac Toe GameAplicativo Tic Tac Toe Game4
![Page 26: Programação Orientada a Objetos – SCC0204 Prof.: Fernando V. Paulovich](https://reader038.vdocuments.com.br/reader038/viewer/2022102909/568131ae550346895d981c15/html5/thumbnails/26.jpg)
26
O protocolo de interação entre os clientes e o servidor é mostrado na Figura.
Aplicativo Aplicativo Tic Tac Tic Tac Toe GameToe Game
4
![Page 27: Programação Orientada a Objetos – SCC0204 Prof.: Fernando V. Paulovich](https://reader038.vdocuments.com.br/reader038/viewer/2022102909/568131ae550346895d981c15/html5/thumbnails/27.jpg)
27
Classe ServidorDeJogoDaVelha.java
Aplicativo Tic Tac Toe GameAplicativo Tic Tac Toe Game4
![Page 28: Programação Orientada a Objetos – SCC0204 Prof.: Fernando V. Paulovich](https://reader038.vdocuments.com.br/reader038/viewer/2022102909/568131ae550346895d981c15/html5/thumbnails/28.jpg)
28
Método main()
Aplicativo Tic Tac Toe GameAplicativo Tic Tac Toe Game4
![Page 29: Programação Orientada a Objetos – SCC0204 Prof.: Fernando V. Paulovich](https://reader038.vdocuments.com.br/reader038/viewer/2022102909/568131ae550346895d981c15/html5/thumbnails/29.jpg)
29
Fim do método main()
Aplicativo Tic Tac Toe GameAplicativo Tic Tac Toe Game4
![Page 30: Programação Orientada a Objetos – SCC0204 Prof.: Fernando V. Paulovich](https://reader038.vdocuments.com.br/reader038/viewer/2022102909/568131ae550346895d981c15/html5/thumbnails/30.jpg)
30
Método processaJogo()
Aplicativo Tic Tac Toe GameAplicativo Tic Tac Toe Game4
![Page 31: Programação Orientada a Objetos – SCC0204 Prof.: Fernando V. Paulovich](https://reader038.vdocuments.com.br/reader038/viewer/2022102909/568131ae550346895d981c15/html5/thumbnails/31.jpg)
31
Aplicativo Tic Tac Toe GameAplicativo Tic Tac Toe Game4
Continuação do método processaJogo()
![Page 32: Programação Orientada a Objetos – SCC0204 Prof.: Fernando V. Paulovich](https://reader038.vdocuments.com.br/reader038/viewer/2022102909/568131ae550346895d981c15/html5/thumbnails/32.jpg)
32
Fim do método processaJogo()
Aplicativo Tic Tac Toe GameAplicativo Tic Tac Toe Game4
![Page 33: Programação Orientada a Objetos – SCC0204 Prof.: Fernando V. Paulovich](https://reader038.vdocuments.com.br/reader038/viewer/2022102909/568131ae550346895d981c15/html5/thumbnails/33.jpg)
33
Método mostraTabuleiro()
Aplicativo Tic Tac Toe GameAplicativo Tic Tac Toe Game4
![Page 34: Programação Orientada a Objetos – SCC0204 Prof.: Fernando V. Paulovich](https://reader038.vdocuments.com.br/reader038/viewer/2022102909/568131ae550346895d981c15/html5/thumbnails/34.jpg)
34
Método verificaVencedor()
Aplicativo Tic Tac Toe GameAplicativo Tic Tac Toe Game4
![Page 35: Programação Orientada a Objetos – SCC0204 Prof.: Fernando V. Paulovich](https://reader038.vdocuments.com.br/reader038/viewer/2022102909/568131ae550346895d981c15/html5/thumbnails/35.jpg)
35
Fim do método verificaVencedor()
Aplicativo Tic Tac Toe GameAplicativo Tic Tac Toe Game4
![Page 36: Programação Orientada a Objetos – SCC0204 Prof.: Fernando V. Paulovich](https://reader038.vdocuments.com.br/reader038/viewer/2022102909/568131ae550346895d981c15/html5/thumbnails/36.jpg)
36
Fim do método enviaMensagem()
Aplicativo Tic Tac Toe GameAplicativo Tic Tac Toe Game4
![Page 37: Programação Orientada a Objetos – SCC0204 Prof.: Fernando V. Paulovich](https://reader038.vdocuments.com.br/reader038/viewer/2022102909/568131ae550346895d981c15/html5/thumbnails/37.jpg)
37
Um exemplo de interação de um cliente (telnet) com o servidor de jogo-da-velha pode ser visto na Figura abaixo.
Aplicativo Tic Tac Toe GameAplicativo Tic Tac Toe Game4
![Page 38: Programação Orientada a Objetos – SCC0204 Prof.: Fernando V. Paulovich](https://reader038.vdocuments.com.br/reader038/viewer/2022102909/568131ae550346895d981c15/html5/thumbnails/38.jpg)
FIMFIM