logotipo Blog Giovani Da Cruz
Delphi

Classes Seladas no Delphi e Lazarus: Conceitos e Casos de Uso

4 min de leitura 68 visualizações

class sealed Delphi And Lazarus

Introdução

Uma classe selada (sealed class) no Delphi / Lazarus é uma classe que não pode ser herdada por outras classes. Esta característica é implementada através da diretiva sealed, trazendo mais um recurso para o controle de herança e design de classes.

 

Sintaxe Básica

Para declarar uma classe selada, utilize a diretiva sealed após a declaração da classe:

type
  TMinhaClasseSelada = class sealed(TObject)
  public
    procedure MetodoExemplo;
  end;

 

Por que usar Classes Seladas?

Segurança e Imutabilidade

  • Previne modificações não intencionais da classe através de herança
  • Garante que o comportamento da classe permaneça consistente
  • Reduz a complexidade do código

Performance

  • O compilador pode otimizar melhor o código sabendo que não existirão classes derivadas
  • Chamadas de métodos podem ser resolvidas em tempo de compilação

Design mais claro

  • Comunica explicitamente a intenção do desenvolvedor
  • Torna o design do código mais previsível

 

Casos de Uso Práticos

 

Classes de Configuração

type
  TConfiguracoesAplicacao = class sealed(TObject)
  private
    FNomeServidor: string;
    FPorta: Integer;
    FTimeOut: Integer;
    class var FInstance: TConfiguracoesAplicacao;
  public
    class function GetInstance: TConfiguracoesAplicacao;
    procedure CarregarConfiguracoes;
    procedure SalvarConfiguracoes;
    
    property NomeServidor: string read FNomeServidor write FNomeServidor;
    property Porta: Integer read FPorta write FPorta;
    property TimeOut: Integer read FTimeOut write FTimeOut;
  end;

Este exemplo mostra uma classe de configurações implementando o padrão Singleton. A classe é selada para garantir que não existam variações das configurações através de herança.

 

Classes Utilitárias

type
  TFormatadorDocumentos = class sealed
  public
    class function FormatarCPF(const ACPF: string): string;
    class function FormatarCNPJ(const ACNPJ: string): string;
    class function FormatarTelefone(const ATelefone: string): string;
  end;

Classes utilitárias que contêm apenas métodos estáticos são candidatas perfeitas para serem seladas, pois não faz sentido herdar delas.

 

Classes de Valor

type
  TDinheiro = class sealed
  private
    FValor: Currency;
    FMoeda: string;
  public
    constructor Create(const AValor: Currency; const AMoeda: string);
    function Somar(const AOutroDinheiro: TDinheiro): TDinheiro;
    function Subtrair(const AOutroDinheiro: TDinheiro): TDinheiro;
    
    property Valor: Currency read FValor;
    property Moeda: string read FMoeda;
  end;

Classes que representam valores imutáveis se beneficiam de serem seladas, pois garantem que seu comportamento não será alterado.

 

Classes de Validação

type
  TValidadorEmail = class sealed
  public
    class function EmailValido(const AEmail: string): Boolean;
    class function DominioPermitido(const AEmail: string): Boolean;
    class function FormatoValido(const AEmail: string): Boolean;
  end;

Classes de validação geralmente contêm lógica específica que não deve ser alterada, tornando-as candidatas ideais para serem seladas.

 

Considerações Importantes

  1. Quando não usar classes seladas:
    • Quando você pretende criar uma hierarquia de classes
    • Quando a classe pode precisar ser estendida no futuro
    • Em frameworks que dependem de herança para funcionar
  2. Boas práticas:
    • Use classes seladas quando tiver certeza que a classe não deve ser herdada
    • Documente o motivo da classe ser selada
    • Combine com outras técnicas de programação como interfaces quando necessário

 

Conclusão

Classes seladas são uma ferramenta poderosa para design de software em Delphi / Lazarus, oferecendo benefícios de segurança, performance e clareza de design. Seu uso adequado pode resultar em código mais robusto e mais fácil de manter, especialmente em cenários onde a herança não é desejada ou necessária.

 

 

👋 E aí, dev! O que você achou deste artigo sobre classes seladas? 🤔

Compartilhe suas experiências nos comentários! 💭 Você já utilizou classes seladas em seus projetos? Tem algum caso de uso interessante para adicionar?

Vamos trocar ideias e aprender juntos! 🚀 Sua opinião é muito importante para enriquecer nossa comunidade de Programadores! 💪

 

 

🔄 Se achou interessante, compartilhe com sua rede de amigos!

 

📚 Obrigado por acompanhar até aqui! Explore outros posts relacionados no blog e continue evoluindo suas habilidades. Tem mais conteúdos sobre diversos assuntos te esperando! 👩‍💻 🔍✨

Até o próximo post. Valeu! 👋📖

 

 

 

#Delphi #Lazarus

#Programming #SoftwareDevelopment

#DelphiProgramming #DevLife

#CleanCode #BestPractices

#DesignPatterns #CodeQuality

#DevCommunity

#GiovaniDaCruz

Deixe um comentário

Seu e-mail não será publicado.