2010/6/1 Paulo Coutinho <pa...@prsolucoes.com>:
> Olá,
>
> Obrigado pelas criticas, com certeza ajudam muito.
>
> Mas vou explicar alguns detalhes.
>
> O framework utiliza o padrão DAO ou MODELO/GERENTE, então você não usa
> diretamente componentes como ado ou dbx, você cria os modelos e o framework
> se encarrega de montar baseado nas configurações do arquivo INI, embora você
> até possa acessar o dbx ou ado pelo gerente, mas não recomendo.
>
> A transparência do framework permite deixar você livre de qual componente
> suar, já que estou colocando os 2 padrões do delphi, mas nada impede de você
> alterar o gerente para usar o UniDac por exemplo.
>
> Outra vantagem é você trabalhar com componentes desconectados e liberando da
> memória o desnecessário, sempre criando e excluindo o objeto quando não usar
> mais.
>
> Outra vantagem é você trabalhar com objetos , utilizando padrões e definindo
> uma metodologia de desenvolvimento para seus projetos, ao invés de manipular
> componentes, você vai manipular objetos, como :
>
>    - cliente.nome
>    - mercadoria.valor
>    - pessoa.data_nascimento
>    - etc...
>
> Os códigos não são confusos, apenas IFs para saber se o grid tem item
> selecionado e depois vem:
>
>
> ///////////////////////////
> gMembro := TPRFWK_Membro.Create;
>
> gMembro.ID := 1; //substitui por um numero
> gMembro := gGR_Membro.obter(gMembro) as TPRFWK_Membro;
>
> //estou dizendo neste bloco que criei um objeto da minha classe de dominio
> "Membro", defini o atributo padrão "ID" para 1 e usei o gerente para obter
> este objeto pela chave "ID".
>
> //por padrão todas os modelos do dominio possuem o atributo "ID" (pode ser
> alterado na classe pai dos modelos)
> ///////////////////////////
>
> ////////////////////////////////////
>
> if (gMembro <> nil) then
> begin
>     gMembro.nome := edNome.Text;
>      gGR_Membro.alterar(gMembro);
>      gMembro.Free;
> end;
>
> carregarGrid();
>
>
> //aqui estou verificando se o valor retornado para meu objeto não está nulo,
> ou seja, se realmente encontrou o Membro pelo ID dele.
>
> Em seguida defino o nome do membro como o texto do edit e uso o gerente para
> alterá-lo e libero o modelo recebido da memória.
>
> ////////////////////////////////////
>
> Não vi complicação. E em nenhum momento me preocupei com componentes. Essa é
> a regra. Esqueça esse lance de componente, foque na orientação a objetos.
>
>
> Mais uma classe útil, é usada aqui:
>
> ///////////////////////////
> lTemp :=
> MD_PRFWK_Utilidades.TPRFWK_Utilidades.obterInstancia().obterConfiguracao('APLICACAO','titulo',
> '');
> self.Caption := lTemp;
>
> //aqui eu estou usando uma classe do framework para obter do arquivo de
> configuração o TITULO da aplicação, mas em aplicações que tenho aqui, possuo
> trocentas configurações pelo INI, então ajuda bastante.
>
> ///////////////////////////
>
>
> Mais alguma dúvida?

Falei que o código é confuso, não que eu tinha dúvidas sobre como ele
trabalha. É confuso porque escreve-se demais para obter coisas
simples; é burocrático, na minha opinião, claro.
Em todo caso, pode ser bem útil para várias pessoas. Parabéns pela divulgação.


Marcos Douglas

Responder a