Fórum :: Ajuda com OOP :: #364522

01/10/2008

0

Olá pessoal,

tenho uma classe para conectar ao banco:
TBancoConecta = class
function Conecta;
end;

tenho uma classe pessoa.
TPessoa = class
nome : string;
idade : integer;
procedure SQL_InseriPessoa; //Código SQL para inserir a pessoa
end;

Na procedure SQL_InseriPessoa tenho uma var do tipo TBancoConecta e nela procedo da seguinte forma:

Instâncio esse objeto.
Faço o SQL de Inserção.
Destruo o objeto de conexão ao banco.

Estou fazendo errado?

Aceito qualquer tipo de critica, comentário, etc.


Carlosib

Carlosib

Responder

Posts

01/10/2008

Carlosib

Pessoal tive lendo a respeito:

TPessoa = class
  CPF : string;
  Nome : string;
  Idade : byte;
end;

TConexao = class
  function Conecta(sStringConexao : string) : boolean;
end;

TColocaPessoaBanco = class
  Conexao : TConexao;
  function InsertPessoa(_pessoa : TPessoa);
  function RetornaPessoa(_cpf : string) : TPessoa;
  function DeletePessoa(_pessoa : TPessoa);
  function RetornaListaPessoas(_ParteNome : string) :TObjectList;
  //A funcão acima retornaria uma lista de pessoas, por exemplo, que   começem o nome com a letra A
  ....
end; 


Pessoa estou muuuuiiiiito ´longe da realidade´?


Responder

Gostei + 0

03/10/2008

Carlosib

sobe


Responder

Gostei + 0

05/10/2008

Discorpio

Boa tarde Carlosib.

Creio que há um erro na declaração de função na classe, exatamente aqui, nas funções em destaque:

TColocaPessoaBanco = class Conexao : TConexao; [color=red:5e495ba4d7]function InsertPessoa(_pessoa : TPessoa);[/color:5e495ba4d7] function RetornaPessoa(_cpf : string) : TPessoa; [color=red:5e495ba4d7]function DeletePessoa(_pessoa : TPessoa);[/color:5e495ba4d7] function RetornaListaPessoas(_ParteNome : string) :TObjectList;


Toda função tem que retornar qualquer valor, e nessas funções em destaque, voce não definiu o tipo de dado que elas vão retornar, um exemplo:

   function InsertPessoa(_pessoa : TPessoa): Boolean;
   function DeletePessoa(_pessoa : TPessoa): Boolean;


Repare que ao final, logo após os dois pontos, foi declarado o tipo de dado que a função vai retornar (Boolean), e a função tem que ter esse mesmo escopo no momento de sua implementação.

Se voce não quer que esses métodos não retornem nada, como se fosse ´void´ na linguagem Java, então voce tem que declará-los como ´procedure´ (procedimento), assim:

   procedure InsertPessoa(_pessoa : TPessoa);
   procedure DeletePessoa(_pessoa : TPessoa);



Responder

Gostei + 0

06/10/2008

Carlosib

Amigo obrigado pelo comentário.

Na verdade escrevi esse tópico não me preocupando com a sintaxe e sim com o conceito de OOP.

Queria saber sobre o padrão DAO usando em Delphi essas coisas :D

Mas pelo visto poucas pessoas o usam :( ou estou completamente por fora que elas nem sequer desejam comentar nada.


Responder

Gostei + 0

06/10/2008

Discorpio

Bom tarde Carlosib.

DAO (Data Access Object) é um padrão para persistência de dados que permite separar regras de negócio das regras de acesso a banco de dados. Numa aplicação que utilize a arquitetura MVC (Model View Controller - Controle de Layout e Dados), todas as funcionalidades de bancos de dados, tais como obter as conexões, mapear objetos para tipos de dados SQL ou executar comandos SQL, devem ser feitas por classes de DAO.

A arquitetura MVC é muito utilizado na Internet por linguagens orientadas a objeto, tais como o Java e PHP, que resuscitaram esta antiga tecnologia que antes era um componente da Microsoft, que mais tarde foi substituída pelos componentes ADO. O java e o PHP não possui componentes visuais de conexão com banco de dados, que voce arraste para dentro de uma interface gráfica, e configura os seus parâmetros de conexão, dai a necessidade de se criar classes DAO para realizar esta conexão

O Delphi não utiliza DAO, porque ele possui uma gama de componentes que encapsulam a persistência de dados, componentes estes específicos para cada tipo de banco de dados, tais como o próprio ADO, na sua aba ADO ou dbGo para versão mais novas do Delphi, componentes da palheta BDE para bancos antigos como o paradox, componentes IBX para Interbase e Firebird, o dbExpress também utiliza vários drivers de bancos e a biblioteca Zeos para bancos Mysql e Postgres, enfim, o Delphi já possui uma gama de componentes que já possuem classes que encapsulam tal técnica.

Entretanto, se voce pretende fazer a sua própria classe de persistência a dados dentro do Delphi, nada impede.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar