Probleminha OOAD (DDD Repositórios)  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
FredMP
JavaBaby
[Avatar]

Membro desde: 08/04/2006 19:46:24
Mensagens: 92
Localização: São Pedro da Aldeia - RJ
Offline

rodrigoy wrote:c. Faço uma query na UI usando Scriptlet...

Nem tinha reparado nessa opção!

rodrigoy wrote:
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!


Acredite... esse requisito irá aparecer logo logo!
[Email] [MSN]
MarceloAraujo
What is classpath?
[Avatar]

Membro desde: 01/05/2008 20:08:30
Mensagens: 6
Localização: Rio de Janeiro
Offline

rodrigoy wrote:
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.


Ok. A minha intenção foi dizer q nenhum dos 2 repositórios parece ser o responsável por responder quais quartos estão disponíveis num período de tempo. Isso partindo do princípio que vão existir os 2 repositórios que você mencionou e que TodosQuartos conhece apenas os Quartos que o hotel tem e TodasReservas conhece apenas Reservas e seus respectivos Quartos reservados.

Faz sentido todasReservas saber algo sobre os quartos q não estão reservados, num determinado período de tempo?
Ou então todosQuartos saber algo sobre período de tempo, que é uma característica de reserva?

Sendo assim você vai precisar de alguém que assuma a responsabilidade de subtrair os ""quartos reservados para o período informado", da "listagem geral de quartos do hotel" e com isso ter em mãos a lista de quartos disponíveis para o período. Ou seja, alguém que tenha acesso aos 2 repositórios que você criou ou alguém que assuma a responsabilidade de lidar com os dois domínios (Reserva e Quarto) quando eles estão associados e também quando não estão.

Pelo menos é o que me vem a mente agora

Marcelo C. Araújo
http://twitter.com/marceloaraujo
http://www.timebox.com.br

[WWW]
fantomas
GUJ Master
[Avatar]

Membro desde: 24/04/2008 16:10:55
Mensagens: 1506
Localização: Terra (maior parte do tempo)
Offline

Quando alguem quer fazer uma viagem e está enteressado em fazer uma reserva fala com quem no hotel?

Setor / departamento / alguem / etc... que cuida das reservas certo? Me avise se eu estiver enganado.

Portanto a minha primeira intenção seria colocar esta responsabilidade no repositório que controla as reservas.

flws
Link_pg
JavaEvangelist
[Avatar]

Membro desde: 28/04/2006 00:17:38
Mensagens: 413
Localização: Praia Grande / São Paulo - SP
Offline

Olá!

Imaginemos como isso seria feito manualmente: um quadro na parede com vários quadradinhos, cada um representando um quarto existente no hotel. Em cada quadradinho, haveria 3 informações básicas: o número do quarto, o tipo (simplesinho, fodão, mais ou menos) e o preço da diária.
_________________
|__|__|__|__|__|__|
|__|__|__|__|__|__|
|__|__|__|__|__|__|

Beleza, agora imagine que quando alguém vai lá e pede pra reservar o quarto, a moça da recepção pegue um post-it e escreva: o nome do cara que reservou e o período da reserva. Após fazer isso, ela vai no quadradinho que representa o quarto que o fulano escolheu e cola o post-it.

Como ela faria pra dizer quais quartos estão disponíveis? Contaria todos os quadradinhos que não houvessem post-it's colados. Agora, tirando o meu da reta, como traduzir isso pro sistema? aheuheauauhe

Uma pergunta: o quarto terá uma reserva ou uma reserva terá um quarto?

Abraços

This message was edited 1 time. Last update was at 12/08/2009 09:37:37


Eduardo Felipe Vieira

Blog de Tecnologia!
Outro blog meu legal também mas não é de TI.



"Nós poderíamos ser muito melhores se não quiséssemos ser tão bons."
[Email] [WWW] [MSN]
fantomas
GUJ Master
[Avatar]

Membro desde: 24/04/2008 16:10:55
Mensagens: 1506
Localização: Terra (maior parte do tempo)
Offline

link_pg wrote:Olá!

