![]() |
Ilustração do jogo jenga - Construtores e Destrutores |
Índice
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:
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:
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:
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:
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:
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;
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
:
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:
- Adicione um formulário ao seu projeto Delphi.
- Adicione um
TButton
ao formulário. - No evento
OnClick
do botão, adicione o seguinte código:
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
- Definição da Classe: A classe
TTextFileHandler
é definida com um construtorCreate
e um destrutorDestroy
. Ela também possui um métodoWriteLine
para escrever linhas de texto no arquivo. - Implementação do Construtor: O construtor
Create
recebe um nome de arquivo como parâmetro, inicializa o campoFFileName
, associa o arquivo à variávelFFile
e cria o arquivo usandoRewrite
. - Implementação do Destrutor: O destrutor
Destroy
fecha o arquivo usandoCloseFile
e chama o destrutor da classe base. - Uso da Classe: No evento
OnClick
do botão, um objetoTTextFileHandler
é criado, usado para escrever linhas no arquivo e liberado no blocofinally
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.
Nenhum comentário:
Postar um comentário