0

SOLID com Java

#Java
Renan Vale
Renan Vale

Criei este artigo com base no módulo 07 do curso de Desenvolvimento básico em Java. A cada módulo que finalizar irei criar um artigo como este, Sou iniciante e pretendo passar aqui minhas anotações e o que aprendi, espero que gostem.


O que é SOLID?

É o acrônimo dos principios da Programação Orientada a Objetos (OOP) - Descrita por Robert C. Martin ("Uncle Boss").

Auxilia o programador a escrever códigos mais Limpos, facilitando a refatoração e estimulando o reaproveitamento do código.


Significado das Siglas S.O.L.I.D

SRP - Single Responsibility Principle - (Principio da Responsabilidade Única)

A classe deve possuir uma única responsabilidade dentro do software.

"Uma classe, deve ter um, e somente um motibo para mudar"


OCP - Open Closed Principle - (Principio Aberto Fechado)

Objetos devem estar abertos para extensão, mas fechados para modificação

Quando novos comportamentos precisam ser adcionadosno software, devemos estender e não alterar o código fonte original.

"voçê deve poder estender um comportamento de classe, sem modificlo"


LSP - Liskov Substitution Principle - (Principio da Substituição de Liskov)

Classes derivada devem ser substituidas por suas classes base.

"se para cada objeto 01 do Tipo S há um objeto 02 do Tipo T de forma que, para todos os progamas P, o comportamentode P é inalterado quando 01 é substituído por 02, então S é um subtipo de T"

Barbaba Liskov 1987


ISP - Interface segregation Principle - (Principio da Segregação da Interface)

Uma classe não deve ser forçada a implementar interfaces e métodos que não serão utilizados.

É melhor criar interfaces mais específicas ao invéns de termos uma única interface genérica.

"Faça interfaces refinadas que são específicas do cliente"


DIP - Dependence Inversion Principle - (Principio da Inversão da Dependencia)

Um módulo de alto nível não deve depender de módulos de baixo nível, ambos devem depender da abstração.

Inversão de dependencia não é igual a injeção de dependencia.

"Dependa de abstração e não de implementação" 

0
2

Comentários (2)

0
Maria Moura

Maria Moura

13/08/2021 01:22

Muito bom. Esse trecho foi o que anotei tb.


Ex.: OCP


public interface DescontoLivros {

double valorDesconto();

}


public class DescontoLivroAutoAjuda implements DescontoLivro{ // DescontoLivro = interface

@Override

public double valorDesconto() {

return 0.5;

}

// na classe ControladorDeDesconto NÃO mexemos!


public void adicionaDescontoLivro (DescontoLivro descontolivro){

descontolivro.valorDesconto();

}


1
Viviane Lara

Viviane Lara

15/07/2021 07:09

Bacana! Vlw

Começando com desenvolvimento FullStack

Brasil