Imaginemos como isso seria feito manualmente: um quadro na parede com vários quadradinhos, cada um representando um quarto existente no hotel. Em cada quadradinho, haveria 3 informações básicas: o número do quarto, o tipo (simplesinho, fodão, mais ou menos) e o preço da diária.
_________________
|__|__|__|__|__|__|
|__|__|__|__|__|__|
|__|__|__|__|__|__|

Beleza, agora imagine que quando alguém vai lá e pede pra reservar o quarto, a moça da recepção pegue um post-it e escreva: o nome do cara que reservou e o período da reserva. Após fazer isso, ela vai no quadradinho que representa o quarto que o fulano escolheu e cola o post-it.

Como ela faria pra dizer quais quartos estão disponíveis? Contaria todos os quadradinhos que não houvessem post-it's colados. Agora, tirando o meu da reta, como traduzir isso pro sistema? aheuheauauhe

Uma pergunta: o quarto terá uma reserva ou uma reserva terá um quarto?


Gostei...primeiro o negócio (o sistema) depois a tecnologia. Seria ótimo se alguem soubesse como a coisa toda funciona na realidade.

Respondendo: Na minha opinião, detesto ter que "achar" alguma coisa em sistemas mas vamos lá senão não tem brincadeira, a reserva é uma entidade constituida pela uma associação do quarto com "quem" é dono da reserva (fora outros detalhes). O quarto "X" tem uma reserva seria uma resposta "construida/deduzida" pelo modelo. Na verdade os quadradinhos (idéia bacana essa) seriam as reservas ao meu ver.

flws
luistiagos
GUJ Expert
[Avatar]

Membro desde: 10/07/2006 10:37:23
Mensagens: 3009
Offline

Realmente acho que a opção 1 seria a mais correta...
pois a reserva pode tornar um quarto indisponivel... a reserva conhece o quarto e o quarto não conhece a reserva porem ele pode saber se ele (o quarto) esta ou não disponivel. E vejamos o seguinte... mesmo que não esta no escopo que uma manutenção por exemplo possa indisponibilizar um quarto hoje... nada impede que amanha este requisito apareça... e se deixarmos esta responsabilidade para a reserva se um dia surgir a manutenção tamo tudo fu***... pois a manutenção desta arquitetura nos dara mais dor de cabeça... Não se pode esquecer que um dos requisitos de uma boa app é ela ter a capacidade de extensão e nunca de alteração...




SCJP 1.5
SCJA 1.0
IBM DB2 Associate
[Email] [MSN]
king_of_gods
JavaTeenager

Membro desde: 28/03/2007 14:28:11
Mensagens: 185
Offline

1º Opção.

Como já falaram o quarto tem que saber responder se ele está ocupado ou não.
rodrigoy
GUJ Ranger
[Avatar]

Membro desde: 18/04/2006 01:06:28
Mensagens: 758
Localização: São Paulo
Offline

MarceloAraujo wrote:
Sendo assim você vai precisar de alguém que assuma a responsabilidade de subtrair os ""quartos reservados para o período informado", da "listagem geral de quartos do hotel" e com isso ter em mãos a lista de quartos disponíveis para o período. Ou seja, alguém que tenha acesso aos 2 repositórios que você criou ou alguém que assuma a responsabilidade de lidar com os dois domínios (Reserva e Quarto) quando eles estão associados e também quando não estão.


A pergunta é: As reservas (que podem ser abstraídas como uma caixinha com Index Cards que ficam lá na recepção) conhecem todos os quartos?

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
[WWW]
rodrigoy
GUJ Ranger
[Avatar]

Membro desde: 18/04/2006 01:06:28
Mensagens: 758
Localização: São Paulo
Offline

Link_pg wrote:
Imaginemos como isso seria feito manualmente: um quadro na parede com vários quadradinhos, cada um representando um quarto existente no hotel....


Link, não vejo que é uma boa opção persarmos em Domain-Driven só imaginando como o usuário faria na mão. Isso vai gerar abstrações pobres na minha opinião.

