Fórum :: Ajuda com OOP :: #364522
01/10/2008
0
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
Curtir tópico
+ 0Posts
01/10/2008
Carlosib
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´?
Gostei + 0
03/10/2008
Carlosib
Gostei + 0
05/10/2008
Discorpio
Creio que há um erro na declaração de função na classe, exatamente aqui, nas funções em destaque:
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);
Gostei + 0
06/10/2008
Carlosib
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.
Gostei + 0
06/10/2008
Discorpio
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.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)