![]() |
Escritório com mesas e computadores – Units em Delphi |
Índice
Introdução
No desenvolvimento de software, a organização e a modularização do código são fundamentais para criar aplicações robustas e fáceis de manter. Em Delphi, isso é conseguido por meio de units e módulos. Neste artigo, vamos explorar a estrutura de uma unit, como organizar o código em múltiplas units e como importar e usar essas units em seus projetos.
Estrutura de uma Unit em Delphi
Uma unit em Delphi é um arquivo que contém código-fonte, dividido em seções de interface e implementação. Ela permite que o código seja organizado de forma modular, facilitando a manutenção e a reutilização.
Estrutura Básica de uma Unit
Aqui está um exemplo básico da estrutura de uma unit em Delphi:
unit UnitName;
interface
uses
System.SysUtils, System.Classes;
type
TMyClass = class
private
FField: Integer;
public
procedure DoSomething;
end;
implementation
procedure TMyClass.DoSomething;
begin
// Implementação do método
end;
end.
Explicação da Estrutura
- Declaração da Unit: A palavra-chave
unit
seguida pelo nome da unit (UnitName
). - Seção Interface: Inclui a palavra-chave
interface
, seguida pelas declaraçõesuses
e os tipos públicos, classes, procedimentos e funções. Esta seção declara o que é exposto para outras units. - Seção Implementation: Começa com a palavra-chave
implementation
, onde os métodos e funções declarados na seçãointerface
são implementados. - Seção Initialization (Opcional): Esta seção, não presente no exemplo, pode conter código que é executado quando a unit é carregada.
- Seção Finalization (Opcional): Esta seção, também opcional, contém código que é executado quando a unit é descarregada.
Como Organizar Código em Múltiplos Units em Delphi
Dividir o código em múltiplas units é uma prática recomendada para manter a organização e a legibilidade do projeto. Aqui estão algumas dicas sobre como organizar seu código:
- Separação de Responsabilidades: Cada unit deve ter uma responsabilidade clara. Por exemplo, você pode ter uma unit para manipulação de dados, outra para a interface do usuário e outra para lógica de negócios.
- Reutilização de Código: Coloque o código reutilizável em units separadas. Isso facilita a manutenção e o reuso em diferentes partes do projeto ou até mesmo em outros projetos.
- Nomenclatura: Use nomes significativos para as units. Por exemplo,
DataModuleUnit
,BusinessLogicUnit
,UserInterfaceUnit
.
Exemplo Prático de Organização
Vamos criar um exemplo prático de organização de um projeto em múltiplas units.
Configurando o Ambiente
- Abrindo o Delphi: Abra o Delphi e crie um novo projeto VCL Forms Application.
- Configurando o Formulário Principal: Adicione os seguintes componentes ao formulário e salve como MainFormUnit:
- TButton (Button1)
Criando um Data Module
- Criação do Data Module: Com o projeto aberto crie um novo Data Module.
- Vá em
File
>New
>Other...
e selecioneData Module
.
- Vá em
- Salve o Data Module como DataModuleUnit.
- Adicione 3 componentes (TADOConnection, TADOTable e TDataSource).
Criando uma Unit
Criação do Data Module: Com o projeto aberto crie um novo Data Module.
- Criação do Data Module: Com o projeto aberto crie um novo Data Module.
- Vá em
File
>New
> Unit -Delphi
- Vá em
- Salve a Unit como BusinessLogicUnit.
Unit: DataModuleUnit
unit DataModuleUnit;
interface
uses
System.SysUtils, System.Classes, Data.DB, Data.Win.ADODB;
type
TDataModule1 = class(TDataModule)
ADOConnection1: TADOConnection;
ADOTable1: TADOTable;
DataSource1: TDataSource;
procedure DataModuleCreate(Sender: TObject);
procedure DataModuleDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
DataModule1: TDataModule1;
implementation
{%CLASSGROUP 'Vcl.Controls.TControl'}
{$R *.dfm}
procedure TDataModule1.DataModuleCreate(Sender: TObject);
begin
//Conecta ao banco de dados e abre a consulta da tabela
DataModule1.ADOConnection1.Connected := False;
DataModule1.ADOConnection1.ConnectionString := 'Provider=MSDASQL.1;Persist Security Info=False;User ID=root;Data Source=MySql ODBC 32 Ansi;Initial Catalog=world;';
DataModule1.ADOConnection1.Connected := True;
DataModule1.ADOTable1.Close;
DataModule1.ADOTable1.Open;
end;
procedure TDataModule1.DataModuleDestroy(Sender: TObject);
begin
DataModule1.ADOTable1.Close; //Fecha a tabela ao destruir o data module
DataModule1.ADOConnection1.Connected := False; //Fecha a conexão ao destruir o data module
end;
end.
Caso esteja com dificuldade em entender o Data Module e a conexão com banco de dados veja o post a seguir: https://www.codedelphi.com/2024/06/data-modules-em-delphi.html/
Unit: BusinessLogicUnit
unit BusinessLogicUnit;
interface
uses
DataModuleUnit;
type
TBusinessLogic = class
public
function GetRecordCount: Integer;
end;
implementation
function TBusinessLogic.GetRecordCount: Integer;
begin
Result := DataModule1.ADOTable1.RecordCount; //conta o número de registros da tabela ADOTable1
end;
end.
Unit: MainFormUnit
unit MainFormUnit;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses BusinessLogicUnit;
procedure TForm1.Button1Click(Sender: TObject);
var
BusinessLogic: TBusinessLogic;
begin
BusinessLogic := TBusinessLogic.Create;
try
ShowMessage('Record Count: ' + IntToStr(BusinessLogic.GetRecordCount));
finally
BusinessLogic.Free;
end;
end;
end.
Importação e Uso de Units
Para utilizar uma unit em outra, você deve declará-la na seção uses
da unit que deseja fazer a importação.
Importação de Units
No exemplo acima, a MainFormUnit
importa a BusinessLogicUnit
na cláusula uses
:
uses BusinessLogicUnit;
Note que pode haver duas cláusulas uses, uma que fica logo a baixo de interface e serve para declarar as units de bibliotecas do próprio Delphi, e as units que serão utilizadas nas classes. A outra fica logo abaixo de implementation e serve para declarar as units de bibliotecas do próprio projeto e que não precisarão ser utilizadas nas declarações de variáveis das classes. Veja o exemplo na unit MainFormUnit, que declarou a unit BusinesLogUnit no segundo uses, pois ela vai ser instanciada em uma variável local dentro do Button1.
Uso de Units em Delphi
A MainFormUnit
utiliza a BusinessLogicUnit
para acessar a lógica de negócios e manipular os dados. Ao clicar no botão, a aplicação cria uma instância da classe TBusinessLogic
, chama o método GetRecordCount
e exibe o número de registros, por sua vez a BusinessLogicUnit utiliza a DataModuleUnit para acessar os dados da tabela.
Veja abaixo a ilustração do projeto utilizando Units:
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/Units
Conclusão
Organizar o código em units é uma prática essencial no desenvolvimento Delphi, promovendo a modularidade, a reutilização e a facilidade de manutenção. As units em Delphi permitem separar responsabilidades, organizar o código de forma lógica e reutilizar componentes em diferentes partes do projeto. Neste artigo, vimos a estrutura básica de uma unit, como organizar o código em múltiplas units e como importar e usar essas units em seu projeto. Com esta abordagem, você pode criar aplicações mais estruturadas, legíveis e fáceis de manter.
Nenhum comentário:
Postar um comentário