Especificação dos
parâmetros, variáveis de estado, estímulos e interface de rede
Versão 2.1 (resultado da aula de 16.04.2002,
com algumas correcções em 08.05.2002)
Parâmetros
| Variáveis de estado | Estímulos | Critérios de Amizade | Interface | Interface de utilizador
Parâmetros (características invariantes)
Nome
|
Domínio
|
Identificacao |
Número inteiro positivo |
Sexo |
{feminino, masculino} |
Idade |
Número inteiro positivo |
Cor preferida |
{vermelho, laranja, amarelo, castanho, verde, azul, violeta, rosa,
branco, preto} |
Clube de futebol |
{guimaraes, braga, porto, boavista, benfica, sporting} |
Preferências: -
cinema -
teatro -
cafe -
desporto |
{sim, nao} {sim, nao} {sim, nao} {sim, nao} |
Nome |
Domínio |
Alegria |
[-10,10], valor inicial = 0 |
Grau de amizade(1) |
[-10,10], valor inicial = 0 |
Quantidade de amigos |
[0 ,¥[, valor inicial =
0 |
(1) Esta
variável tem a forma de um vector. Cada elemento do vector representa o grau de
amizade desta “pessoa” com cada uma das restantes. Cada elemento do vector é
composto pela identificação da outra “pessoa” e pelo respectivo grau de
amizade.
Nome |
Domínio |
Resposta |
Dar presente (cor) |
{vermelho, laranja, amarelo, castanho, verde, azul, violeta, rosa, branco, preto} |
{sim, nao}(2) |
Convidar (actividade) |
{cinema, teatro, cafe, desporto} |
{sim, nao}(3) |
Saudar |
- |
{sim, nao}(4) |
Conversar (tema) |
{cinema, teatro, cafe, desporto} |
{sim, nao}(5) |
(2) “sim”
representa que a oferta foi aceite.
(3) “sim”
representa que o convite foi aceite.
(4) “sim”
representa que a saudação foi devolvida.
(5) “sim”
representa que o tema foi aceite para conversa.
Especificação dos
critérios de amizade
Define-se que duas “pessoas” são amigas
quando as duas acumulam um total de 17 ou mais pontos, obtidos da seguinte
forma:
Têm a mesma cor preferida: |
1 ponto |
São do mesmo clube de futebol: |
2 pontos |
Têm preferências semelhantes: |
3 pontos por cada preferência igual |
Diferença de idade: 0
– 5 anos: 6
– 10 anos: 11
– 20 anos: >
21 anos |
3 pontos 2 pontos 1 ponto 0 pontos |
Grau de amizade (6): |
Variável, entre –10 e 10 pontos |
(6) A
variável de estado “Grau de amizade” tem inicialmente o valor zero, e varia ao
longo do tempo em função dos estímulos recebidos. A forma como cada “pessoa”
reage aos estímulos é livre.
A comunicação entre as diversas aplicações
deverá ser implementada através do protocolo HTTP.
A localização de cada aplicação será descrita
por um URL.
A lista com a localização de todas as aplicações
estará disponível em:
http://marte.dsi.uminho.pt/sd/aplicacoes.xml
e terá o seguinte formato:
<?xml version="1.0"
encoding="ISO-8859-1" standalone="yes"?>
<LISTA_APPLS>
<APPL>
<LOCATION>
http://host/aplicacao1.asp
</LOCATION>
<ID>
1
</ID>
</APPL>
<APPL>
<LOCATION>
http://host/aplicacao34.php
</LOCATION>
<ID>
34
</ID>
</APPL>
...
</LISTA_APPLS>
onde http://host/aplicacao34.asp representa o URL de cada uma das aplicações e onde 34 representa a
identificação (parâmetro identificacao) de cada aplicação.
Este exemplo mostra ainda que as aplicações
poderão ser desenvolvidas usando uma de várias tecnologias diferentes: ASP, PHP
ou JSP.
A localização de cada aplicação deverá ser
fornecida por cada um dos grupos no momento de entrega do trabalho. A
identificação será atribuída pelo docente.
A versão final desta lista estará disponível
no dia 16.05.2002, isto é, dois dias após a data limite de entrega dos
trabalhos. Até lá a lista poderá conter alguns URLs, de acordo com pedidos dos
alunos.
A comunicação entre as aplicações faz-se
através de pedidos HTTP com passagem de parâmetros usando o método GET.
O formato geral dos pedidos é o seguinte:
http://host/aplicacao.asp?id=...&tipo=...&nome=...&extra=...
onde:
id representa a identificação da aplicação que está a efectuar o pedido;
tipo = informação | estimulo
nome= sexo | idade | cor | clube | cinema |
teatro | cafe | desporto | alegria | amizade | amigos | todos | presente | convidar | saudar | conversar
extra = vermelho | laranja | amarelo | castanho
| verde | azul | violeta | rosa | branco | preto | cinema | teatro | cafe | desporto
Os valores do parâmetro “nome” a vermelho são
utilizados em pedidos de informação (tipo=informação), enquanto que os valores
a azul são utilizados para a emissão de estímulos (tipo=estimulo).
Os valores do parâmetro “extra” a verde são
utilizados para representar a cor de um presente (tipo=estimulo&nome=presente),
enquanto que os valores a amarelo são utilizados para representar um tipo de
convite (tipo=estimulo&nome=convidar) ou um tema de conversa
(tipo=estimulo&nome=conversar).
Cada aplicação deverá disponibilizar uma interface para acesso aos valores dos seus parâmetros e variáveis de estado.
Para isso, em resposta a um pedido HTTP do
tipo:
http://host/aplicacao1.asp?id=34&tipo=informacao&nome=todos
a aplicação 1 deve responder à aplicação 34
com um ficheiro XML com o seguinte formato:
<?xml version="1.0"
encoding="ISO-8859-1" standalone="yes"?>
<pessoa>
<informacao>
<identificacao>
(inteiro)
</identicacao>
<sexo>
(string)
</sexo>
<idade>
(inteiro)
</idade>
<cor>
(string)
</cor>
<clube>
(string)
</clube>
<cinema>
(string)
</cinema>
<teatro>
(string)
</teatro>
<cafe>
(string)
</cafe>
<desporto>
(string)
</desporto>
<alegria>
(inteiro)
</alegria>
<amizade>
(inteiro)
</amizade>
<amigos>
(inteiro)
</amigos>
</informacao>
</pessoa>
Uma aplicação deverá ainda ser capaz de
responder a pedidos do valor de apenas um parâmetro ou variável de estado:
http://host/aplicacao1.asp?id=34&tipo=informacao&nome=cor
que deve ter como resposta um ficheiro XML
com a seguinte estrutura:
<?xml version="1.0"
encoding="ISO-8859-1" standalone="yes"?>
<pessoa>
<informacao>
<cor>
(string)
</cor>
</informacao>
</pessoa>
A emissão de estímulos faz-se usando a
especificação geral descrita acima.
A resposta a um estímulo deve também ser um
ficheiro XML com a seguinte estrutura:
<?xml version="1.0"
encoding="ISO-8859-1" standalone="yes"?>
<pessoa>
<resposta>
string
</resposta>
</pessoa>
Por exemplo, a resposta ao estímulo:
http://host/aplicacao1.asp?id=34&tipo=estimulo&nome=convidar&extra=teatro
poderá ser:
<?xml version="1.0" encoding="ISO-8859-1"
standalone="yes"?>
<pessoa>
<resposta>
sim
</resposta>
</pessoa>
enquanto que a resposta ao estímulo:
http://host/aplicacao1.asp?id=34&tipo=estimulo&nome=saudar
poderá ser:
<?xml version="1.0" encoding="ISO-8859-1"
standalone="yes"?>
<pessoa>
<resposta>
nao
</resposta>
</pessoa>
A interface de utilizador de cada aplicação
deverá conter, no mínimo, os seguintes elementos:
-
um botão que permita iniciar o processo de
procura de amigos;
-
uma indicação do número actual de amigos