Post: Classes Seladas e Método Final

Alessandro Medeiros

Fala ai Radizeiros e Radizeiras, tudo bom com vocês?

Não é difícil presenciar uma situação onde uma tela do sistema foi alterada e alguma funcionalidade em outro lugar completamente diferente do sistema para de funcionar. Isso acontece devido ao alto acoplamento.

Nós como programadores resolvemos problemas específicos, que solucionamos através de nossos sistemas, e resolvemos problemas iniciais e não raramente criam novos problemas, temos os efeitos colaterais, deixando você de cabelo em pé.

Quando não programamos orientado a objetos esses efeitos colaterais são inevitáveis, seja numa manutenção ou reutilização de seus códigos.

Viajando no universo da orientação a objetos

Irei falar de um conceito da orientação a objeto, esse mundo fantástico de coisas que nós podemos desenvolver dentro do Delphi, é um paradigma para quem não trabalhava orientado a objeto, mas te garanto que é um universo muito legal e que depois que você aprender e pegar esses conceitos, você nunca mais será o mesmo… Você nunca mais irá programar de outra forma.

Depois que você começar a aplicar esses conceitos em seus projetos, verá a vantagem de se programar orientado a objeto, e como isso pode trazer uma performance muito melhor na manutenção do seu software, na reutilização de código.

Neste post estarei lhe mostrando as Classes seladas e a propriedade final para os métodos dentro de suas classes.

O que é uma classe selada?

A classe selada é uma classe que não permite ser que seja mais sobrecarregada.

No código abaixo possuímos a classe animal, e outras classes herdando dessa classe animal.


type
    TAnimal = class
        function Voz : String; virtual; abstract;
    end;

    TCachorro = class(TAnimal)
        function Voz : String; override;
    end;

    TGato = class(TAnimal)
        function Voz : String; override;
    end;

Podemos criar diversas classes que herdam de te animal como por exemplo TDinossauro.


...

TDinossauro = class(TAnimal)
    function Voz : String; override;
end;

...

Mas a classe TDinossauro é mais especializada, então podemos ter outras classes que herdam dela.


...

TTiranosauro = class(TDinossauro)
    function Voz : String; override;
end;

...

Como pode ver nós temos a classe TDinossauro  que herda de TAnimal, TTiranosauro herdou de TDinossauro, já começamos a criar uma estrutura complexa de herança, herança é uma carta que devemos usar apenas uma vez, quando chegarmos a esse ponto de especialização devemos pensar e procurar outras alternativas, e uma dessas alternativa é a classe selada.

A classe selada é muito usada na criação componentes, e quem trabalha com package, que são carregados em tempo de execução dentro de sua aplicação. Talvez você não tenha conhecido esses conceitos, mas quando se trabalha com componentes, você tem que garantir a integridade de sua classe, onde ninguém irá herdar e ter acesso a algum método privado.

Quando herdamos de uma classe temos acesso a algumas propriedade dentro dela, coisas que não são visíveis para quem está acessando de uma forma direta.

Para evitarmos essas heranças indevidas definimos nossa classe como uma classe selada, essa classe não irá mais permitir de ser herdada.


...

TTiranosauro = class sealed (TDinossauro)
    function Voz : String; override;
end;

TBabysauro = class (TTiranosauro)
end;

...

Desta forma o compilador irá me resultar em erro, devido a minha classe TTiranosauro esta selada.

Viu como podemos evitar heranças indevidas, esse padrão é muito usando quando criamos componentes, e não queremos que qualquer um herde as classes do componente criado.

Propriedade final ou método final

Ele é bem parecido com classe selada, pois ele determina o ponto final para herança, polimorfismo de um método.

O final defino que o método não pode ser mais sobrescrito.


...

TDinossauro = class(TAnimal)
    function Voz : String; override; final;
end;

TTiranosauro = class sealed (TDinossauro)
    function Voz : String; override;
end;

...

No código acima se nós tentamos rescrever o método Voz da classe TTiranosauro irá resultar em erro.

Essa propriedade define que as classes filhas que herdaram a classe não irão poder sobrescrever o método, você pode utilizar ele, mas não pode sobrescrever este método.

Aprendemos neste post dois conceitos usados na orientação a objeto, o de classe selada, não permite que essa classe seja herdada, e o final que é utilizado dentro dos métodos e não permite que eles sejam sobrescritos.

Esse post foi retirado de um de meus treinamentos, o de Certificação especialista em Programação Orientada a Objetos.

A Certificação Especialista Orientada a Objetos dará a você a oportunidade de melhorar seu software, otimizar o seu tempo e te dar a possibilidade de atender melhor os seus clientes. Conhecer a fundo esse paradigma e utilizar todos os seus benefícios irá facilitar muito a sua vida quando houver necessidade por parte de um cliente de um update rápido ou resolver um problema.

Eu vou te oferecer ainda 3 Bônus Fantásticos se você se inscrever ainda hoje

Padrões de projetos comportamentais

Aprenda de forma prática e objetiva todos os padrões comportamentais do GOF e resolva de forma simples rotinas complexas que você demorou horas para criar

Teste de software

Aprenda a criar testes unitários para seus projetos, garantindo uma melhor qualidade e segurança no resultado final dos seus projetos, utilizando DUnitX, Mock, TestInsight

E o super bônus

Introdução ao RestDataware

  • Um framework OpenSource em Delphi para construção de servidores de aplicação
  • O RestDataWare foi pensado para facilitar a vida do desenvolvedor Delphi, criando servidores de forma RAD
  • Uma série de aulas objetivas que vão te mostrar todos os recurso do Framework
  • Sai do Cliente X Servidor e comece a desenvolver aplicações 3 camadas de alta performance

CLIQUE AQUI E SAIBA MAIS SOBRE O CURSO DE CERTIFICAÇÃO ESPECIALISTA EM PROGRAMAÇÃO ORIENTADA A OBJETOS

 


Faça sua busca

CATEGORIAS

POSTS RECENTES

E caso você tem interesse de conhecer mais sobre Classes Seladas e Método Final, acesse o nosso portal do CLUBE DE PROGRAMADORES EM DELPHI
Você não terá só conteúdos relacionados ao Classes Seladas e Método Final, mas uma quantidade enorme de conteúdos que poderá lhe ajudar muito no seu dia a dia, é uma verdadeira NETFLIX para os programadores Delphi.
Gostou?
Compartilhe:

Embarque no foguete com milhares de devs para aprender desenvolvimento, evoluir de forma contínua e se manter relevante no mercado.

Dúvidas
Cadastre-se em nossa lista

Para ter acesso em primeira mão, a tudo que acontece na Academia do Código, basta se cadastrar em nossa lista

Grupo Thulio Bittencourt | Academia do Código

#FaçaPartedaHistória

Copyright © 2024 – Todos os direitos reservados