SlideShare a Scribd company logo
1 of 8
Princípios SOLID
SOLID é um acrônimo dos cinco primeiros
princípios da programação orientada a objetos e
design de código identificados por Robert C.
Martin (ou Uncle Bob) por volta do ano 2000.
Os princípios SOLID devem ser aplicados para se obter os benefícios
da orientação a objetos, tais como:
 Seja fácil de se manter, adaptar e se ajustar às alterações de escopo;
 Seja testável e de fácil entendimento;
 Seja extensível para alterações com o menor esforço necessário;
 Que forneça o máximo de reaproveitamento;
 Que permaneça o máximo de tempo possível em utilização.
Utilizando os princípios SOLID é possível evitar problemas muito
comuns:
 Dificuldade na testabilidade / criação de testes de unidade;
 Código macarrônico, sem estrutura ou padrão;
 Dificuldades de isolar funcionalidades;
 Duplicação de código, uma alteração precisa ser feita em N pontos;
 Fragilidade, o código quebra facilmente em vários pontos após
alguma mudança.
SRP - Single Responsability Principle
"A class should have one, and only one,
reason to change“
“Uma classe deve ter um, e apenas um,
motivo para ser modificada”.
OCP – Open Closed Principle
“Software entities (classes, modules, functions, etc.)
should be open for extension, but closed for
modification.”
“Entidades de software (classes, módulos, funções,
etc) devem estar abertas para extensão, mas
fechadas para modificação.”
LSP- Liskov Substitution Principle
“Let q(x) be a property provable about objects x of type T. Then q(y)
should be provable for objects y of type S, where S is a subtype of T.”
“Se q(x) é uma propriedade demonstrável dos objetos x de tipo T.
Então q(y) deve ser verdadeiro para objetos y de tipo S onde S é um
subtipo de T.”
“Uma classe base deve poder ser substituída pela sua classe
derivada.”
Se nada como um pato, voa como um pato, porém precisa de baterias, provavelmente você possui um problema de abstração
ISP - Interface Segregation Principle
“States that no client should be forced to
depend on methods it does not use “
“Clientes não devem ser forçados a depender
de métodos que não usam.”
Muitas interfaces específicas são melhores do que uma interface única.
DIP - Dependency Inversion Principle
"High-level modules should not depend on low-level
modules. Both should depend on abstractions.
Abstractions should not depend on details. Details should
depend on abstractions. “
“Módulos de alto nível não devem depender de módulos de
baixo nível. Ambos devem depender de abstrações;
Abstrações não devem depender de detalhes. Detalhes
devem depender de abstrações.”
Dependa de uma abstração e não de uma implementação.
Dúvidas? Mantenha sempre o contato.
Muito Obrigado !!!
@EduardoPiresBR
www.eduardopires.net.br
Eduardo Pires

More Related Content

What's hot

SOLID Design Principles
SOLID Design PrinciplesSOLID Design Principles
SOLID Design PrinciplesAndreas Enbohm
 
Single Responsibility Principle
Single Responsibility PrincipleSingle Responsibility Principle
Single Responsibility PrincipleEyal Golan
 
Introduction to SOLID Principles
Introduction to SOLID PrinciplesIntroduction to SOLID Principles
Introduction to SOLID PrinciplesGanesh Samarthyam
 
Geecon09: SOLID Design Principles
Geecon09: SOLID Design PrinciplesGeecon09: SOLID Design Principles
Geecon09: SOLID Design PrinciplesBruno Bossola
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasRodrigo Branas
 
Coding Best Practices
Coding Best PracticesCoding Best Practices
Coding Best Practicesmh_azad
 
Design principles - SOLID
Design principles - SOLIDDesign principles - SOLID
Design principles - SOLIDPranalee Rokde
 
Refactoring Applications using SOLID Principles
Refactoring Applications using SOLID PrinciplesRefactoring Applications using SOLID Principles
Refactoring Applications using SOLID PrinciplesSteven Smith
 
Mini curso de testes ágeis
Mini curso de testes ágeisMini curso de testes ágeis
Mini curso de testes ágeisQualister
 
