Aplicativo Tic Tac Toe Game

Propaganda
Programação Orientada a Objetos – SCC0204
Prof.: Fernando V. Paulovich
E-mail: [email protected]
Monitor PAE: Ricardo Ramos de Oliveira
E-mail: [email protected]
22 de Novembro de 2010
Universidade de São Paulo
ROTEIRO
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
2
ROTEIRO
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
3
1
Conceitos Básicos sobre Redes
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).
4
1
Conceitos Básicos sobre Redes
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.
5
1
Conceitos Básicos sobre Redes
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.
6
ROTEIRO
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
7
2
Programação Cliente-Servidor
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.).
8
2
Programação Cliente-Servidor
O algoritmo do cliente e do servidor para leitura e
processamento de uma String.
9
2
Programação Cliente-Servidor
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.
10
2
Programação Cliente-Servidor
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.
11
2
Programação Cliente-Servidor
Esta classe implementa um cliente simples para o serviço daytime (porta 13).
12
2
Programação Cliente-Servidor
Esta classe implementa um servidor para o serviço daytime (porta 13).
13
2
Programação Cliente-Servidor
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.
14
ROTEIRO
Conceitos Básicos sobre Redes
2 Programação Cliente-Servidor
1
3
Servidor e cliente de instâncias de classes
4
Aplicativo Tic Tac Toe Game
15
3
Servidor e cliente de instâncias de classes
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.
16
3
Servidor e cliente de instâncias de classes
Classe Livro
17
3
Servidor e cliente de instâncias de classes
O protocolo de comunicação entre o servidor e o cliente de instâncias da
classe Livro está mostrado na abaixo.
18
3
Servidor e cliente de instâncias de classes
ServidorDeLivros.java
19
3
Servidor e cliente de instâncias de classes
Continuação... método processaConexão() da classe
ServidorDeLivros.java.
20
3
Servidor e cliente de instâncias de classes
ClienteDeLivros.java
21
3
Servidor e cliente de instâncias de classes
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.
22
ROTEIRO
Conceitos Básicos sobre Redes
2 Programação Cliente-Servidor
1
3
Servidor e cliente de instância de classes
4
Aplicativo Tic Tac Toe Game
23
4
Aplicativo Tic Tac Toe Game
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.
24
4
Aplicativo Tic Tac Toe Game
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
25
4
Aplicativo
Tic Tac
Toe Game
O protocolo de
interação entre os
clientes e o servidor é
mostrado na Figura.
26
4
Aplicativo Tic Tac Toe Game
Classe ServidorDeJogoDaVelha.java
27
4
Aplicativo Tic Tac Toe Game
Método main()
28
4
Aplicativo Tic Tac Toe Game
Fim do método main()
29
4
Aplicativo Tic Tac Toe Game
Método processaJogo()
30
4
Aplicativo Tic Tac Toe Game
Continuação do método processaJogo()
31
4
Aplicativo Tic Tac Toe Game
Fim do método processaJogo()
32
4
Aplicativo Tic Tac Toe Game
Método mostraTabuleiro()
33
4
Aplicativo Tic Tac Toe Game
Método verificaVencedor()
34
4
Aplicativo Tic Tac Toe Game
Fim do método verificaVencedor()
35
4
Aplicativo Tic Tac Toe Game
Fim do método enviaMensagem()
36
4
Aplicativo Tic Tac Toe Game
Um exemplo de interação de um cliente (telnet) com o
servidor de jogo-da-velha pode ser visto na Figura
abaixo.
37
FIM
Download