Zum Hauptinhalt springen
tsecurity.de LIVE
Echtzeit-Radar & Feeds
Alle RSS Feeds
👥 Community & Social
Sichere ProgrammierungBuilding In-Browser Private Tools: When the Server Is the Liability(23.09.2026 um 08:54 Uhr)
Sichere ProgrammierungYour Order Fulfillment Workflow Is One 24-Hour Wait Away From Chaos(23.09.2026 um 08:54 Uhr)
Sichere Programmierungflet media library(23.09.2026 um 08:54 Uhr)
Sichere ProgrammierungRunning Lightdash on Snowpark Container Services(23.09.2026 um 08:55 Uhr)
Sichere ProgrammierungThe Impossible Filter Gallery Transition in CSS Only(23.09.2026 um 08:59 Uhr)
Sichere ProgrammierungVerifiable Data > Claimed Data: What i'm Trying to do with Ori's List(23.09.2026 um 09:08 Uhr)
Sichere ProgrammierungWhat Really Happens When You Upload a Photo to Instagram?(23.09.2026 um 09:08 Uhr)
Sichere ProgrammierungBuilding In-Browser Private Tools: When the Server Is the Liability(23.09.2026 um 08:54 Uhr)
Sichere ProgrammierungYour Order Fulfillment Workflow Is One 24-Hour Wait Away From Chaos(23.09.2026 um 08:54 Uhr)
Sichere Programmierungflet media library(23.09.2026 um 08:54 Uhr)
Sichere ProgrammierungRunning Lightdash on Snowpark Container Services(23.09.2026 um 08:55 Uhr)
Sichere ProgrammierungThe Impossible Filter Gallery Transition in CSS Only(23.09.2026 um 08:59 Uhr)
Sichere ProgrammierungVerifiable Data > Claimed Data: What i'm Trying to do with Ori's List(23.09.2026 um 09:08 Uhr)
Sichere ProgrammierungWhat Really Happens When You Upload a Photo to Instagram?(23.09.2026 um 09:08 Uhr)
Intelligence View
⚡ tsecurity.de Intelligence

LSP - Liskov Substitution Principle (Princípio da Substituição de Liskov)

O terceiro princípio é o Liskov Substituition Principle. Ele foi definido por Barbara Liskov em 1987 e, embora que por definição academia pareça ser um “bicho de setes cabeças”, na prática é bem simples e ideal para criar sistemas robustos.…

0
↗ Quelle (dev.to)
Reagiere als Erste:r — dein Feedback zählt!

O terceiro princípio é o Liskov Substituition Principle. Ele foi definido por Barbara Liskov em 1987 e, embora que por definição academia pareça ser um “bicho de setes cabeças”, na prática é bem simples e ideal para criar sistemas robustos.



O princípio diz que: Uma classe derivada deve poder ser substituída por sua classe base sem que o comportamento do programa seja alterado ou quebrado.



Para cumprir o príncpio pense assim: “O filho (classe que herda) deve conseguir fazer tudo que o pai (classe pai) prometeu que faria”. Se o pai diz "eu sei somar dois números", o filho não pode dizer "eu só sei somar se os números forem positivos". Isso seria uma surpresa desagradável para quem usa o código.






Analogia com Pássaros



Imagine que você tem um sistema para um zoológico.




  1. Você cria a Entidade Passaro

  2. Você define que todo Passaro tem a habilidade de voar.



Até aqui, tudo bem. Aí você cria os tipos específicos:





  • Pardal (É um Pássaro): Voa? Sim. ✅ (Tudo certo, segue o princípio).


  • Águia (É um Pássaro): Voa? Sim. ✅ (Tudo certo).



Agora vem o problema. Você precisa adicionar um Pinguim.





  • Pinguim (É um Pássaro): Voa? Não.






Onde o princípio quebra?



Se você tem uma parte do seu código que diz: “Pegue todos os pássaros e faça-os voar”, quando chegar a vez do Pinguim o programa vai travar ou dar erro, porque pinguins não voam. Na aplicação promete que todo pássaro voa, mas o pinguim não cumpre essa promessa.






Como consertar o exemplo do Pinguim?



Em vez de colocar "Voar" na categoria principal Passaro, você deve criar uma categoria mais específica ou separar as habilidades:




  1. Classe `Passaro` (Tem bico, bota ovos).

  2. Classe PassaroQueVoa (Herda de Pássaro + sabe voar).

  3. Classe PassaroQueNada Herda de Pássaro + sabe nadar).



