[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico] [Índice de assunto]

Re: Igualdade e equivalência no EP



>      Considerando o seguinte trecho de código no contexto do EP:
>
> u := umWebMail usuarioComLogin: 'lebarion'.
> c1 := Conta novaConta: #SMTP noServidor:'smtp.ime.usp.br'
> comLogin:'lebarion' eSenha:'senha'.
> c2 := Conta novaConta: #SMTP noServidor:'smtp.ime.usp.br'
> comLogin:'lebarion' eSenha:'senha'
> umUsuario adicionaConta: c1.
> umUsuario removeConta: c2.

Hum... boa pergunta. Eu não havia pensado na questão de contas
equivalentes. Acredito que não seria nenhum pecado tratar c1 e c2 como
coisas distintas.

>      O usuário u deve ter alguma conta associada a ele no fim da
> última operação? Em caso negativo, qual é o comportamento esperado?
> Lançar uma exceção?

Essa foi uma outra coisa que ficou meio que em aberto na aula. Você
poderia deixar uma mensagem de erro no nosso "log" padrão (o
Transcript) ou poderia lançar uma exceção.

>      No caso geral, como deve ser feito o tratamento de erros no EP?
> Com exceções?

Fabio, o que você acha? Minha tendência é usar exceções para os erros
em que eu realmente quero que o cliente tome ciência de que algo não
foi muito bem e, esse caso, possivelmente, se encaixaria nisso. Para
lançar uma exceção é muito simples. Você cria uma subclasse de
Exception (ex: ContaInexistente) e lança com:

ContaInexistente new signal.

>      Dessa vez, espero que eu não tenha perguntado nada que já está no
> enunciado :o).

Definitivamente não está. :-)

Abraços,

--
Giuliano Mega <giuliano*ime:usp:br>