Possível projeto de PEOO por mim, Jeff Safadão e Wayne.
Eu fico com a parte de expressões regulares (regexp), o Wayne com a parte de banco de dados (BD) e o Safadão com a interface com o usuário.
A gente vai falar com o professor sobre esse projeto, ainda mais porque ele contém várias partes (regexp, interface gráfica, acesso com direito a modificação a BD genérico xml, teoria dos grafos, AAA [Authentication, Authorization and Accounting])
Segue aí abaixo
ps.: "distância amíguica"-> distância em quantidade de amigos; é 0 pra
se mesmo e infinito pra quem num tem rede social compatível
Ela seria composta da seguinte maneira:
a- nela existiriam dois tipos de objetos: pessoas e mensagens
(possivelmente no futuro comunidade, mas não vêm ao caso)
b- o objeto pessoa teria os seguintes atributos:
--> um nickname/email como uma string (chave primária; deve ser
única para cada pessoa) (PRIVADO)
--> uma senha (extremamente PRIVADO)
--> um nome "normal" como uma string ASCII (chave secundária; pode
repetir com o de outra pessoa; nome normal como "Jefferson Quesado
Neto"; "Jefferson Rodrigo Safadao"; "Raul srto. Ue1ne")
--> uma lista de amigos (um vetor com apontadores de pessoas =p se
você quiser tirar a graça de procurar pelo amigo; um vetor com as
chaves primárias dos amigos =D se você quiser programar um BD mais
simples)
--> uma lista das mensagens escritas
--> uma lista das mensagens recebidas
c- o objeto pessoa poderia fazer as seguintes ações (ou "ter os
seguintes métodos", só que só mais pro final do curso de PEOO):
--> procurar por um nome em uma dada "distância amíguica" (aqui onde
entra regexp, só que só depois de uma teoria dos grafos fudida)
--> escrever uma mensagem (aqui entra um banco de dados mais fudido
do que se poderia imaginar)
--> deletar uma mensgem (banco de dados ainda mais escroto! atenção
que apenas o escritor ou o destinatário poderiam apagar mensagens)
--> pedir pra ser adicionado (o velho "me add aí, má!"; banco de
dados FUDEROSOOOOO)
--> aceitar ou recusar pedidos de adicionamento (alguém tá vendo BD
com brain fuck de novo?)
--> excluir a própria conta (oh my gosh! it's database brain rape)
--> convidar uma pessoa de fora (por isso o email; mas nosso
programa AINDA não vai ter a capacidade de mandar emails por questões
técnicas e têmpicas e ricárdicas)
--> mudar o nome comum (BD...)
--> mudar a senha (puts, se fudeu Raul!, tem muita coisa de BD)
d- o objeto mensagem não poderia fazer nada, mas teria os seguintes atributos:
--> o escritor (a chave primária do escritor)
--> o destinatário (a chave primária do destinatário)
--> corpo da mensagem (com limite de alguns caracteres, para evitar
que pessoas mal intencionadas ataquem o BD com overflood de
informações)
e- mais um detalhe do objeto mensagem:
==> ele deve ser identificado da seguinte maneira (ou
modo de construção da chave primária):
==> {nickname/email do
escritor}.{nickname/email do destinatário}.{um número com o "peso" da
string de mensagem}.{um número sequencial}
==> admitindo sistemas de nicks: se eu (jeffque)
mandar a mensagem "atchim" para o Safadão (saf_rodrigo), a chave
primária da mensagem começaria assim ("header" da mensagem):
"jeffque.saf_rodrigo.630"
o último item só seria definido depois de ver se
existisse alguma outra mensagem com esse header...
se existissem outras três mensagens com esse mesmo
header, essa mensagem teria a chave primária como sendo:
"jeffque.saf_rodrigo.630.0004"
ou algo assim
f- a pessoa teria que se logar para fazer essas coisas, aí entra a
parte de interface gráfica:
--> no começo, pediria login e senha (login, nesse caso, seria a
chave primária da pessoa)
--> após receber o login e a senha, entra em contato com o banco de
dados e pergunta se são compatíveis
--> se não são, volta pra tela de login e dá um alerta que não
acertou a senha ou que o login é incorreto
--> se acertou, começa a brincadeira:
==> abre a tela de apresentação, dizendo se e quais pessoas
pediram pra ser adicionadas
==> abre uma aba com os recados recebidos (tela base)
==> abre uma aba com a lista de amigos (tela base)
==> abre uma aba de pesquisa (tela base)
==> abre uma aba para visualizar o próprio perfil (tela base)
--> além da tela de apresentação, existem mais alguns tipos de tela:
==> tela de recados:
>>> mostra uma certa quantidade de recados
>>> dá opções pra ir pras mensagens mais antigas ou mais recentes
>>> se a pessoa que estiver acessando essa página for
escritor/destinatário da mensagem, mostra a opção "excluir"
>>> opção de enviar recado
=======++++=====
muito cuidado com isso, pois deve impedir
usuários maliciosos de sobrecarregarem o
BD com mensagens muito grandes!!
=======++++=====
==> tela de pessoa:
>>> aba para adicionar/excluir amigo (ou nada, caso seja a
própria pessoa vendo o próprio perfil)
>>> aba para acessar recados
>>> aba para acessar lista de amigas
==> tela de pesquisa:
>>> aba para definir a "distância amíguica" de pesquisa
>>> canto para colocar o nome de pesquisa
=======++++=====
nesse caso, esse nome de pesquisa
seria substituído por uma regexp de um outro
BD (o BD com as possíveis "miss-spelling" de nomes)
possivelmente, aceitar um matching parcial de regexp
com string de nome
=======++++=====
>>> se já fez a pesquisa, mostrar quais pessoas achou
(ordenando por grau de parentesco) como se contivesse uma "tela de
lista de amigos" abaixo da tela de pesquisa
==> tela de lista de amigos:
>>> uma simples listagem com os nomes (e hyperlinks pro
"perfil" delas, claro)
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário