SlideShare uma empresa Scribd logo
1 de 15
Baixar para ler offline
SOLID Principies
                                   boas práticas de programação
                                           Vitor Castro




quarta-feira, 22 de agosto de 12
5 princípios

                    • Princípio da responsabilidade única
                    • Princípio do aberto/fechado
                    • Princípio da substituição de Liskov
                    • Princípio da segregação de Interfaces
                    • Princípio da inversão de dependência


quarta-feira, 22 de agosto de 12
Responsabilidade Única


                    • Responsabilidade é uma tarefa ou
                            ação que a classe de realizar
                    • A classe deve possuir uma única
                            responsabilidade




quarta-feira, 22 de agosto de 12
Aberto/Fechado
                    • Trabalha diretamente com a
                            manutenção de classes
                    • “Classes devem ser abertas para
                            extensão, mas fechadas para
                            manutenção”

                    • Uso de herança e classe abstratas que
                            se diferenciam através de tipos
                            comuns

quarta-feira, 22 de agosto de 12
Inversão de Dependência
                    • Toda classe de auto nível seja
                            completamente independente de suas
                            subclasses.

                    • As classes não podem depender dos
                            detalhes da implementação de seus
                            métodos e classes.
                    • Uso de interfaces para acoplar as
                            classes.

quarta-feira, 22 de agosto de 12
Substituição de Liskov


                    • A classe base deve poder ser
                            substituida pela sua classe filha

                    • Uso de sobrecarga de método




quarta-feira, 22 de agosto de 12
Segregação de interfaces


                    • Um interface não pode forçar uma
                            classe a implementar um método que
                            não pertence a ela.

                    • Criar interfaces exutas.



quarta-feira, 22 de agosto de 12
+ 6 princípios
                    • Princípio da equivalência de reuso
                    • Princípio do escopo em comum
                    • Princípio do reuso em comum
                    • Princípio da dependência acíclica
                    • Princípio de dependência estáveis
                    • Princípio de abstrações estáveis

quarta-feira, 22 de agosto de 12
Equivalência de reuso



                    • um código JAMAIS deverá ser copiado
                            de outro código, duplicando-o




quarta-feira, 22 de agosto de 12
Escopo em comum


                    • Classes devem possuir
                            responsabilidades únicas.
                    • Em nível de pacote, classes com
                            responsabilidades em comum devem
                            ser organizadas no mesmo pacote.




quarta-feira, 22 de agosto de 12
Reuso em comum



                    • O reuso deverá ser a nível de pacote




quarta-feira, 22 de agosto de 12
Dependência acíclica


                    • Dependência mínima entre os pacotes
                    • Uso de interfaces para diminuir o
                            acoplamento entre pacotes




quarta-feira, 22 de agosto de 12
Dependência estáveis


                    • Pacote menos estável deve ser ligado
                            em um pacote mais estável

                    • Estável = coesos




quarta-feira, 22 de agosto de 12
Abstrações estáveis


                    • Enfatiza a criação de pacotes
                            abstratos
                    • Implementação de classe que não
                            dependam de classes concretas




quarta-feira, 22 de agosto de 12
Referências


                    • Utilização dos princípios SOLID na
                            aplicação de Padrões de Projeto,
                            edição nº 50 da Engenharia de
                            Software Magazine;




quarta-feira, 22 de agosto de 12

Mais conteúdo relacionado

Mais de COTIC-PROEG (UFPA)

Mais de COTIC-PROEG (UFPA) (20)

Loop back
Loop backLoop back
Loop back
 
METEOR
METEORMETEOR
METEOR
 
Desenvolvimento de software tradicional vs ágil
Desenvolvimento de software tradicional vs ágilDesenvolvimento de software tradicional vs ágil
Desenvolvimento de software tradicional vs ágil
 
Canva
CanvaCanva
Canva
 
Git v2
Git v2Git v2
Git v2
 
Atitudes que levam ao Fracasso profissional
Atitudes que levam ao Fracasso profissionalAtitudes que levam ao Fracasso profissional
Atitudes que levam ao Fracasso profissional
 
Os 5 Sensos da Qualidade
Os 5 Sensos da QualidadeOs 5 Sensos da Qualidade
Os 5 Sensos da Qualidade
 
WATSON - O Fascinante Computador da IBM
WATSON - O Fascinante Computador da IBMWATSON - O Fascinante Computador da IBM
WATSON - O Fascinante Computador da IBM
 
Produtividade sem enrrolação
Produtividade sem enrrolaçãoProdutividade sem enrrolação
Produtividade sem enrrolação
 
LAB JavaScript
LAB JavaScriptLAB JavaScript
LAB JavaScript
 
