SlideShare una empresa de Scribd logo
1 de 21
Princípios SOLID


 Dyego Costa
{ Princípios SOLID }
SRP

DIP             OCP
      SOLID

  ISP         LSP
Single
               Responsibility



Dependency                        Open
 Inversion

             SOLID
                                    Closed




     Interface             Liskov
      Segregation          Substitution
{ Single Responsibility Principle
                }
             < SRP >




  O princípio de responsabilidade única diz que todo objeto deve ter
   uma única responsabilidade, e que a responsabilidade deve estar
                       encapsulada pela classe.




  Nunca deve existir mais de um motivo para que uma classe mude.

                                         Robert C. “Uncle Bob” Martin
Só porque você pode, não quer dizer que deve
{ Acoplamento vs. Coesão }
coesão



                       A coesão é definida, em
                    termos acadêmicos, como a
                     medida de proximidade no
                   relacionamento entre todas as
                   responsabilidades, os dados e
                     os métodos de uma classe.




“maior = melhor”
acoplamento


                   O acoplamento entre classes
                      ou subsistemas é uma
                     medida da interconexão
                      entre essas classes ou
                          subsistemas.



“menor = melhor”
demonstração
{ Open/Closed Principle }
          < OCP >




              O princípio Aberto/Fechado diz que
                    toda entidade de software
            (classe, função, módulos, etc) deve estar
              aberta para extensão e fechada para
                          modificação.
demonstração
{ Liskov Substitution Principle }
                               < LSP >




  “Se para cada objeto o¹ do tipo S existe um objeto o² do tipo T que
 “Funções que usam referências para classes bases devem ser capazes
 para todos programas P definidos em termos de T, o comportamento
      de usar objetos de classes derivadas sem estar ciente disso.”
 de P é imutável quando o¹ é substituído por o². Então S é um subtipo
                                  de T.”
                                           Robert C. “Uncle Bob” Martin
                                                         Barbara Liskov
{ Regras }

 Pré-condições e pós-condições
   Pré-condição não deve ser fortalecida e a
   pós-condição não deve ser enfraquecida.

 Invariância
   Se a condição de um processo é
   verdadeiro na classe base deve
   permanecer verdadeiro na subclasse.

 Histórico de contrato
   As subclasses devem implementar todos
   os membros de suas classes base.
{ demonstração
      }
{ Interface Segregation Principle
                  }
               < ISP >




   O Princípio da Segregação de Interface afirma que os clientes não
  deveriam ser forçados a depender de interfaces que eles não usam.
{ demonstração
      }
{ Dependency Inversion
                Principle }
                    < DIP >




Módulos de alto nível não devem depender de módulos de baixo nível. Ambos
devem depender de abstrações.
Em segundo lugar, abstrações não devem depender de detalhes.
Detalhes devem depender de abstrações.
demonstração
Containers de
Dependency Injection
{ Referências / Dicas }


           http://blackwasp.co.uk


                        http://dimecast.net

            http://dofactory.com

                       http://pluralsight.com

           http://codebetter.com

Más contenido relacionado

Similar a Princípios SOLID para arquitetura de software

Fundamentos e princípios do projeto orientado a objetos
Fundamentos e princípios do projeto orientado a objetosFundamentos e princípios do projeto orientado a objetos
Fundamentos e princípios do projeto orientado a objetosEvandro Agnes
 
Arquitetura mix thiagoboufleuhr
Arquitetura mix thiagoboufleuhrArquitetura mix thiagoboufleuhr
Arquitetura mix thiagoboufleuhrThiago Boufleuhr
 
Hacking Evening - Liskov Substitution Principle
Hacking Evening - Liskov Substitution PrincipleHacking Evening - Liskov Substitution Principle
Hacking Evening - Liskov Substitution PrincipleElaine Naomi
 
Cocoaheads Brasil SP - 26/04/16 - SOLID
Cocoaheads Brasil SP - 26/04/16 - SOLIDCocoaheads Brasil SP - 26/04/16 - SOLID
Cocoaheads Brasil SP - 26/04/16 - SOLIDBruno Mazzo
 