SOLID Design Principles applied in Java
SOLID Design Principles applied in JavaSOLID Design Principles applied in Java
SOLID Design Principles applied in JavaIonut Bilica
 
Clean code - Mantenha seu código limpo
Clean code - Mantenha seu código limpoClean code - Mantenha seu código limpo
Clean code - Mantenha seu código limpoTiago Bencardino
 
Как писать красивый код или основы SOLID
Как писать красивый код или основы SOLIDКак писать красивый код или основы SOLID
Как писать красивый код или основы SOLIDPavel Tsukanov
 
Introdução ao Domain-Driven Design
Introdução ao Domain-Driven DesignIntrodução ao Domain-Driven Design
Introdução ao Domain-Driven DesignAndré Borgonovo
 
Princípios de Programação Orientada a Objetos Solid, dry e kiss
Princípios de Programação Orientada a Objetos Solid, dry  e kiss Princípios de Programação Orientada a Objetos Solid, dry  e kiss
Princípios de Programação Orientada a Objetos Solid, dry e kiss DanielChristofolli
 
Introdução ao GitHub e Git
Introdução ao GitHub  e GitIntrodução ao GitHub  e Git
Introdução ao GitHub e GitIgor Steinmacher
 

What's hot (20)

SOLID Design Principles
SOLID Design PrinciplesSOLID Design Principles
SOLID Design Principles
 
Single Responsibility Principle
Single Responsibility PrincipleSingle Responsibility Principle
Single Responsibility Principle
 
Introduction to SOLID Principles
Introduction to SOLID PrinciplesIntroduction to SOLID Principles
Introduction to SOLID Principles
 
Arquitetura Limpa em .NET Core
Arquitetura Limpa em .NET CoreArquitetura Limpa em .NET Core
Arquitetura Limpa em .NET Core
 
Geecon09: SOLID Design Principles
Geecon09: SOLID Design PrinciplesGeecon09: SOLID Design Principles
Geecon09: SOLID Design Principles
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo Branas
 
Solid Principles
Solid PrinciplesSolid Principles
Solid Principles
 
Programação web e o front-end
Programação web e o front-endProgramação web e o front-end
Programação web e o front-end
 
Coding Best Practices
Coding Best PracticesCoding Best Practices
Coding Best Practices
 
Design principles - SOLID
Design principles - SOLIDDesign principles - SOLID
Design principles - SOLID
 
Refactoring Applications using SOLID Principles
Refactoring Applications using SOLID PrinciplesRefactoring Applications using SOLID Principles
Refactoring Applications using SOLID Principles
 
Mini curso de testes ágeis
Mini curso de testes ágeisMini curso de testes ágeis
Mini curso de testes ágeis
 
SOLID Design Principles applied in Java
SOLID Design Principles applied in JavaSOLID Design Principles applied in Java
SOLID Design Principles applied in Java
 
Clean code - Mantenha seu código limpo
Clean code - Mantenha seu código limpoClean code - Mantenha seu código limpo
Clean code - Mantenha seu código limpo
 
Как писать красивый код или основы SOLID
Как писать красивый код или основы SOLIDКак писать красивый код или основы SOLID
Как писать красивый код или основы SOLID
 
Solid Principles
Solid PrinciplesSolid Principles
Solid Principles
 
Introdução ao Domain-Driven Design
Introdução ao Domain-Driven DesignIntrodução ao Domain-Driven Design
Introdução ao Domain-Driven Design
 
Clean code: SOLID
Clean code: SOLIDClean code: SOLID
Clean code: SOLID
 
Princípios de Programação Orientada a Objetos Solid, dry e kiss
Princípios de Programação Orientada a Objetos Solid, dry  e kiss Princípios de Programação Orientada a Objetos Solid, dry  e kiss
Princípios de Programação Orientada a Objetos Solid, dry e kiss
 
Introdução ao GitHub e Git
Introdução ao GitHub  e GitIntrodução ao GitHub  e Git
Introdução ao GitHub e Git
 

Similar to SOLID - Teoria e Prática

boas praticas
boas praticasboas praticas
boas praticaslcbj
 
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
 
