Menu

Tradução

Português English Español Français

Construtores e Destrutores em Delphi

Nesse post iremos abordar sobre construtores e destrutores em Delphi. Sua utilização na criação de classes e exemplo prático.

 

Construtores e Destrutores em Delphi
Ilustração do jogo jenga - Construtores e Destrutores

Introdução

Na programação orientada a objetos, os construtores e destrutores desempenham um papel fundamental na gestão do ciclo de vida dos objetos. Em Delphi, esses métodos especiais são utilizados para inicializar e liberar recursos associados a uma classe. Neste artigo, exploraremos o papel dos construtores e destrutores, como defini-los e utilizá-los, além de um exemplo prático com código.

Nesse post iremos abordar sobre construtores e destrutores em Delphi. Sua utilização na criação de classes e exemplo prático.

O Papel dos Construtores e Destrutores

Construtores

Os construtores são métodos especiais utilizados para inicializar objetos de uma classe. Eles são chamados automaticamente quando um objeto é criado. O principal objetivo de um construtor é configurar o estado inicial de um objeto, atribuindo valores iniciais às variáveis e alocando quaisquer recursos necessários.

Destrutores

Os destrutores são métodos especiais chamados automaticamente quando um objeto é destruído. Eles são usados para liberar recursos que foram alocados pelo construtor ou durante o tempo de vida do objeto. Em Delphi, o destrutor padrão é chamado Destroy.

Como Definir e Utilizar Construtores e Destrutores em Delphi

Definindo um Construtor

Para definir um construtor em Delphi, usa-se a palavra-chave constructor na seção public ou published da classe. Aqui está um exemplo simples:

Delphi

type
  TMyClass = class
  private
    FValue: Integer;
  public
    constructor Create; // Declaração do construtor
    procedure ShowValue;
  end;
  

Implementando um Construtor

A implementação do construtor é feita na seção implementation da unit:

Delphi

constructor TMyClass.Create;
begin
  inherited; // Chama o construtor da classe base
  FValue := 10; // Inicializa o valor
end;
  

Definindo um Destrutor

Para definir um destrutor, usa-se a palavra-chave destructor. O destrutor é sempre chamado Destroy em Delphi:

Delphi

type
  TMyClass = class
  private
    FValue: Integer;
  public
    constructor Create; // Declaração do construtor
    destructor Destroy; override; // Declaração do destrutor
    procedure ShowValue;
  end;
  

Implementando um Destrutor

A implementação do destrutor é feita na seção implementation da unit:

Delphi

destructor TMyClass.Destroy;
begin
  // Libera recursos, se houver
  inherited; // Chama o destrutor da classe base
end;
  

Exemplo Prático com Código

Vamos criar um exemplo prático de uma classe que usa construtores e destrutores para gerenciar um recurso simples, como um arquivo de texto.

Definindo a Classe

Aqui está a definição da classe TTextFileHandler que gerencia a criação e destruição de um arquivo de texto:

Delphi

type
  TTextFileHandler = class
  private
    FFileName: string;
    FFile: TextFile;
  public
    constructor Create(AFileName: string); // Declaração do construtor
    destructor Destroy; override; // Declaração do destrutor
    procedure WriteLine(AText: string);
  end;
  
Delphi

type
  TTextFileHandler = class
  private
    FFileName: string;
    FFile: TextFile;
  public
    constructor Create(AFileName: string); // Declaração do construtor
    destructor Destroy; override; // Declaração do destrutor
    procedure WriteLine(AText: string);
  end;
  

Implementando a Classe

Agora, vamos implementar os métodos da classe TTextFileHandler:

Delphi

constructor TTextFileHandler.Create(AFileName: string);
begin
  inherited Create;
  FFileName := AFileName;
  AssignFile(FFile, FFileName);
  Rewrite(FFile); // Cria o arquivo
end;

destructor TTextFileHandler.Destroy;
begin
  CloseFile(FFile); // Fecha o arquivo
  inherited Destroy;
end;

procedure TTextFileHandler.WriteLine(AText: string);
begin
  WriteLn(FFile, AText); // Escreve uma linha no arquivo
end;
  

Utilizando a Classe

Vamos agora utilizar a classe TTextFileHandler em um formulário Delphi:

  1. Adicione um formulário ao seu projeto Delphi.
  2. Adicione um TButton ao formulário.
  3. No evento OnClick do botão, adicione o seguinte código:
Delphi

procedure TForm1.Button1Click(Sender: TObject);
var
  TextHandler: TTextFileHandler;
begin
  //Cria o arquivo texto - o arquivo será criado na mesma pasta do executável
  TextHandler := TTextFileHandler.Create('example.txt');
  try
    TextHandler.WriteLine('Hello, world!');   //escreve no arquivo texto
    TextHandler.WriteLine('This is a test.'); //escreve no arquivo texto
  finally
    TextHandler.Free; // Chama o destrutor para liberar o recurso
  end;
end;
  

Explicação do Código

  1. Definição da Classe: A classe TTextFileHandler é definida com um construtor Create e um destrutor Destroy. Ela também possui um método WriteLine para escrever linhas de texto no arquivo.
  2. Implementação do Construtor: O construtor Create recebe um nome de arquivo como parâmetro, inicializa o campo FFileName, associa o arquivo à variável FFile e cria o arquivo usando Rewrite.
  3. Implementação do Destrutor: O destrutor Destroy fecha o arquivo usando CloseFile e chama o destrutor da classe base.
  4. Uso da Classe: No evento OnClick do botão, um objeto TTextFileHandler é criado, usado para escrever linhas no arquivo e liberado no bloco finally para garantir que o destrutor seja chamado e o arquivo seja fechado corretamente.

Veja abaixo a ilustração do projeto utilizando Construtores e Destrutores:

Ilustração do projeto.

Código fonte do exemplo

Você pode fazer o download do exemplo do projeto através do repositório do github:

https://github.com/Gisele-de-Melo/ContructorDestructor

Conclusão

Os construtores e destrutores são fundamentais para gerenciar o ciclo de vida dos objetos em Delphi, garantindo que os recursos sejam inicializados e liberados corretamente. Neste artigo, vimos como definir e utilizar construtores e destrutores, bem como um exemplo prático de uma classe que gerencia um arquivo de texto. Com esse conhecimento, você pode criar classes mais robustas e eficientes em seus projetos Delphi, garantindo uma gestão adequada dos recursos.

Posts Relacionados




Nenhum comentário:

Postar um comentário

Recursividade em Delphi: Conceitos, Exemplos e Aplicações Práticas

Neste post, você aprenderá quando usar recursividade em Delphi, suas vantagens e desvantagens, além de um exemplo prático implementa...