Livro Código limpo: Classes
Livro Código limpo:  ClassesLivro Código limpo:  Classes
Livro Código limpo: ClassesInael Rodrigues
 
QConSP 2012 - SOLID em 5 minutos
QConSP 2012 - SOLID em 5 minutosQConSP 2012 - SOLID em 5 minutos
QConSP 2012 - SOLID em 5 minutosSuelen Carvalho
 
OCP - The Open Close Principle - Princípio aberto/fechado
OCP - The Open Close Principle - Princípio aberto/fechadoOCP - The Open Close Principle - Princípio aberto/fechado
OCP - The Open Close Principle - Princípio aberto/fechadoEngenharia de Software Ágil
 
TDC 2019 Clean Architeture com .net core
TDC 2019  Clean Architeture com .net coreTDC 2019  Clean Architeture com .net core
TDC 2019 Clean Architeture com .net coreRodolfo Fadino Junior
 
Curso : Introdução Orientação a Objetos
Curso : Introdução Orientação a ObjetosCurso : Introdução Orientação a Objetos
Curso : Introdução Orientação a Objetosdanielrpgj30
 
Orientação a Objetos - Princípios SOLID
Orientação a Objetos - Princípios SOLIDOrientação a Objetos - Princípios SOLID
Orientação a Objetos - Princípios SOLIDVinicius Quaiato
 
TDC2022 - Como desacoplar Componentes aplicando DI e IoC com Kotlin e Spring....
TDC2022 - Como desacoplar Componentes aplicando DI e IoC com Kotlin e Spring....TDC2022 - Como desacoplar Componentes aplicando DI e IoC com Kotlin e Spring....
TDC2022 - Como desacoplar Componentes aplicando DI e IoC com Kotlin e Spring....Fabiano Góes
 

Similar a Princípios SOLID para arquitetura de software (20)

Fundamentos e princípios do projeto orientado a objetos
Fundamentos e princípios do projeto orientado a objetosFundamentos e princípios do projeto orientado a objetos
Fundamentos e princípios do projeto orientado a objetos
 
Java - Boas práticas
Java - Boas práticasJava - Boas práticas
Java - Boas práticas
 
Princípios S.O.L.I.D.
Princípios S.O.L.I.D.Princípios S.O.L.I.D.
Princípios S.O.L.I.D.
 
Solid
SolidSolid
Solid
 
Arquitetura mix thiagoboufleuhr
Arquitetura mix thiagoboufleuhrArquitetura mix thiagoboufleuhr
Arquitetura mix thiagoboufleuhr
 
Hacking Evening - Liskov Substitution Principle
Hacking Evening - Liskov Substitution PrincipleHacking Evening - Liskov Substitution Principle
Hacking Evening - Liskov Substitution Principle
 
Princípios SOLID
Princípios SOLIDPrincípios SOLID
Princípios SOLID
 
Padrões de Projeto
Padrões de ProjetoPadrões de Projeto
Padrões de Projeto
 
Cocoaheads Brasil SP - 26/04/16 - SOLID
Cocoaheads Brasil SP - 26/04/16 - SOLIDCocoaheads Brasil SP - 26/04/16 - SOLID
Cocoaheads Brasil SP - 26/04/16 - SOLID
 
Livro Código limpo: Classes
Livro Código limpo:  ClassesLivro Código limpo:  Classes
Livro Código limpo: Classes
 
Interface
InterfaceInterface
Interface
 
QConSP 2012 - SOLID em 5 minutos
QConSP 2012 - SOLID em 5 minutosQConSP 2012 - SOLID em 5 minutos
QConSP 2012 - SOLID em 5 minutos
 
Princípios SOLID
Princípios SOLIDPrincípios SOLID
Princípios SOLID
 