qualidade de código: boas práticas, princípios e padrões
qualidade de código: boas práticas, princípios e padrõesqualidade de código: boas práticas, princípios e padrões
qualidade de código: boas práticas, princípios e padrõesedgarddavidson.com
 
Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...
Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...
Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...Vinicius Pulgatti
 
Boas práticas para desenvolvimento de software
Boas práticas para desenvolvimento de softwareBoas práticas para desenvolvimento de software
Boas práticas para desenvolvimento de softwarePedro Hübner
 
Princípios solid
Princípios solidPrincípios solid
Princípios solidDyego Costa
 
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
 
SOLID Os princípios da linguagem orientada a objeto
SOLID Os princípios da linguagem orientada a objetoSOLID Os princípios da linguagem orientada a objeto
SOLID Os princípios da linguagem orientada a objetoAlberto Monteiro
 
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
 
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
 

Similar to SOLID - Teoria e Prática (20)

Princípios SOLID
Princípios SOLIDPrincípios SOLID
Princípios SOLID
 
boas praticas
boas praticasboas praticas
boas praticas
 
Clean architecture
Clean architectureClean architecture
Clean architecture
 
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
 
Dojo solid
Dojo solidDojo solid
Dojo solid
 
qualidade de código: boas práticas, princípios e padrões
qualidade de código: boas práticas, princípios e padrõesqualidade de código: boas práticas, princípios e padrões
qualidade de código: boas práticas, princípios e padrões
 
Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...
Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...
Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...
 
Solid
SolidSolid
Solid
 
Java - Boas práticas
Java - Boas práticasJava - Boas práticas
Java - Boas práticas
 
Boas práticas para desenvolvimento de software
Boas práticas para desenvolvimento de softwareBoas práticas para desenvolvimento de software
Boas práticas para desenvolvimento de software
 
Princípios solid
Princípios solidPrincípios solid
Princípios solid
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
Apres s4
Apres s4 Apres s4
Apres s4
 
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
 
Arquitetura mix thiagoboufleuhr
Arquitetura mix thiagoboufleuhrArquitetura mix thiagoboufleuhr
Arquitetura mix thiagoboufleuhr
 
SOLID Os princípios da linguagem orientada a objeto
SOLID Os princípios da linguagem orientada a objetoSOLID Os princípios da linguagem orientada a objeto
SOLID Os princípios da linguagem orientada a objeto
 
Princípios SOLID
Princípios SOLIDPrincípios SOLID
Princípios SOLID
 
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
 
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
 
Aula05 frameworks
Aula05 frameworksAula05 frameworks
Aula05 frameworks
 

More from Eduardo Pires

Aplicações Conectadas com ASP.NET WebHooks
Aplicações Conectadas com ASP.NET WebHooksAplicações Conectadas com ASP.NET WebHooks
Aplicações Conectadas com ASP.NET WebHooksEduardo Pires
 
Futuro do ASP.NET vNext - MVP ShowCast
Futuro do ASP.NET vNext - MVP ShowCast Futuro do ASP.NET vNext - MVP ShowCast
Futuro do ASP.NET vNext - MVP ShowCast Eduardo Pires
 
ASP.NET Identity - O Novo componente de Membership do ASP.NET
ASP.NET Identity - O Novo componente de Membership do ASP.NETASP.NET Identity - O Novo componente de Membership do ASP.NET
ASP.NET Identity - O Novo componente de Membership do ASP.NETEduardo Pires
 
Novidades do ASP.NET 5.X
Novidades do ASP.NET 5.XNovidades do ASP.NET 5.X
Novidades do ASP.NET 5.XEduardo Pires
 
Campus Party 2014 - Desenvolvimento Web com ASP.NET
Campus Party 2014 - Desenvolvimento Web com ASP.NETCampus Party 2014 - Desenvolvimento Web com ASP.NET
Campus Party 2014 - Desenvolvimento Web com ASP.NETEduardo Pires
 
Comunicação em Tempo Real com ASP.Net SignalR
Comunicação em Tempo Real com ASP.Net SignalRComunicação em Tempo Real com ASP.Net SignalR
Comunicação em Tempo Real com ASP.Net SignalREduardo Pires
 

More from Eduardo Pires (7)