Principios e Valores Ágeis
Principios e Valores ÁgeisPrincipios e Valores Ágeis
Principios e Valores Ágeis
 
Big data
Big dataBig data
Big data
 
Metricas para Times Ágeis
Metricas para Times ÁgeisMetricas para Times Ágeis
Metricas para Times Ágeis
 
Aplicação de Abordagens Ágeis: Estudo de Caso de utlização do SCRUM – PROEG/UFPA
Aplicação de Abordagens Ágeis: Estudo de Caso de utlização do SCRUM – PROEG/UFPAAplicação de Abordagens Ágeis: Estudo de Caso de utlização do SCRUM – PROEG/UFPA
Aplicação de Abordagens Ágeis: Estudo de Caso de utlização do SCRUM – PROEG/UFPA
 
Técnicas para Programação em Par
Técnicas para Programação em ParTécnicas para Programação em Par
Técnicas para Programação em Par
 
Feedback Canvas
Feedback CanvasFeedback Canvas
Feedback Canvas
 
5 Doenças do Gerenciamento de Projetos
5 Doenças do Gerenciamento de Projetos5 Doenças do Gerenciamento de Projetos
5 Doenças do Gerenciamento de Projetos
 
Restrospectiva ágil
Restrospectiva ágilRestrospectiva ágil
Restrospectiva ágil
 
Ponta pé inicial para uma melhoria
Ponta pé inicial para uma melhoriaPonta pé inicial para uma melhoria
Ponta pé inicial para uma melhoria
 
Gestão Ágil de Riscos
Gestão Ágil de Riscos Gestão Ágil de Riscos
Gestão Ágil de Riscos
 

SOLID Princípios Boas Programação

  • 1. SOLID Principies boas práticas de programação Vitor Castro quarta-feira, 22 de agosto de 12
  • 2. 5 princípios • Princípio da responsabilidade única • Princípio do aberto/fechado • Princípio da substituição de Liskov • Princípio da segregação de Interfaces • Princípio da inversão de dependência quarta-feira, 22 de agosto de 12
  • 3. Responsabilidade Única • Responsabilidade é uma tarefa ou ação que a classe de realizar • A classe deve possuir uma única responsabilidade quarta-feira, 22 de agosto de 12
  • 4. Aberto/Fechado • Trabalha diretamente com a manutenção de classes • “Classes devem ser abertas para extensão, mas fechadas para manutenção” • Uso de herança e classe abstratas que se diferenciam através de tipos comuns quarta-feira, 22 de agosto de 12
  • 5. Inversão de Dependência • Toda classe de auto nível seja completamente independente de suas subclasses. • As classes não podem depender dos detalhes da implementação de seus métodos e classes. • Uso de interfaces para acoplar as classes. quarta-feira, 22 de agosto de 12
  • 6. Substituição de Liskov • A classe base deve poder ser substituida pela sua classe filha • Uso de sobrecarga de método quarta-feira, 22 de agosto de 12
  • 7. Segregação de interfaces • Um interface não pode forçar uma classe a implementar um método que não pertence a ela. • Criar interfaces exutas. quarta-feira, 22 de agosto de 12
  • 8. + 6 princípios • Princípio da equivalência de reuso • Princípio do escopo em comum • Princípio do reuso em comum • Princípio da dependência acíclica • Princípio de dependência estáveis • Princípio de abstrações estáveis quarta-feira, 22 de agosto de 12
  • 9. Equivalência de reuso • um código JAMAIS deverá ser copiado de outro código, duplicando-o quarta-feira, 22 de agosto de 12
  • 10. Escopo em comum • Classes devem possuir responsabilidades únicas. • Em nível de pacote, classes com responsabilidades em comum devem ser organizadas no mesmo pacote. quarta-feira, 22 de agosto de 12
  • 11. Reuso em comum • O reuso deverá ser a nível de pacote quarta-feira, 22 de agosto de 12
  • 12. Dependência acíclica • Dependência mínima entre os pacotes • Uso de interfaces para diminuir o acoplamento entre pacotes quarta-feira, 22 de agosto de 12
  • 13. Dependência estáveis • Pacote menos estável deve ser ligado em um pacote mais estável • Estável = coesos quarta-feira, 22 de agosto de 12
  • 14. Abstrações estáveis • Enfatiza a criação de pacotes abstratos • Implementação de classe que não dependam de classes concretas quarta-feira, 22 de agosto de 12
  • 15. Referências • Utilização dos princípios SOLID na aplicação de Padrões de Projeto, edição nº 50 da Engenharia de Software Magazine; quarta-feira, 22 de agosto de 12