Oi Eduardo,

    A minha maior dúvida é seguinte: fica meio estranho o controle setar 
os valores dos atributos na entidade e depois salvar no banco de dados. 
Parece que não faz sentido jogar os valores na entidade, já que estou 
salvando no banco.  Em java quando se trabalha com serialização de 
objetos, isto faz sentido, seto os atributos da entidade, coloco em um 
vetor de objetos  e serializo o vetor.

    Se você tiver outros exemplos de inserção, atualização e consulta 
utilizando o modelo MVC, fico muito grata.

     Tutoriais e apostilas  sobre o assunto também são bem vindas.

       

edu052000 escreveu:

> Bom Dia !!!
>
> Cristina,
>
> A implementação do MVC em Delphi pode ser feita utilizando-se o mesmo
> esquema do JAVA:
>
> Classe Limite - Interface.
>
> Classe Controle - Onde estará toda a regra de negócio, implementada
> por exemplo através de um servidor de aplicação utilizando SOAP.
>
> Classes Entidades - Classes com seus atributos e METÓDOS DE ACESSO.
>
> Outra coisa o DataModule, nada mais é do que um meio para organizar
> seu código, onde todas as suas tabelas, consultas e etc estarão. Veja
> o DataModule como a camada de acesso aos dados.
>
> O que muda é a abordagem dada pelo exemplo aqui apresentado.
>
> Espero ter ajudado qualquer coisa me envia um e-mail que posso te
> fornecer exemplos.
>
> Att.
>
>
>
> > Oi Romário,
> >   
> >     Valeu pelas dicas.
> >     Aprendi MVC com java e o conceito é um pouco diferente do que
> você
> > exemplificou em Delphi.
> >
> >      Por exemplo em java temos:
> >        Classe Limite que é a interface
> >        Classe Controle que é a classe responsável pela regra de
> negócio,
> > e por salvar os dados nos atributos da Classe Entidade
> >        Classe Entidade é a classe que contém os atributos e os
> métodos
> > de acesso.
> >   
> >     Pelo seu exemplo o limite chama os métodos da entidade (Classe,
> como
> > você definiu) e a entidade chama os métodos da classe controle
> > (DataModule) para acessar o banco de dados.
> >
> >
> >
> ----------------------------------------------------------------------
> -------------------------
> >> Romario (Listas) escreveu:
>
> > > Vou dar um exemplo básico utilizando a sua dúvida com o insert.
> > >
> > > =================================================================
> > >
> > > Na Interface:
> > >
> > > Type
> > >
> > >    TfmCliente = Class(TObject)
> > >
> > >    {Lista de Componentes do Formulário}
> > >    ...
> > >
> > >    Procedure FormCreate(Sender: TObject);
> > >    Procedure FormDestroy(Sender: TObject);
> > >    Procedure btnSaveClick(Sender: TObject);
> > >
> > >    Private
> > >      { Private declarations }
> > >    Public
> > >      { Public declarations }
> > >    End;
> > >
> > > Var
> > >    fmCliente: TfmCliente;
> > >
> > > Implementation
> > >
> > > {$R *.dfm}
> > >
> > > Var
> > >    Cliente: TCliente;
> > >
> > > Procedure TfmCliente.FormCreate(Sender: TObject);
> > > Begin
> > >    Inherited;
> > >    Cliente := TCliente.Create;
> > > End;
> > >
> > > Procedure TfmCliente.FormDestroy(Sender: TObject);
> > > Begin
> > >    FreeAndNil(Cliente);
> > >    Inherited;
> > > End;
> > >
> > > Procedure TfmCliente.btnSaveClick(Sender: TObject);
> > > Begin
> > >    If edtNome.Text <> '' Then
> > >    Begin
> > >      Funcionario.Nome := edtNome.Text;
> > >      ...
> > >      If Funcionario.Salvar Then
> > >      Begin
> > >        edtNome.Clear;
> > >        ...
> > >      End
> > >      Else
> > >      Begin
> > >        ShowMessagem('Houve erro na gravação');
> > >        ...
> > >        edtNome.SetFocus;
> > >      End;
> > >    End
> > >    Else
> > >    Begin
> > >      ShowMessagem('É obrigatório informar o nome do cliente.');
> > >      ...
> > >      edtNome.SetFocus;
> > >    End;
> > > End;
> > >
> > > =================================================================
> > >
> > > Na Classe:
> > >
> > > Type
> > >
> > >    TCliente = Class(TObject)
> > >
> > >    Private
> > >
> > >      FCodigo    : Integer;
> > >      FNome      : String;
> > >      ...
> > >
> > >    Public
> > >
> > >      Property Codigo : Integer Read FCodigo;
> > >      Property Nome   : String  Read FNome Write FNome;
> > >      ...
> > >
> > >      Function Salvar: Boolean;
> > >      ...
> > >
> > >    End;
> > >
> > > Implementation
> > >
> > > Function TCliente.Salvar: Boolean;
> > > Begin
> > >
> > >    Result := dmCliente.Salvar(Self);
> > >
> > > End;
> > >
> > > End.
> > >
> > > =================================================================
> > >
> > > No DataModule:
> > >
> > > Type
> > >
> > >    TDmCliente = Class(TDataModule)
> > >
> > >    Private
> > >      { Private declarations }
> > >    Public
> > >      { Public declarations }
> > >      Function Salvar(oCliente: TCliente): Boolean;
> > >    End;
> > >
> > > Var
> > >    dmCliente: TDmCliente;
> > >
> > > Implementation
> > >
> > > {$R *.dfm}
> > >
> > > Function TDmCliente.Salvar(oCliente: TCliente): Boolean;
> > > Begin
> > >    With cdsCliente do
> > >    Begin
> > >      Try
> > >        Close;
> > >        If oCliente.Codigo = 0 Then
> > >        Begin
> > >          { Para abrir o ClientDataSet já vazio }
> > >          CommandText := 'Select * From Cliente Where CodCliente =
> 0';
> > >          Open;
> > >          Insert;
> > >          FieldByName('CodCliente').AsInteger := {Seu Generator};
> > >        End
> > >        Else
> > >        Begin
> > >          If Locate('CodCliente', oCliente.Codigo, []) Then
> > >            Edit;
> > >        End;
> > >        FieldByName('Nome').AsString := oCliente.Nome;
> > >        Post;
> > >        Result := ApplyUpdates(0);
> > >      Except
> > >        on E: Exception do
> > >        ShowMessage(E.Message);
> > >      End;
> > >    End;
> > > End;
> > >
> > > =================================================================
> > >
> > > Obs.: Não testei o código para saber se tem erros.
> > >
> > > Espero que dê para entender a utilização do MVC no Delphi.
> > >
> > > Sds,
> > >
> > > Romario
> > >
> > >
> > >
> > >
> > >
> > > Cristina escreveu:
> > > >     Então deixa ver se eu entendi.
> > > >
> > > >     Para dar um insert, por exemplo em uma entidade cliente, eu
> terei
> > > > que setar os valores dos atributos na entidade e depois na
> tabela
> > > Clientes?
> > > >
> > > >     Para fazer uma consulta, insiro na entidade clientes, todos
> os
> > > > clientes cadastrados na tabela Cliente e trabalho com os dados
> em
> > > > memória? E se eu tiver uma tabela de clientes muito grande, a
> > > > performance do meu software não estará diminuída, por usar
> muito espaço
> > > > em memória?
> > >
> > >     
> > >
> > >     
> > >           
> > > _______________________________________________________
> > > Promoção Yahoo! Acesso Grátis: a cada hora navegada você acumula
> > > cupons e concorre a mais de 500 prêmios! Participe!
> > > http://yahoo.fbiz.com.br/
>
>
>
>
>
> -- 
> <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>
>
> Para ver as mensagens antigas, acesse:
> http://br.groups.yahoo.com/group/delphi-br/messages
>
> Para falar com o moderador, envie um e-mail para:
> [EMAIL PROTECTED] ou [EMAIL PROTECTED]
>
>
>
> *Yahoo! Grupos, um serviço oferecido por:*
>
>
> ------------------------------------------------------------------------
> *Links do Yahoo! Grupos*
>
>     * Para visitar o site do seu grupo na web, acesse:
>       http://br.groups.yahoo.com/group/delphi-br/
>        
>     * Para sair deste grupo, envie um e-mail para:
>       [EMAIL PROTECTED]
>       <mailto:[EMAIL PROTECTED]>
>        
>     * O uso que você faz do Yahoo! Grupos está sujeito aos Termos do
>       Serviço do Yahoo! <http://br.yahoo.com/info/utos.html>.
>
>

-- 

Atenciosamente
----------------------------------------
Cristina Orthmann da Silva
HACON Automação e Tecnologia Ltda
Rua Lauro Linhares 589 - Bairro Trindade
Florianópolis - SC - Brasil
CEP 88036-001
Fone/Fax: 55 48 333-0699
Site: http://www.hacon.com.br/
Email: [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
----------------------------------------



-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED] ou [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 




Responder a