Fórum Dúvida com POO #375735
08/10/2009
0
Nas últimas semanas me dediquei quase que exclusivamente ao estudo de padrões de projeto e OO em delphi.
Acho que vou adotar o padrão MVC, mas ainda tenho algumas dúvidas quanto a integração entre o formulário e a classe de negócios.
Vou dar um exemplo:
Imaginem a classe TExemplo com os atributos;
qtde;
valor;
valorTotal;
Agora imaginem que tenho um TForm com TDBEdits ligados a um ClientDataSet;
Imaginem que é necessário fazer determinada validação após informar a qtde (regra de negócio da classe TExemplo), e se a validação não der certo deve exibir uma mensagem e colocar o foco no DBEdit da qtde.
E o método salvar da minha classe deve fazer uma verificação se todos os campos obrigatórios foram preenchido, ao encontrar o primeiro deve exibir aviso e colocar o foco no campo que deve ser preenchido.
(A única duvida mesmo é encontra uma maneira pra passar o foco no campo que deve ser preenchido ou que foi preenchido incorretamente)
Como proceder nesse caso? criar um campo para cada DBEdit? (muito trabalhoso).
Acho que vou adotar o padrão MVC, mas ainda tenho algumas dúvidas quanto a integração entre o formulário e a classe de negócios.
Vou dar um exemplo:
Imaginem a classe TExemplo com os atributos;
qtde;
valor;
valorTotal;
Agora imaginem que tenho um TForm com TDBEdits ligados a um ClientDataSet;
Imaginem que é necessário fazer determinada validação após informar a qtde (regra de negócio da classe TExemplo), e se a validação não der certo deve exibir uma mensagem e colocar o foco no DBEdit da qtde.
E o método salvar da minha classe deve fazer uma verificação se todos os campos obrigatórios foram preenchido, ao encontrar o primeiro deve exibir aviso e colocar o foco no campo que deve ser preenchido.
(A única duvida mesmo é encontra uma maneira pra passar o foco no campo que deve ser preenchido ou que foi preenchido incorretamente)
Como proceder nesse caso? criar um campo para cada DBEdit? (muito trabalhoso).
Diegotiemann
Curtir tópico
+ 0
Responder
Post mais votado
09/10/2009
|Pq poucos trabalham OOP? Pq tem que pensar antes de começar e da mais
|trabalho.
Mas é necessário dizer tb q, quanto mais OO seu projeto, maiores os ganhos (mesmo q a médio/logo prazo). E, uma vez q se habitue, passa a ser tão rápido quanto RAD
|Mas uma coisa que eu vi foi o seguinte. Se levar a OOP ao extremo,
|Como aplicar MVC ou MVP agente perde o que o Delphi nos traz de
|melhor, que é os DataWare.
Contestável! Adeptos da OOP vão dizer q controles DataWare são exatamente o oposto :wink:
T+
|trabalho.
Mas é necessário dizer tb q, quanto mais OO seu projeto, maiores os ganhos (mesmo q a médio/logo prazo). E, uma vez q se habitue, passa a ser tão rápido quanto RAD
|Mas uma coisa que eu vi foi o seguinte. Se levar a OOP ao extremo,
|Como aplicar MVC ou MVP agente perde o que o Delphi nos traz de
|melhor, que é os DataWare.
Contestável! Adeptos da OOP vão dizer q controles DataWare são exatamente o oposto :wink:
T+
Afarias
Responder
Gostei + 1
Mais Posts
08/10/2009
Afarias
|Acho que vou adotar o padrão MVC,
MVC é um padrão q não se encaixa exatamente para aplicações Windows usando uma ferramenta como o Delphi... Dê uma olhada em MVP que é semelhante e mais adequado.
De qualquer forma, está começando pelo topo da montanha... rsss
|mas ainda tenho algumas dúvidas
|quanto a integração entre o formulário e a classe de negócios.
E a integração entre propriedades e os widgets
|Agora imaginem que tenho um TForm com TDBEdits ligados a um
|ClientDataSet;
MVC e controles DataWare???? MVC e DataSets???
|Imaginem que é necessário fazer determinada validação após informar a
|qtde (regra de negócio da classe TExemplo), e se a validação não der
|certo deve exibir uma mensagem e colocar o foco no DBEdit da qtde.
|E o método salvar da minha classe deve fazer uma verificação se todos
|os campos obrigatórios foram preenchido, ao encontrar o primeiro deve
|exibir aviso e colocar o foco no campo que deve ser preenchido.
Não. Salvar cuida apenas de persistir o objeto -- tá, pode cuidar de validar tb. Mas ele não tem qualquer relação com o os EDITS (não DBEdits) ou com o Form.
MVP (esqueça MVC) é: MODELO-VISÃO-APRESENTAÇÃO -- A apresentação possui uma série de Interactors q são responsáveis ai na ´conexão´ da visão com o modelo e é responsabilidade deles formatar a VISÃO (form/widgets) de forma a expressar o estado do modelo.
Consulte ´Model View Presenter´ no Google q deve encontrar artigos interessantes.
|Como proceder nesse caso? criar um campo para cada DBEdit? (muito
|trabalhoso).
Quem disse q OO é fácil?
Alguns toques:
1) DataSets/controles DataWare e padrões como MVC/MVP/MGM são meio q água e óleo. *A princípio* vc não mistura eles.
2) Comece estudando algo mais simples como ´Humble Dialog´ (http://c2.com/cgi/wiki?TheHumbleDialogBox) -- deve encontrar outras referências na Net
3) Existem alguns frameworks que implementam, mesmo q de forma mais simples, o padrão MVP ou o MGM como tiOPF, Infra e Jazz. Dê uma estudada neles para ter uma idéia como os autores implementaram.
T+
MVC é um padrão q não se encaixa exatamente para aplicações Windows usando uma ferramenta como o Delphi... Dê uma olhada em MVP que é semelhante e mais adequado.
De qualquer forma, está começando pelo topo da montanha... rsss
|mas ainda tenho algumas dúvidas
|quanto a integração entre o formulário e a classe de negócios.
E a integração entre propriedades e os widgets
|Agora imaginem que tenho um TForm com TDBEdits ligados a um
|ClientDataSet;
MVC e controles DataWare???? MVC e DataSets???
|Imaginem que é necessário fazer determinada validação após informar a
|qtde (regra de negócio da classe TExemplo), e se a validação não der
|certo deve exibir uma mensagem e colocar o foco no DBEdit da qtde.
|E o método salvar da minha classe deve fazer uma verificação se todos
|os campos obrigatórios foram preenchido, ao encontrar o primeiro deve
|exibir aviso e colocar o foco no campo que deve ser preenchido.
Não. Salvar cuida apenas de persistir o objeto -- tá, pode cuidar de validar tb. Mas ele não tem qualquer relação com o os EDITS (não DBEdits) ou com o Form.
MVP (esqueça MVC) é: MODELO-VISÃO-APRESENTAÇÃO -- A apresentação possui uma série de Interactors q são responsáveis ai na ´conexão´ da visão com o modelo e é responsabilidade deles formatar a VISÃO (form/widgets) de forma a expressar o estado do modelo.
Consulte ´Model View Presenter´ no Google q deve encontrar artigos interessantes.
|Como proceder nesse caso? criar um campo para cada DBEdit? (muito
|trabalhoso).
Quem disse q OO é fácil?
Alguns toques:
1) DataSets/controles DataWare e padrões como MVC/MVP/MGM são meio q água e óleo. *A princípio* vc não mistura eles.
2) Comece estudando algo mais simples como ´Humble Dialog´ (http://c2.com/cgi/wiki?TheHumbleDialogBox) -- deve encontrar outras referências na Net
3) Existem alguns frameworks que implementam, mesmo q de forma mais simples, o padrão MVP ou o MGM como tiOPF, Infra e Jazz. Dê uma estudada neles para ter uma idéia como os autores implementaram.
T+
Responder
Gostei + 0
09/10/2009
Osocram
Como disse o Afarias
Pq vc acha que a maioria trabalha meio que Orietado a Eventos? Pq é mais facil.
Pq poucos trabalham OOP? Pq tem que pensar antes de começar e da mais trabalho.
Mas uma coisa que eu vi foi o seguinte. Se levar a OOP ao extremo, Como aplicar MVC ou MVP agente perde o que o Delphi nos traz de melhor, que é os DataWare. Uma Sugestão aprender os Conceitos de OOP e aplicar os conceitos nos problemas, e assim mantendo o padrão de se usar os DataWare.
E se vc realmente ver que é necessario ir ao extremo, boa sorte, estude muito, vai ser um ótimo aprendizado. Se ver que não é necessário tudo isso, boa sorte, estude muito, vai ser um ótimo aprendizado.
Quem disse q OO é fácil?
Pq vc acha que a maioria trabalha meio que Orietado a Eventos? Pq é mais facil.
Pq poucos trabalham OOP? Pq tem que pensar antes de começar e da mais trabalho.
Mas uma coisa que eu vi foi o seguinte. Se levar a OOP ao extremo, Como aplicar MVC ou MVP agente perde o que o Delphi nos traz de melhor, que é os DataWare. Uma Sugestão aprender os Conceitos de OOP e aplicar os conceitos nos problemas, e assim mantendo o padrão de se usar os DataWare.
E se vc realmente ver que é necessario ir ao extremo, boa sorte, estude muito, vai ser um ótimo aprendizado. Se ver que não é necessário tudo isso, boa sorte, estude muito, vai ser um ótimo aprendizado.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)