SlideShare une entreprise Scribd logo
1  sur  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

Contenu connexe

Tendances

Gerenciamento de riscos de segurança da informação - MOD02
Gerenciamento de riscos de segurança da informação - MOD02Gerenciamento de riscos de segurança da informação - MOD02
Gerenciamento de riscos de segurança da informação - MOD02
Fernando Palma
 
Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)
Bruno Grange
 

Tendances (20)

Apresentação Clean Code
Apresentação Clean CodeApresentação Clean Code
Apresentação Clean Code
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis ter
 
Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)
 
clean code
clean codeclean code
clean code
 
Programação Orientado a Objetos
Programação Orientado a ObjetosProgramação Orientado a Objetos
Programação Orientado a Objetos
 
Aula javascript
Aula  javascriptAula  javascript
Aula javascript
 
Gerenciamento de riscos de segurança da informação - MOD02
Gerenciamento de riscos de segurança da informação - MOD02Gerenciamento de riscos de segurança da informação - MOD02
Gerenciamento de riscos de segurança da informação - MOD02
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScript
 
Real Life Clean Architecture
Real Life Clean ArchitectureReal Life Clean Architecture
Real Life Clean Architecture
 
Diagramas de componentes
Diagramas de componentesDiagramas de componentes
Diagramas de componentes
 
Learning solid principles using c#
Learning solid principles using c#Learning solid principles using c#
Learning solid principles using c#
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração Contínua
 
POO - 11 - Prática de Herança
POO - 11 - Prática de HerançaPOO - 11 - Prática de Herança
POO - 11 - Prática de Herança
 
Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)
 
Aula 5 - Modelo de Entidade e Relacionamento - MER
Aula 5 - Modelo de Entidade e Relacionamento - MER Aula 5 - Modelo de Entidade e Relacionamento - MER
Aula 5 - Modelo de Entidade e Relacionamento - MER
 
Padrões de Projeto
Padrões de ProjetoPadrões de Projeto
Padrões de Projeto
 
Introdução a Web Services
Introdução a Web ServicesIntrodução a Web Services
Introdução a Web Services
 
Banco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoBanco de Dados - MySQL Basico
Banco de Dados - MySQL Basico
 
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADEstrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
 
React JS - Parte 1
React JS - Parte 1React JS - Parte 1
React JS - Parte 1
 

Similaire à SOLID - Teoria e Prática

boas praticas
boas praticasboas praticas
boas praticas
lcbj
 
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
edgarddavidson.com
 
Princípios solid
Princípios solidPrincípios solid
Princípios solid
Dyego 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 objetos
Evandro Agnes
 
Arquitetura mix thiagoboufleuhr
Arquitetura mix thiagoboufleuhrArquitetura mix thiagoboufleuhr
Arquitetura mix thiagoboufleuhr
Thiago Boufleuhr
 

Similaire à SOLID - Teoria e Prática (20)

Princípios SOLID
Princípios SOLIDPrincípios SOLID
Princípios 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
 
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
 

Plus de Eduardo Pires

Plus de 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