OCP - The Open Close Principle - Princípio aberto/fechado
OCP - The Open Close Principle - Princípio aberto/fechadoOCP - The Open Close Principle - Princípio aberto/fechado
OCP - The Open Close Principle - Princípio aberto/fechado
 
TDC 2019 Clean Architeture com .net core
TDC 2019  Clean Architeture com .net coreTDC 2019  Clean Architeture com .net core
TDC 2019 Clean Architeture com .net core
 
Curso : Introdução Orientação a Objetos
Curso : Introdução Orientação a ObjetosCurso : Introdução Orientação a Objetos
Curso : Introdução Orientação a Objetos
 
Orientação a Objetos - Princípios SOLID
Orientação a Objetos - Princípios SOLIDOrientação a Objetos - Princípios SOLID
Orientação a Objetos - Princípios SOLID
 
Sap – stablility and abstract principle
Sap – stablility and abstract principleSap – stablility and abstract principle
Sap – stablility and abstract principle
 
Sap – stablility and abstract principle
Sap – stablility and abstract principleSap – stablility and abstract principle
Sap – stablility and abstract principle
 
TDC2022 - Como desacoplar Componentes aplicando DI e IoC com Kotlin e Spring....
TDC2022 - Como desacoplar Componentes aplicando DI e IoC com Kotlin e Spring....TDC2022 - Como desacoplar Componentes aplicando DI e IoC com Kotlin e Spring....
TDC2022 - Como desacoplar Componentes aplicando DI e IoC com Kotlin e Spring....
 

Princípios SOLID para arquitetura de software

  • 3. SRP DIP OCP SOLID ISP LSP
  • 4. Single Responsibility Dependency Open Inversion SOLID Closed Interface Liskov Segregation Substitution
  • 5. { Single Responsibility Principle } < SRP > O princípio de responsabilidade única diz que todo objeto deve ter uma única responsabilidade, e que a responsabilidade deve estar encapsulada pela classe. Nunca deve existir mais de um motivo para que uma classe mude. Robert C. “Uncle Bob” Martin
  • 6. Só porque você pode, não quer dizer que deve
  • 7. { Acoplamento vs. Coesão }
  • 8. coesão A coesão é definida, em termos acadêmicos, como a medida de proximidade no relacionamento entre todas as responsabilidades, os dados e os métodos de uma classe. “maior = melhor”
  • 9. acoplamento O acoplamento entre classes ou subsistemas é uma medida da interconexão entre essas classes ou subsistemas. “menor = melhor”
  • 11. { Open/Closed Principle } < OCP > O princípio Aberto/Fechado diz que toda entidade de software (classe, função, módulos, etc) deve estar aberta para extensão e fechada para modificação.
  • 13. { Liskov Substitution Principle } < LSP > “Se para cada objeto o¹ do tipo S existe um objeto o² do tipo T que “Funções que usam referências para classes bases devem ser capazes para todos programas P definidos em termos de T, o comportamento de usar objetos de classes derivadas sem estar ciente disso.” de P é imutável quando o¹ é substituído por o². Então S é um subtipo de T.” Robert C. “Uncle Bob” Martin Barbara Liskov
  • 14. { Regras }  Pré-condições e pós-condições Pré-condição não deve ser fortalecida e a pós-condição não deve ser enfraquecida.  Invariância Se a condição de um processo é verdadeiro na classe base deve permanecer verdadeiro na subclasse.  Histórico de contrato As subclasses devem implementar todos os membros de suas classes base.
  • 16. { Interface Segregation Principle } < ISP > O Princípio da Segregação de Interface afirma que os clientes não deveriam ser forçados a depender de interfaces que eles não usam.
  • 18. { Dependency Inversion Principle } < DIP > Módulos de alto nível não devem depender de módulos de baixo nível. Ambos devem depender de abstrações. Em segundo lugar, abstrações não devem depender de detalhes. Detalhes devem depender de abstrações.
  • 21. { Referências / Dicas } http://blackwasp.co.uk http://dimecast.net http://dofactory.com http://pluralsight.com http://codebetter.com