Dessa forma o Pardal entra em PassaroQueVoa e o Peguim em PassaroQueNada



E o melhor: ninguém promete o que não pode cumprir, e o código não quebra.






Exemplo aplicado ao código



Vamos retomar o exemplo acima e desenvolver com o código com C# de duas formas, uma que viola o LSP e outra que não viola.






1. Violação Estrutural



Imagine que você tem uma classe abstrata Passaro. Em C#, é comum usarmos classes abstratas ou interfaces para definir contratos.



O exemplo abaixo viola o LSP porque o Pinguim não pode substituir Passaro sem causar efeitos colaterais (a exceção).






Classe Base






public abstract class Passaro
{
public abstract void Voar();
}









Implementação Concreta






public class Pardal : Passaro
{
public override void Voar()
{
Console.WriteLine("Pardal voando alto!");
}
}









Implementação que viola o LSP






public class Pinguim : Passaro
{
public override void Voar()
{
// O compilador obriga a implementar Voar(),
// mas a lógica não permite. O dev lança uma exceção.
throw new NotImplementedException("Pinguins não voam!");
}
}









2. O Jeito Correto



Em C#, a melhor forma de resolver isso é segregando as capacidades através de Interfaces. Nem todo pássaro é um IVoador.



Essa implementação abaixo torna impossível passar um Pinguim para um método que espera IVoador. O compilador do C# vai te impedir antes mesmo de você rodar o programa.






Definição de abstração (interface e classe abstrata)






// Define apenas o que é comum a TODOS
public abstract class Ave
{
public void Comer() { Console.WriteLine("Comendo..."); }
}

// Interface (Capacidade) separada
public interface IVoador
{
void Voar();
}









Implementações






// Pardal é uma Ave E sabe voar
public class Pardal : Ave, IVoador
{
public void Voar()
{
Console.WriteLine("Pardal voando!");
}
}

// Pinguim é apenas uma Ave (não implementa IVoador)
public class Pinguim : Ave
{
// Pode ter métodos de nadar aqui
}


Ähnliche Beiträge
🔍 Verwandte News

Auch interessante Nachrichten LSP - Liskov Substitution Principle (Princípio da Substituição de Liskov)

Thematisch verwandte Begriffe: Liskov, Substitution, Principle, Princípio · 6 Treffer

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Zum Aktualisieren ziehen
ZERO-DAY CVE-2026-96258 | A vulnerability has been found in onSite internet GmbH Auktion NG Auktio…
Advisory →
TTS Reader • tsecurity.de Voice
tsecurity.de Icon
tsecurity.de App
Offline-Lesen, Eilmeldungen & 0ms Ladezeit

Installiere tsecurity.de direkt auf deinen Home-Bildschirm für das ultimative Vollbild-Magazinerlebnis ohne Browser-Leisten.

Nächster Beitrag
Themen-Radar & Intelligence Matrix
Echtzeit-Taxonomie nach Angriffsvektoren & Plattformen

tsecurity.de Live Threat Radar

🔴 LIVE RADAR
MONITORING
AKTIV
CVE-DATENBANK
LIVE
🔍
Community Radar & Live Chat
Sentinel Bot online • Live-Stream
Dein Cluster: Security Explorer
Match:
lädt…
Verbindung zum Community-Stream wird aufgebaut...
Bearbeitungsmodus — Senden überschreibt deine Nachricht
Community-Puls — was gerade passiert
lädt…
Aktivitäten deiner Analysten
lädt…
Neues Thema oder Eilmeldung einreichen

Reiche interessante Links, Zero-Days oder Debatten ein. Die Community entscheidet per Upvote über die Veröffentlichung.

Heiß diskutierte Einreichungen
🔖 Gespeicherte Artikel
📂 Keine gespeicherten Artikel vorhanden.
Zurück Ziehen Vor
Links: vorheriger Artikel Rechts: nächster Artikel unten: schließen
News NIS-2 Frühwarnung Tier-1 Intel ⏱️ 3 Min vor 10 Min
Artikeldaten werden geladen...

Zurück: vorheriger Vor: nächster
↗ Original-Quelle
Social Reaktionen Deine Reaktion zählt
Einstufung & Relevanz-Poll 0 Stimmen
In sozialen Netzwerken teilen 1-Klick