DEV Community

Cover image for Você sabe o que é SOLID❓
Adilson Oliveira
Adilson Oliveira

Posted on

Você sabe o que é SOLID❓

Não tenha medo, S.O.L.I.D é um acrônimo que representa cinco princípios de design de software orientado a objetos. Cada letra corresponde a um princípio específico. Aqui está uma breve descrição de cada um, juntamente com um exemplo de código em Java:

➡️ S - Single Responsibility Principle (Princípio da Responsabilidade Única):

Descrição: Uma classe deve ter apenas um motivo para mudar, ou seja, ela deve ter apenas uma responsabilidade.

class Calculadora {
    public int soma(int a, int b) {
        return a + b;
    }
}
Enter fullscreen mode Exit fullscreen mode

➡️ O - Open/Closed Principle (Princípio Aberto/Fechado):

Descrição: Uma classe deve estar aberta para extensão, mas fechada para modificação. Isso significa que você pode adicionar novas funcionalidades sem alterar o código existente.

interface Forma {
    double calcularArea();
}

class Quadrado implements Forma {
    public double calcularArea() {
        // lógica de cálculo de área para quadrado
    }
}

class Circulo implements Forma {
    public double calcularArea() {
        // lógica de cálculo de área para círculo
    }
}

Enter fullscreen mode Exit fullscreen mode

➡️ L - Liskov Substitution Principle (Princípio da Substituição de Liskov):

Descrição: Subtipos devem ser substituíveis por seus tipos base sem alterar a corretude do programa.

class Retangulo {
    protected int largura;
    protected int altura;

    public void setLargura(int largura) {
        this.largura = largura;
    }

    public void setAltura(int altura) {
        this.altura = altura;
    }
}

class Quadrado extends Retangulo {
    public void setLargura(int lado) {
        this.largura = lado;
        this.altura = lado;
    }

    public void setAltura(int lado) {
        this.largura = lado;
        this.altura = lado;
    }
}

Enter fullscreen mode Exit fullscreen mode

➡️ I - Interface Segregation Principle (Princípio da Segregação de Interfaces):

Descrição: Uma classe não deve ser forçada a implementar interfaces que ela não utiliza. Interfaces devem ser específicas para os clientes que as utilizam.

interface Trabalhador {
    void trabalhar();
    void descansar();
}

class Programador implements Trabalhador {
    public void trabalhar() {
        // lógica específica para programador
    }

    public void descansar() {
        // lógica específica para programador
    }
}

class Gerente implements Trabalhador {
    public void trabalhar() {
        // lógica específica para gerente
    }

    public void descansar() {
        // lógica específica para gerente
    }
}

Enter fullscreen mode Exit fullscreen mode

➡️ D - Dependency Inversion Principle (Princípio da Inversão de Dependência):

Descrição: Módulos de alto nível não devem depender de módulos de baixo nível. Ambos devem depender de abstrações. Além disso, abstrações não devem depender de detalhes, mas detalhes devem depender de abstrações.

class Motor {
    public void ligar() {
        // lógica para ligar o motor
    }
}

interface Veiculo {
    void acelerar();
}

class Carro implements Veiculo {
    private Motor motor;

    public Carro(Motor motor) {
        this.motor = motor;
    }

    public void acelerar() {
        motor.ligar();
        // lógica específica para acelerar o carro
    }
}

Enter fullscreen mode Exit fullscreen mode

Em conclusão, compreender e aplicar os princípios SOLID é crucial para desenvolver software robusto e flexível. Estes princípios fornecem uma base sólida para a construção de sistemas escaláveis, de fácil manutenção e extensíveis. 📚Ao continuar estudando e praticando esses conceitos, você estará investindo no aprimoramento das suas habilidades de design de software. Lembre-se de que a busca constante pelo conhecimento é essencial no campo do desenvolvimento de software, pois as tecnologias evoluem e novos desafios surgem. Continue explorando, participando de comunidades e projetos, e desafiando-se a aplicar esses princípios em seus próprios códigos. O compromisso com a excelência no design de software contribuirá significativamente para o seu desenvolvimento profissional. Continue estudando e progredindo!🚀

Top comments (0)