Olá pessoal, salve!
Galera do Delphi que está acompanhando tudo por aqui, hoje vou mostrar como criar uma classe no delphi.
Pra você que está começando a estudar os paradigmas da POO (Programação Orientada a Objetos) no Delphi, este artigo será interessante pra você.
Pretendo publicar uma série de tutoriais criando cadastros em Delphi tanto estruturado usando os componentes da paleta Interbase, quanto OO (Orientado a Objetos) usando os componentes da dbExpress. Temos muito a aprender por aqui.
Claro, quem gosta de Java, não fique triste, vamos publicar exemplos em Java também, e posteriormente PHP OO .
Muito bem, vamos ao que nos interessa, com um projeto criado no Delphi, clique no menu "File/New/Unit" para criarmos nossa unidade que irá conter nossa Classe.
Salve com o nome de "untCLPessoa".
Essa será uma super-classe (classe mãe) de uma futura aplicação que vamos desenvolver juntos aqui no blog.
Muito bem, depois de salvar, temos na Unit, o comando que define o nome da Unit que estamos trabalhando:
unit UntCLPessoa;
Agora vamos criar nossa Classe "Pessoa". Por convenção no Delphi, todo nome de classe inicia com a letra "T", desta forma, o nome de nossa classe será "TPessoa".
Para isso, abaixo do comando "Interface", digite o comando "Type" e na linha de baixo, digite "class" e pressiona a tecla "Tab" e defina o nome da classe:
interface
type
TPessoa = class
Muito bem, agora vamos declarar os atributos de nossa classe pessoa, que são comuns nas sub-classes (classes filhas), estes atributos são privados, ou seja, visível e acessível somente à classe, para que outras classes possam ler ou escrever nesses atributos, isso é feito através dos métodos "Get" e "Set", pois estas propriedades serão encapsuladas.
Então, na seção "Private", declaramos os atributos (por convenção, um atributo inicia-se o nome com a letra "F"), seguido de ":" e seu tipo:
private
Fid_pessoa: Integer;
Fuf_pessoa: String;
Fcep_pessoa: String;
Fnome_pessoa: String;
Fcidade_pessoa: String;
Fendereco_pessoa: String;
Ftelefone_pessoa: string;
Frg_pessoa: String;
Fdatanascimento_pessoa: TDate;
Fbairro_pessoa: String;
Fcpf_pessoa: string;
Ok, agora temos que encapsular estes atributos e criar os métodos "Get" e "Set", mas, você não precisa se preocupar com isso, o IDE Delphi faz isso pra você, só é necessário declararmos a "property" com o nome do atributo sem a letra "F" seguido de ":" e seu tipo, então, dentro da seção "Public" faça:
property id_pessoa: Integer;
property uf_pessoa: String;
property cep_pessoa: String;
property nome_pessoa: String;
property cidade_pessoa: String;
property endereco_pessoa: String;
property telefone_pessoa: string;
property rg_pessoa: String;
property datanascimento_pessoa: TDate;
property bairro_pessoa: String;
property cpf_pessoa: string;
constructor Create;
Note que temos depois da última "Property" o método construtor, que por convenção, o chamamos de "Create".
Feito isso, deixe o cursor do mouse piscando no final do método construtor e pressione as teclas de atalho "Shift + Crtl + C", o IDE já vai implementar automaticamente na seção "Private" os seguintes comandos:
procedure Setbairro_pessoa(const Value: string);
procedure Setcep_pessoa(const Value: string);
procedure Setcidade_pessoa(const Value: string);
procedure Setdatanascimento_pessoa(const Value: TDate);
procedure Setendereco_pessoa(const Value: string);
procedure Setid_pessoa(const Value: Integer);
procedure Setnome_pessoa(const Value: string);
procedure Setrg_pessoa(const Value: string);
procedure Settelefone_pessoa(const Value: string);
procedure Setuf_pessoa(const Value: string);
procedure Setcpf_pessoa(const Value: string);
E na seção "Public", ele já completa a implementação das "Property", ficando desta forma:
public
property cpf_pessoa: string read Fcpf_pessoa write Setcpf_pessoa;
property nome_pessoa: string read Fnome_pessoa write Setnome_pessoa;
property rg_pessoa: string read Frg_pessoa write Setrg_pessoa;
property endereco_pessoa: string read Fendereco_pessoa
write Setendereco_pessoa;
property bairro_pessoa: string read Fbairro_pessoa write Setbairro_pessoa;
property cidade_pessoa: string read Fcidade_pessoa write Setcidade_pessoa;
property uf_pessoa: string read Fuf_pessoa write Setuf_pessoa;
property cep_pessoa: string read Fcep_pessoa write Setcep_pessoa;
property telefone_pessoa: string read Ftelefone_pessoa
write Settelefone_pessoa;
property datanascimento_pessoa: TDate read Fdatanascimento_pessoa
write Setdatanascimento_pessoa;
property id_pessoa: Integer read Fid_pessoa write Setid_pessoa;
constructor Create;
end;
Não para por aí, ele também já implementa as "property" pra você, ficando apenas o método construtor para implementarmos, então, vamos implementá-lo, para isso, faça o seguinte dentro do método construtor:
constructor TPessoa.Create;
begin
Fcpf_pessoa := ' ';
Fnome_pessoa := ' ';
Frg_pessoa := ' ';
Fendereco_pessoa := ' ';
Fbairro_pessoa := ' ';
Fcidade_pessoa := ' ';
Fuf_pessoa := ' ';
Fcep_pessoa := ' ';
Ftelefone_pessoa := ' ';
Fdatanascimento_pessoa := 0;//é um zero. srsrsrs
Fid_pessoa := 0;
end;
A partir do comando "Implementation", sua classe deve estar assim:
implementation
{ TPessoa }
constructor TPessoa.Create;
begin
Fcpf_pessoa := ' ';
Fnome_pessoa := ' ';
Frg_pessoa := ' ';
Fendereco_pessoa := ' ';
Fbairro_pessoa := ' ';
Fcidade_pessoa := ' ';
Fuf_pessoa := ' ';
Fcep_pessoa := ' ';
Ftelefone_pessoa := ' ';
Fdatanascimento_pessoa := 0;
Fid_pessoa := 0;
end;
procedure TPessoa.Setbairro_pessoa(const Value: string);
begin
Fbairro_pessoa := Value;
end;
procedure TPessoa.Setcep_pessoa(const Value: string);
begin
Fcep_pessoa := Value;
end;
procedure TPessoa.Setcidade_pessoa(const Value: string);
begin
Fcidade_pessoa := Value;
end;
procedure TPessoa.Setcpf_pessoa(const Value: string);
begin
Fcpf_pessoa := Value;
end;
procedure TPessoa.Setdatanascimento_pessoa(const Value: TDate);
begin
Fdatanascimento_pessoa := Value;
end;
procedure TPessoa.Setendereco_pessoa(const Value: string);
begin
Fendereco_pessoa := Value;
end;
procedure TPessoa.Setid_pessoa(const Value: Integer);
begin
Fid_pessoa := Value;
end;
procedure TPessoa.Setnome_pessoa(const Value: string);
begin
Fnome_pessoa := Value;
end;
procedure TPessoa.Setrg_pessoa(const Value: String);
begin
Frg_pessoa := Value;
end;
procedure TPessoa.Settelefone_pessoa(const Value: string);
begin
Ftelefone_pessoa := Value;
end;
procedure TPessoa.Setuf_pessoa(const Value: String);
begin
Fuf_pessoa := Value;
end;
end.
Beleza pura, acabamos de criar a classe pessoa no Delphi, simples, mamão com açúcar.
Pois bem, isso é o que eu gostaria de mostrar hoje, até o próximo.
(Por Welinton Junior Dias)
Show de Bola!
ResponderExcluirObrigado amigo. Abraço.
ExcluirBoa tarde..
ResponderExcluirMuito bem explicada o lance de CLASS.
Realmente uma das melhores explicação que já vi.
Gostaria de fazer uma pergunta.
Como eu faria para na CLASSE TPESSOA coloar um ATRIBUTO do TIPO TENDERECOS.
Minha Ideia é que uma pessoa poderia ter vários ENDERECOS.
Esses Endereços seria uma class também.
TEndereco = Class
Private
fRua : String;
fnumero : String;
Public
Property rua : String read fRua Write fRua;
Property numero : String read fNumero Write fNumero;
end;
Pelo que tu demonstrou .. Ate já criei a class endereço :)
Mas não estou vendo como incluir a class endereco como um
ATRIBUTO da class endereço e depois manipular tudo.
Obrigado pelo feedback. Ficamos felizes.
ExcluirBasta criar um field na classe do tipo TEndereco. Como pode ser mais de um, seria legal utilizar uma lista de objetos TEndereco com generics "TObjectList".
Qualquer dúvida sobre a implementação, nos avise. Abraço e sucessos pra vc sempre.
Boa tarde..
ResponderExcluirMuito bem explicada o lance de CLASS.
Realmente uma das melhores explicação que já vi.
Gostaria de fazer uma pergunta.
Como eu faria para na CLASSE TPESSOA coloar um ATRIBUTO do TIPO TENDERECOS.
Minha Ideia é que uma pessoa poderia ter vários ENDERECOS.
Esses Endereços seria uma class também.
TEndereco = Class
Private
fRua : String;
fnumero : String;
Public
Property rua : String read fRua Write fRua;
Property numero : String read fNumero Write fNumero;
end;
Pelo que tu demonstrou .. Ate já criei a class endereço :)
Mas não estou vendo como incluir a class endereco como um
ATRIBUTO da class PESSOA e depois manipular tudo.
Como faria para a classe pessoa ter varios endereços??
Crie um field do tipo "TObjectList" assim você terá uma propriedade de lista de objetos.
ExcluirTObjectList < TEndereco >;
Excluir