Mas na sua idéia, quem saberia se o quarto está reservado ou não para um período? A caixinha que representa o quarto ou os post-its?

Imaginem o conjunto de quartos como os quartos fisicos mesmo (aonde estão as camas, o frigobar e etc...). Eles sabem se as reservas existem ou não?

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
[WWW]
rodrigoy
GUJ Ranger
[Avatar]

Membro desde: 18/04/2006 01:06:28
Mensagens: 758
Localização: São Paulo
Offline

luistiagos wrote:Realmente acho que a opção 1 seria a mais correta...pois a reserva pode tornar um quarto indisponivel... a reserva conhece o quarto e o quarto não conhece a reserva porem ele pode saber se ele (o quarto) esta ou não disponivel.


Não pode não... isso pode gerar uma dependência desnecessária.

luistiagos wrote:
E vejamos o seguinte... mesmo que não esta no escopo que uma manutenção por exemplo possa indisponibilizar um quarto hoje... nada impede que amanha este requisito apareça... e se deixarmos esta responsabilidade para a reserva se um dia surgir a manutenção tamo tudo fu***...


E aquele papo esperto de YAGNI? Simplicidade?

luistiagos wrote:
pois a manutenção desta arquitetura nos dara mais dor de cabeça... Não se pode esquecer que um dos requisitos de uma boa app é ela ter a capacidade de extensão e nunca de alteração...




Introduzir dependência desnecessária é o que ferra a sua arquitetura... O quarto, no mundo real, nunca sabe se ele está em manutenção ou não (o diagrama acima não muda o problema original, só postei aqui como ficaria a solução menos acoplada para a questão "quartos em manutenção" - não vamos complicar ainda mais a discussão).

Saber os quartos disponíveis tem mais a ver com quartos ou com Reservas?

This message was edited 1 time. Last update was at 12/08/2009 13:56:43


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
[WWW]
tnaires
GUJ Master
[Avatar]

Membro desde: 22/12/2003 08:05:58
Mensagens: 1634
Localização: Natal - RN
Offline

rodrigoy wrote:Saber os quartos disponíveis tem mais a ver com quartos ou com Reservas?

Acho que tem mais a ver com reservas. Ao contrário da maioria, não acho adequado um quarto saber se está reservado ou não. Fico com a opção dois.

Tarso Nunes Aires

Blog - http://cabritin.wordpress.com/
Delicious - http://delicious.com/tnaires
Twitter - @tnaires

fantomas
GUJ Master
[Avatar]

Membro desde: 24/04/2008 16:10:55
Mensagens: 1506
Localização: Terra (maior parte do tempo)
Offline

rodrigoy ,

Acho que o luistiagos se referiu a manutenção do sistema e não ao quarto do hotel.


flws
rodrigoy
GUJ Ranger
[Avatar]

Membro desde: 18/04/2006 01:06:28
Mensagens: 758
Localização: São Paulo
Offline

luistiagos wrote:
E vejamos o seguinte... mesmo que não esta no escopo que uma manutenção por exemplo possa indisponibilizar um quarto hoje... nada impede que amanha este requisito apareça... e se deixarmos esta responsabilidade para a reserva se um dia surgir a manutenção tamo tudo fu***...


Não não, fantomas, ele foi claro, certo luistiagos?

(inclusive naquela parte do fu****)

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
[WWW]
fantomas
GUJ Master
[Avatar]

Membro desde: 24/04/2008 16:10:55
Mensagens: 1506
Localização: Terra (maior parte do tempo)
Offline

Verdade, havia me esquecido desta parte.

Valeu!
ercardoso
Debugger
[Avatar]

Membro desde: 28/09/2006 15:51:27
Mensagens: 59
Offline

Eu ficaria com o Repository de Reservas, considerando em minha opinião que temos Reservas com informações de quais os quartos reservados em determinados periodos.


http://vertocardoso.wordpress.com
[Email] [WWW]
 
Índice dos Fóruns » Arquitetura de Sistemas
Ir para:   
Powered by JForum 2.1.8 © JForum Team