| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/08/2009 16:45:53
|
rodrigoy
GUJ Ranger
![[Avatar]](/images/avatar/cf79ae6addba60ad018347359bd144d2.jpg)
Membro desde: 18/04/2006 01:06:28
Mensagens: 758
Localização: São Paulo
Offline
|
Amigos,
Motivado pelo post do Paulo sobre repositórios aqui no GUJ, quero fazer uma pergunta para saber a opinião e para vocês refletirem.
Imagine que você está fazendo um sistema de hotel (que é o estudo de caso do nosso curso OOAD com UML2. Se quiser, veja o documento de visão linkado (não é necessário ler o documento todo, mas quem tiver curiosidade em ver a "big picture")
Num determinado ponto do sistema há o seguinte requisito:
- Ao efetuar a reserva o sistema deverá exibir uma lista de quartos disponíveis para o período da estadia do hóspede.
Pergunta: Quem responde pela lista de quartos disponíveis para o período?
a. O repositório de Quartos?
b. O repositório de Reservas?
c. Faço uma query na UI usando Scriptlet...
Justifique sua resposta.
This message was edited 1 time. Last update was at 11/08/2009 16:48:20
|
Rodrigo Yoshima
www.ASPERCOM.com.br
Próximas Turmas:
São Paulo: Scrum 28/agosto | OOAD-UML 13/setembro
Débito Técnico Blog: blog.aspercom.com.br
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/08/2009 17:35:42
|
Ferryman
JavaGuru
![[Avatar]](/images/avatar/2e3907cbad887e6a1bea84d450b756db.jpg)
Membro desde: 26/10/2006 16:30:23
Mensagens: 220
Offline
|
Voto na Opção 1,
Pois julgo ser responsabilidade do quarto saber se ele está ocupado.
Parece mais intuitivo ler o código: TodosQuartos.getDisponiveis do que TodasReservas.getQuartosDisponiveis.
Se você tiver que procurar no sistema aonde está a regra para exibir os quartos disponíveis, minha primeira tentativa seria procurar algo relacionado com quarto, e não com reserva.
[]s
|
Rafael Farias Silva (@rafaferry)
Jsigner - Engenharia reversa automática através do maven. Acesse http://code.google.com/p/jsigner |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/08/2009 17:44:44
|
peerless
GUJ Master
![[Avatar]](/images/avatar/5b2a8f2b014bb326fd82ee313704e78c.jpg)
Membro desde: 22/01/2007 14:52:26
Mensagens: 1391
Localização: Porto Alegre / RS
Offline
|
Um quarto que controla o periodo em que ele ficará reservado ?
|
follow me
pitacos
"The most problems that teams face are about communication, and all the others are too." - Dan North
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/08/2009 18:00:07
|
rodrigoy
GUJ Ranger
![[Avatar]](/images/avatar/cf79ae6addba60ad018347359bd144d2.jpg)
Membro desde: 18/04/2006 01:06:28
Mensagens: 758
Localização: São Paulo
Offline
|
Pertinente a sua pergunta. Não o quarto não sabe (ou não precisaria saber) é algo assim:
(realmente o yuml.me é viciante)
|
Rodrigo Yoshima
www.ASPERCOM.com.br
Próximas Turmas:
São Paulo: Scrum 28/agosto | OOAD-UML 13/setembro
Débito Técnico Blog: blog.aspercom.com.br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/08/2009 18:07:02
|
tnaires
GUJ Master
![[Avatar]](/images/avatar/5f6371c9126149517d9ba475def53139.png)
Membro desde: 22/12/2003 08:05:58
Mensagens: 1678
Localização: Porto Alegre/RS - Natal/RN
Offline
|
Tenho uma dúvida: um quarto está indisponível quando está reservado? Ou apenas quando está ocupado?
This message was edited 2 times. Last update was at 11/08/2009 18:07:54
|
Tarso Nunes Aires
Blog - http://cabritin.wordpress.com/
Delicious - http://delicious.com/tnaires
Twitter - @tnaires
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/08/2009 18:30:46
|
rodrigoy
GUJ Ranger
![[Avatar]](/images/avatar/cf79ae6addba60ad018347359bd144d2.jpg)
Membro desde: 18/04/2006 01:06:28
Mensagens: 758
Localização: São Paulo
Offline
|
Quando está reservado, lógico! Veja que a pergunta é quartos disponíveis no período. Se há uma reserva futura para o quarto ele está reservado para aquele período.
|
Rodrigo Yoshima
www.ASPERCOM.com.br
Próximas Turmas:
São Paulo: Scrum 28/agosto | OOAD-UML 13/setembro
Débito Técnico Blog: blog.aspercom.com.br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/08/2009 18:43:24
|
Emerson Macedo
Virtual Machine Man
![[Avatar]](/images/avatar/360c19682e81f21d55846685c1701179.jpg)
Membro desde: 01/08/2006 16:55:28
Mensagens: 689
Localização: Rio de Janeiro - RJ
Offline
|
Eu implementaria de acordo com a opção 1.
Na opção 2, TodasReservas retornar uma lista de quartos não me parece muito intuitivo.
[]s
|
Emerson Macedo Leite
PMP - Ping-pong Master Player
CSM - Counter-Strile Manager
http://codificando.com
"Porque, assim como o relâmpago sai do oriente e se mostra até o ocidente, assim será também a vinda do filho do homem." - Mateus 24:27 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/08/2009 18:50:47
|
joellobo
Thread.start()
![[Avatar]](/images/avatar/7c3a966d88a80726a95c2e16e56c3997.jpg)
Membro desde: 27/08/2007 14:45:01
Mensagens: 33
Localização: Fortaleza/CE
Offline
|
Opção 1. O repositório TodasReservas poderia ter um método como getQuartosReservados(periodo):Quartos mas não getQuartosDisponiveis(periodo):Quartos. Apesar de ter exceções, como no exemplo do seu post (Yoshima), a regra 1 repository para cada aggregate está resolvendo a maioria dos meus problemas.
|
Joel Lobo
blogdojoellobo.blogspot.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/08/2009 18:55:10
|
rodrigoy
GUJ Ranger
![[Avatar]](/images/avatar/cf79ae6addba60ad018347359bd144d2.jpg)
Membro desde: 18/04/2006 01:06:28
Mensagens: 758
Localização: São Paulo
Offline
|
joellobo wrote:O repositório TodasReservas poderia ter um método como getQuartosReservados(periodo):Quartos mas não getQuartosDisponiveis(periodo):Quartos
Qual a diferença?
|
Rodrigo Yoshima
www.ASPERCOM.com.br
Próximas Turmas:
São Paulo: Scrum 28/agosto | OOAD-UML 13/setembro
Débito Técnico Blog: blog.aspercom.com.br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/08/2009 21:41:47
|
MarceloAraujo
What is classpath?
![[Avatar]](/images/avatar/f119102d0355bf1f5ec71ff016c84466.jpg)
Membro desde: 01/05/2008 20:08:30
Mensagens: 6
Localização: Rio de Janeiro
Offline
|
Não tem essa opção, mas...pq não hotel.getQuartosDisponiveis(periodo):Quartos ?
Parece ser mais coerente com o negócio e também com a OO.
|
Marcelo C. Araújo
http://twitter.com/marceloaraujo
http://www.timebox.com.br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/08/2009 21:55:39
|
bruno77sa
Thread.start()
Membro desde: 19/07/2005 20:12:53
Mensagens: 34
Offline
|
olá rodrigo,
eu não faria em nenhum repositorio apresentado, porque este requisito não esta em nenhum deles, veja:
1-O repostorio de quartos, representa uma colecao de quartos, pelo requisitos apresentados o que define se esta reservado ou não é a relacao de agregacao entre o mesmo e sua reserva, ou seja aqui não é o lugar, aqui só tenho minha caixa de quartos, não tenho informacão sobre reservas aqui.
2-daria pra fazer no repositorio de reservas, mas a ideia deste objeto no sistema seria representar apenas os quartos com reserva no periodo, e para atender esse requisito o repositorio de reservas deveria saber sobre todos os quartos, o que acredito que não seja o intuito do mesmo.
e agora? como resolver?
Service!!!!
outra versão!!
vamos as observacões
obs:1 desconsiderem esse meu codigo java, ha 3 anos que não mexo no bichinho,sei que tem erro ai!!
obs:2 desconsiderem os nomes dos metodos, pensei rapido aqui!!
obs:3 meu teclado disconfigurou aqui linux,por isso engoli os acentos!
bem essa é minha visão, eu faria desta forma, o que achas?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/08/2009 21:58:55
|
FredMP
JavaBaby
![[Avatar]](/images/avatar/5f0453f78909173a7ce2eb874d2a7f52.png)
Membro desde: 08/04/2006 19:46:24
Mensagens: 92
Localização: São Pedro da Aldeia - RJ
Offline
|
Eu acho que fica mais coerente TodosQuartos.getDisponiveis, opção 1.
Mas:
rodrigoy wrote:
joellobo wrote:O repositório TodasReservas poderia ter um método como getQuartosReservados(periodo):Quartos mas não getQuartosDisponiveis(periodo):Quartos
Qual a diferença?
Nesse caso acho que ele quis dizer que TodasReservas deve conhecer quartos relacionados a elas, as reservas. Portanto, apenas os quartos reservados. Mas, no fundo se vc sabe todos os reservados para um período, a principio, os que sobram são os disponíveis. Embora isso possa não ser de todo verdade, pois podem haver outras formas de se indisponibilizar um quarto além da reserva, como colocá-lo em manutenção ou interditá-lo talvez.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/08/2009 22:56:31
|
rodrigoy
GUJ Ranger
![[Avatar]](/images/avatar/cf79ae6addba60ad018347359bd144d2.jpg)
Membro desde: 18/04/2006 01:06:28
Mensagens: 758
Localização: São Paulo
Offline
|
MarceloAraujo wrote:Não tem essa opção, mas...pq não hotel.getQuartosDisponiveis(periodo):Quartos ?
Parece ser mais coerente com o negócio e também com a OO.
Marcelo, se você for nessa linha de pensamento um monte de coisas irão ser questionada para o Hotel. E outra: Já parou para pensar que isso é um Singleton? Quem dá a instância de Hotel?
Hotel é o domínio que estou modelando. Neste caso, me é estranho ter um elemento Hotel dentro do domínio Hotel.
|
Rodrigo Yoshima
www.ASPERCOM.com.br
Próximas Turmas:
São Paulo: Scrum 28/agosto | OOAD-UML 13/setembro
Débito Técnico Blog: blog.aspercom.com.br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/08/2009 23:04:15
|
rodrigoy
GUJ Ranger
![[Avatar]](/images/avatar/cf79ae6addba60ad018347359bd144d2.jpg)
Membro desde: 18/04/2006 01:06:28
Mensagens: 758
Localização: São Paulo
Offline
|
bruno77sa wrote:
1-O repostorio de quartos, representa uma colecao de quartos, pelo requisitos apresentados o que define se esta reservado ou não é a relacao de agregacao entre o mesmo e sua reserva, ou seja aqui não é o lugar, aqui só tenho minha caixa de quartos, não tenho informacão sobre reservas aqui.
É uma boa justificativa.
bruno77sa wrote:
2-daria pra fazer no repositorio de reservas, mas a ideia deste objeto no sistema seria representar apenas os quartos com reserva no periodo, e para atender esse requisito o repositorio de reservas deveria saber sobre todos os quartos, o que acredito que não seja o intuito do mesmo.
A Reserva depende de Quarto independente de Quartos estarem reservados ou não. Porém, quartos não sabem da existência de reservas.
bruno77sa wrote:
e agora? como resolver? Service!!!!
Service é transacional e sua execução tem efeito colateral, o que não acontece com o requisito solicitado. É só uma busca por informações. Você está modelando um novo repositório com nome de service.
|
Rodrigo Yoshima
www.ASPERCOM.com.br
Próximas Turmas:
São Paulo: Scrum 28/agosto | OOAD-UML 13/setembro
Débito Técnico Blog: blog.aspercom.com.br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/08/2009 23:08:39
|
rodrigoy
GUJ Ranger
![[Avatar]](/images/avatar/cf79ae6addba60ad018347359bd144d2.jpg)
Membro desde: 18/04/2006 01:06:28
Mensagens: 758
Localização: São Paulo
Offline
|
FredMP wrote:
rodrigoy em resposta a Joel wrote: Qual a diferença?
Nesse caso acho que ele quis dizer que TodasReservas deve conhecer quartos relacionados a elas, as reservas. Portanto, apenas os quartos reservados. Mas, no fundo se vc sabe todos os reservados para um período, a principio, os que sobram são os disponíveis.
Seu raciocínio está certo. No último diagrama que postei fica claro que reservas sabem da existência de quartos. A associação deixa a dependência explícita. O contrário é que não é verdade. Quartos não dependem de reserva.
FredMP wrote:
Embora isso possa não ser de todo verdade, pois podem haver outras formas de se indisponibilizar um quarto além da reserva, como colocá-lo em manutenção ou interditá-lo talvez.
Isso não está nos requisitos!
[piadinha](cada dia que passa eu vejo que não é o cliente que aumenta o escopo... são os programadores...) [/piada]
|
Rodrigo Yoshima
www.ASPERCOM.com.br
Próximas Turmas:
São Paulo: Scrum 28/agosto | OOAD-UML 13/setembro
Débito Técnico Blog: blog.aspercom.com.br
|
|
|
 |
|
|