Aplicações Conectadas com ASP.NET WebHooks
Aplicações Conectadas com ASP.NET WebHooksAplicações Conectadas com ASP.NET WebHooks
Aplicações Conectadas com ASP.NET WebHooks
 
Futuro do ASP.NET vNext - MVP ShowCast
Futuro do ASP.NET vNext - MVP ShowCast Futuro do ASP.NET vNext - MVP ShowCast
Futuro do ASP.NET vNext - MVP ShowCast
 
ASP.NET Identity - O Novo componente de Membership do ASP.NET
ASP.NET Identity - O Novo componente de Membership do ASP.NETASP.NET Identity - O Novo componente de Membership do ASP.NET
ASP.NET Identity - O Novo componente de Membership do ASP.NET
 
O Futuro do ASP.NET
O Futuro do ASP.NETO Futuro do ASP.NET
O Futuro do ASP.NET
 
Novidades do ASP.NET 5.X
Novidades do ASP.NET 5.XNovidades do ASP.NET 5.X
Novidades do ASP.NET 5.X
 
Campus Party 2014 - Desenvolvimento Web com ASP.NET
Campus Party 2014 - Desenvolvimento Web com ASP.NETCampus Party 2014 - Desenvolvimento Web com ASP.NET
Campus Party 2014 - Desenvolvimento Web com ASP.NET
 
Comunicação em Tempo Real com ASP.Net SignalR
Comunicação em Tempo Real com ASP.Net SignalRComunicação em Tempo Real com ASP.Net SignalR
Comunicação em Tempo Real com ASP.Net SignalR
 

SOLID - Teoria e Prática

  • 1.
  • 2. Princípios SOLID SOLID é um acrônimo dos cinco primeiros princípios da programação orientada a objetos e design de código identificados por Robert C. Martin (ou Uncle Bob) por volta do ano 2000. Os princípios SOLID devem ser aplicados para se obter os benefícios da orientação a objetos, tais como:  Seja fácil de se manter, adaptar e se ajustar às alterações de escopo;  Seja testável e de fácil entendimento;  Seja extensível para alterações com o menor esforço necessário;  Que forneça o máximo de reaproveitamento;  Que permaneça o máximo de tempo possível em utilização. Utilizando os princípios SOLID é possível evitar problemas muito comuns:  Dificuldade na testabilidade / criação de testes de unidade;  Código macarrônico, sem estrutura ou padrão;  Dificuldades de isolar funcionalidades;  Duplicação de código, uma alteração precisa ser feita em N pontos;  Fragilidade, o código quebra facilmente em vários pontos após alguma mudança.
  • 3. SRP - Single Responsability Principle "A class should have one, and only one, reason to change“ “Uma classe deve ter um, e apenas um, motivo para ser modificada”.
  • 4. OCP – Open Closed Principle “Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification.” “Entidades de software (classes, módulos, funções, etc) devem estar abertas para extensão, mas fechadas para modificação.”
  • 5. LSP- Liskov Substitution Principle “Let q(x) be a property provable about objects x of type T. Then q(y) should be provable for objects y of type S, where S is a subtype of T.” “Se q(x) é uma propriedade demonstrável dos objetos x de tipo T. Então q(y) deve ser verdadeiro para objetos y de tipo S onde S é um subtipo de T.” “Uma classe base deve poder ser substituída pela sua classe derivada.” Se nada como um pato, voa como um pato, porém precisa de baterias, provavelmente você possui um problema de abstração
  • 6. ISP - Interface Segregation Principle “States that no client should be forced to depend on methods it does not use “ “Clientes não devem ser forçados a depender de métodos que não usam.” Muitas interfaces específicas são melhores do que uma interface única.
  • 7. DIP - Dependency Inversion Principle "High-level modules should not depend on low-level modules. Both should depend on abstractions. Abstractions should not depend on details. Details should depend on abstractions. “ “Módulos de alto nível não devem depender de módulos de baixo nível. Ambos devem depender de abstrações; Abstrações não devem depender de detalhes. Detalhes devem depender de abstrações.” Dependa de uma abstração e não de uma implementação.
  • 8. Dúvidas? Mantenha sempre o contato. Muito Obrigado !!! @EduardoPiresBR www.eduardopires.net.br Eduardo Pires