ClipaTec Informática

Receba novidades por e-mail. Digite seu e-mail abaixo e clique no botão "Cadastrar"

Delivered by FeedBurner

17 de novembro de 2012

Declarando uma Classe no Delphi

delphi
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)

7 comments:

  1. Boa tarde..
    Muito 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.

    ResponderExcluir
    Respostas
    1. Obrigado pelo feedback. Ficamos felizes.
      Basta 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.

      Excluir
  2. Boa tarde..
    Muito 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??

    ResponderExcluir
    Respostas
    1. Crie um field do tipo "TObjectList" assim você terá uma propriedade de lista de objetos.

      Excluir

Visite nossa página de Política de comentarios antes de comentar para ter certeza de que seu comentário não será excluído! Lembre-se, assim que aprovarmos o teu comentário ele será publicado, por isso, não deixe de sempre visitar nosso blog e conferir nossa resposta ao seu comentário, abraço!