Quem bebeu a agua?

Perguntinha estilo tostines.
Considerando:

pessoa.bebeAgua(copo d'agua);
//ou
copo d'agua.matarSede(pessoa);

Qual a melhor forma de proceder?
Pessoalmente, desconsiderando demais aspectos do “sistema”, tanto faz.
Utilizaria pessoa.bebeAgua(), tem um tom ativo na coisa, soa mais natural .
Existe algum artigo sobre isso?

É só pensar na ação, o copo não vai pra boca sozinho.

[quote=faq]Perguntinha estilo tostines.
Considerando:

pessoa.bebeAgua(copo d'agua);
//ou
copo d'agua.matarSede(pessoa);

Qual a melhor forma de proceder?
Pessoalmente, desconsiderando demais aspectos do “sistema”, tanto faz.
Utilizaria pessoa.bebeAgua(), tem um tom ativo na coisa, soa mais natural .
Existe algum artigo sobre isso?[/quote]

Hummm.

public class Pessoa{

   public void beber(Liquido l){
         l.matarSede(this);
   }
}

As duas abordagens são possíveis em um mesmo caso (esqueminha mais ou menos semelhante a um Visitor). Mas, o que lhe parece mais intuitivo? (esta resposta vai determinar seu grau de sanidade mental!)

E ajudar a manter a saude mental de quem for trabalhar no seu sistema depois, tentnado entender por que diabos um copo d’agua voou na cara do sujeito :stuck_out_tongue:

E ajudar a manter a saude mental de quem for trabalhar no seu sistema depois, tentnado entender por que diabos um copo d’agua voou na cara do sujeito :P[/quote]

rsrsrsrs… tah certo que até tem nexo o pergunta… pq mexe um puco com modelagem… o exemplo do beber agua é q foi infeliz!!!

Eu discordo…achei esse exemplo muito interessante pra levar pra discussões sobre modelagem de sistemas, porque é intuitivo e dá margem às duas abordagens :wink:

Então vamos tornar as coisas mais divertidas. Se a pessoa ir a um bebedor? :mrgreen:

Acho que seria bém mais difíci modelar caso a pessoa estivesse morrendo afogada e engulisse água contra sua própria vontade! :?

for(;;){
   pessoa.beber(liquido);
}

hhhehehehehhe … chama a ambulancia q esse ai ta morrendo afogado . :mrgreen:

@editado:

Se bem que o matarSede colocado dentro do metodo ajuda o cara a sobreviver … :oops:

Eu escrevi:

…,soa mais natural. Essa é a ideia da coisa, ser o mais natural possivel.

Daniel Quirino:

Resposta exata, muito obrigado.
na realidade obreigado pela participação de todos(até mesmo os engraçadinhos :mrgreen: )
Algum link “bom de verdade” pra esse Visitor?

http://www.google.com.br/search?q=visitor+pattern

:smiley:

O google eu também conheço :mrgreen: . Dificil é separar o joio do trigo, por isso pedi um artigo “bom de verdade” sobre esse Visitor. Mesmo assim value…

Agua benta do inferno,

Bicho de sete cabeças … rsrsrs


http://www.dofactory.com/Patterns/PatternVisitor.aspx

primeiro e segundo link :smiley:

Mas bom mesmo seria um livro!

ressucitando…

isso seria mesma coisa que

cliente.grava()
ou
dao.grava(cliente)

certo?

a abordagem do dao não seria melhor neste caso?

Nao, nao existem camadas aqui, logo nao ha necessidade de um mapeador.

Micrófilo, a pergunta é: quem chama dao.grava( cliente )?

E, afinal, quem bebeu a porcaria da água?

[quote=microfilo]ressucitando…

isso seria mesma coisa que

cliente.grava()
ou
dao.grava(cliente)

certo?

a abordagem do dao não seria melhor neste caso?[/quote]

Aí depende, ser persistido em um banco de dados não é uma coisa natural, teve um tópico aqui que se discutiu sobre a transparência ou não da persistência.

A idéia do ActiveRecord é apenas implificar o trabalho com bancos de dados quando os objetos são iguais as tabelas, se você mexe muito com herança, relacionamentos 1:N e N:N o DAO é uma escolha muito melhor.

Dá uma olhada nesse livro do Fowler que foi nele que apareceu o ActiveRecord:

Então vc não recomenda o uso de DAOs? :shock:

No caso, é meio irrelevante… talvez uma action

PS: eu sei que o este é meu nick, mas me chamem de Rubem

Não acho irrelevante. Na verdade acho que é a coisa mais importante hehe quem manda qual mensagem pra quem.