🎯 Desvendando o Princípio do Aberto/Fechado (OCP)🔓🔒

Miguel Batista
2 min readDec 11, 2023

O Princípio do Aberto/Fechado (Open/Closed Principle — OCP) afirma que as classes, módulos e entidades de software devem estar abertos para extensão, mas fechados para modificação. Isso significa que você deve ser capaz de adicionar novos recursos ou funcionalidades a um sistema sem alterar o código existente. Vou fornecer um exemplo em C# que ilustra o OCP:

Suponha que temos um sistema que calcula o custo de envio de produtos, e queremos estender esse sistema para calcular descontos com base no tipo de cliente. Para seguir o OCP, vamos criar uma estrutura que permita a extensão sem modificação do código existente.

using System;

// Interface para definir um contrato para calculadores de custo de envio.
interface IShippingCalculator
{
double CalculateShippingCost(double orderAmount);
}

// Implementação inicial do calculador de custo de envio.
class StandardShippingCalculator : IShippingCalculator
{
public double CalculateShippingCost(double orderAmount)
{
return orderAmount * 0.05; // Taxa de envio padrĂŁo.
}
}

// Nova funcionalidade: calculador de custo de envio com desconto para clientes premium.
class PremiumShippingCalculator : IShippingCalculator
{
public double CalculateShippingCost(double orderAmount)
{
return orderAmount * 0.02; // Taxa de envio com desconto para clientes premium.
}
}

class Program
{
static void Main()
{
// Usando os calculadores de custo de envio sem modificar o cĂłdigo existente.
IShippingCalculator standardCalculator = new StandardShippingCalculator();
double standardShippingCost = standardCalculator.CalculateShippingCost(100.0);
Console.WriteLine("Custo de envio padrĂŁo: $" + standardShippingCost);

IShippingCalculator premiumCalculator = new PremiumShippingCalculator();
double premiumShippingCost = premiumCalculator.CalculateShippingCost(100.0);
Console.WriteLine("Custo de envio premium: $" + premiumShippingCost);
}
}

Neste exemplo, temos uma interface IShippingCalculator que define um contrato para calculadores de custo de envio. Em seguida, temos a implementação inicial StandardShippingCalculator, que segue o OCP.

Quando desejamos adicionar uma nova funcionalidade, como calcular o custo de envio com desconto para clientes premium, criamos uma nova classe PremiumShippingCalculator que também segue o OCP ao implementar a mesma interface.

Isso nos permite estender o sistema sem alterar o cĂłdigo existente, demonstrando o princĂ­pio do Aberto/Fechado đź‘Ź

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Miguel Batista
Miguel Batista

Written by Miguel Batista

Formado em Sistemas para Internet, sempre em contato com programação de software. Aprender e compartilhar conhecimento para soluções tech de qualidade.

No responses yet

Write a response