O que você chama de camada superior???

O código SQL que coloquei está na *terceira* camada, ou seja, na camada 
de acesso à dados. Existe outro local mais correto que esse?

Sds,

Romario




Francisco Trindade escreveu:
> Nao sei, nao gosto de colocar codigo SQL na camada superior, acho que pode
> complicar demais as coisas.
>  Uma opcao para a relacao 1 para 1 que eu pensei agora seriam classes
> "amigas" colocadas no mesmo arquivo. Isso acabaria com o problema da relacao
> circular (mas tem o problema de colocar duas classes no mesmo arquivo).
>  E quanto a 1 para N, eu vejo uma grande vantagem na bidirecionalidade, pode
> poupar buscas imensas, em certos casos.
>  Sds.
>  Francisco
> 
>  On 11/21/05, rbr_vix_es <[EMAIL PROTECTED]> wrote:
> 
>>Você não está sendo chato e Orientação a Objetos é algo que gosto
>>muito de discutir. Gostaria que outros participassem, mas...
>>
>>Vamos lá!!!
>>
>>Ainda não tive como testar, mas continuo achando que o typecast não
>>é necessário porque você já criou um objeto do mesmo tipo para
>>receber o objeto recuperado na lista.
>>
>>Vejamos o problema da incubadora. Ao meu entender seria algo assim:
>>
>>Type
>>TEspecie = (tpPeixe, tpAnfibio, tpReptil, tpAve);
>>
>>
>>Type
>>TAnimal = Class(TObject)
>>Private
>>FCodigo : Integer;
>>FNome : String;
>>FEspecie: TEspecie;
>>Protected
>>Public
>>Property Codigo : Integer Read FCodigo;
>>Property Nome : String Read FNome Write FNome
>>Property Especie: TEspecie Read FEspecie Write FEspecie;
>>
>>Function Listar(oEspecie: TEspecie): TList;
>>End;
>>
>>
>>Type
>>TOvo = Class(TObject)
>>Private
>>FCodigo: Integer;
>>FAnimal: TAnimal;
>>...
>>Protected
>>Public
>>Property Codigo : Integer Read FCodigo;
>>Property Animal : TAnimal Read FAnimal Write FAnimal;
>>End;
>>
>>
>>Type
>>TIncubadora = Class(TObject)
>>Private
>>FCodigo : Integer;
>>FCapacidade : Integer;
>>FPrateleiras : Smallint;
>>FTemperatura : Float;
>>Protected
>>Public
>>Property Codigo : Integer Read FCodigo;
>>Property Capacidade : Integer Read FCapacidade Write
>>FCapacidade;
>>Property Prateleiras: Smallint Read FPrateleiras Write
>>FPrateleiras;
>>Property Temperatura: Float Read FTemperatura Write
>>FTemperatura;
>>
>>Class Function ListaOvos: TList;
>>End;
>>
>>Se para você é importante saber em que local o Ovo está sem ter que
>>perguntar e percorrer a emcubadora, monte um novo objeto para te
>>auxiliar nessa tarefa, mas não acho que você deve criar uma
>>referência da emcubadora no ovo.
>>
>>Ex.:
>>
>>Type
>>TEstocagem = Class(TObject)
>>Private
>>FOvo : TOvo;
>>FEmcubadora : TEmcubadora;
>>FPrateleira : Smallint;
>>FPosicao : Smallint;
>>Protected
>>Public
>>Property Ovo : TOvo Read FOvo Write FOvo;
>>Property Emcubadora: TEmcubadora Read FEmcubadora Write
>>FEmcubadora;
>>Property Prateleira: Smallint Read FPrateleira Write
>>FPrateleira;
>>Property Posicao : Smallint Read FPosicao Write FPosicao;
>>
>>Function Buscar(oOvo: TOvo): Boolean; Overload;
>>End;
>>
>>
>>O exemplo que você informou de um relacionamento 1 para 1 na verdade
>>é um relacionamento 1 para N, porque um ovo só pode vir de uma
>>avestruz, mas um avestruz pode pôr vários ovos. Estou certo?
>>
>>Vamos colocar um relacionamento de 1 para 1 como sendo o de Pessoa e
>>CNH (Carteira Nacional de Habilitação). Digamos que a Classe Pessoa
>>terá um objeto do tipo TCNH junto aos seus atributos. Vejamos o
>>exemplo:
>>
>>Type
>>TPessoa = Class(TObject)
>>Private
>>FCodigo: Integer;
>>FNome : String;
>>FCNH : TCNH;
>>Protected
>>Public
>>Property Codigo : Integer Read FCodigo;
>>Property Nome : String Read FNome Write FNome;
>>Property CNH : TCNH Read FCNH Write FCNH;
>>End;
>>
>>
>>Type
>>TCNH = Class(TObject)
>>Private
>>FCodigo : Integer;
>>FNumero : String;
>>FRegistro : String
>>FCategoria : String;
>>FDataExame : TDateTime;
>>FExpedicao : TDateTime;
>>FValidade : TDateTime;
>>FObservacao: String;
>>Protected
>>Public
>>Property Codigo : Integer Read FCodigo;
>>Property Numero : String Read FNumero Write FNumero;
>>Property Registro : String Read FRegistro Write FRegistro;
>>Property Categoria : String Read FCategoria Write FCategoria;
>>Property DataExame : TDateTime Read FDataExame Write FDataExame;
>>Property Expedicao : TDateTime Read FExpedicao Write FExpedicao;
>>Property Validade : TDateTime Read FValidade Write FValidade;
>>Property Observacao: String Read FObservacao Write
>>FObservacao;
>>
>>Function Buscar(iCodigo: Integer): Boolean; Overload;
>>Function Buscar(sNumero: String): Boolean; Overload;
>>Function Buscar(dtValidade: TDateTime): Boolean; Overload;
>>End;
>>
>>No exemplo acima sabemos que o objeto Pessoa conhece sua CNH através
>>da instância do objeto que ele possui, mas se precisarmos conhecer
>>uma Pessoa através de uma CNH o problema fica mais difícil. A
>>solução que vejo no momento seria:
>>
>>No seu DataModule:
>>
>>Function TdmPessoa.Buscar(iCodigo: Integer, oPessoa: TPessoa):
>>Boolean;
>>Begin
>>
>>With cdsPessoa Do
>>Begin
>>Try
>>Close;
>>CommandText := 'Select * From Pessoa P ' +
>>'Join CNH C On (P.Codigo = C.CodPessoa) ' +
>>'Where P.Codigo = ' + IntTostr(iCodigo);
>>Open;
>>
>>If RecordCount > 0 Then
>>Begin
>>Result := True;
>>Pessoa.Nome := FieldByName('Nome').AsString;
>>...
>>Pessoa.oCNH.Buscar(iCodigo);
>>End;
>>Except
>>on E: Exception do
>>ShowMessage(E.Message);
>>End;
>>End;
>>End;
>>
>>
>>Ufa!!! Acho que exemplifiquei bastante dessa vez. Vai dar até para
>>escrever um livro. :-D
>>
>>Obs.: Como estou codificando direto no corpo do e-mail, pode ser que
>>aja alguns erros. :-(
>>
>>Sds,
>>
>>Romario

        

        
                
_______________________________________________________ 
Yahoo! Acesso Grátis: Internet rápida e grátis. 
Instale o discador agora!
http://br.acesso.yahoo.com/



-- 
<<<<< 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]
 
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