Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
@augustohp@augustohp
@Ivonascimento@Ivonascimento
@lcobucci@lcobucci
@nelson_senna@nelson_senna
@netojoaobatista@netojoaob...
Sólido, mas não engessadoSólido, mas não engessado
Código engessado apodrece
e cheira mal.
Sólido, mas não engessadoSólido, mas não engessado
Como evitar o apodrecimento
do código?
Sólido, mas não engessadoSólido, mas não engessado
Código S.O.L.I.D.

facilita a manutenção

mudanças não quebram o códi...
Sólido, mas não engessadoSólido, mas não engessado
E como meu código pode
ser S.O.L.I.D.?
S.R.P. - Princípio da responsabilidade únicaS.R.P. - Princípio da responsabilidade única
O primeiro passo,
é compreender r...
S.R.P. - Princípio da responsabilidade únicaS.R.P. - Princípio da responsabilidade única
Responsabilidade única, por quê?
S.R.P. - Princípio da responsabilidade únicaS.R.P. - Princípio da responsabilidade única
Okay, tenho apenas uma
responsabi...
S.R.P. - Princípio da responsabilidade únicaS.R.P. - Princípio da responsabilidade única
Seu código ainda fede;
Muito!
O.C.P. - Princípio Aberto/FechadoO.C.P. - Princípio Aberto/Fechado
Agora você é proibido de
editar seu código.
O.C.P. - Princípio Aberto/FechadoO.C.P. - Princípio Aberto/Fechado
Aberto e fechado?!
Não é antagônico?
O.C.P. - Princípio Aberto/FechadoO.C.P. - Princípio Aberto/Fechado
Aberto para extensão;
Fechado para edição.
O.C.P. - Princípio Aberto/FechadoO.C.P. - Princípio Aberto/Fechado
A implementação é irrelevante.
Trabalhe com abstrações.
O.C.P. - Princípio Aberto/FechadoO.C.P. - Princípio Aberto/Fechado
Herança pode ser uma solução
para variar o comportament...
O.C.P. - Princípio Aberto/FechadoO.C.P. - Princípio Aberto/Fechado
Herança?!
Eu sei trabalhar com herança!
O.C.P. - Princípio Aberto/FechadoO.C.P. - Princípio Aberto/Fechado
class User extends Database {}
L.S.P. - Princípio da substituição de LiskovL.S.P. - Princípio da substituição de Liskov
Herança é mais complexo do
que vo...
L.S.P. - Princípio da substituição de LiskovL.S.P. - Princípio da substituição de Liskov
Se q(x) é uma propriedade
demonst...
L.S.P. - Princípio da substituição de LiskovL.S.P. - Princípio da substituição de Liskov
WTF?!
L.S.P. - Princípio da substituição de LiskovL.S.P. - Princípio da substituição de Liskov
Se q(x) é uma propriedade
demonst...
L.S.P. - Princípio da substituição de LiskovL.S.P. - Princípio da substituição de Liskov
E como uso isso?
L.S.P. - Princípio da substituição de LiskovL.S.P. - Princípio da substituição de Liskov
Validação de input nunca deve
ser...
L.S.P. - Princípio da substituição de LiskovL.S.P. - Princípio da substituição de Liskov
Validação do output nunca deve
se...
L.S.P. - Princípio da substituição de LiskovL.S.P. - Princípio da substituição de Liskov
Se não posso editar o código,
com...
D.I.P. - Princípio da inversão das dependênciasD.I.P. - Princípio da inversão das dependências
Trabalhando com abstrações ...
D.I.P. - Princípio da inversão das dependênciasD.I.P. - Princípio da inversão das dependências
Mas o que é dependência?
D.I.P. - Princípio da inversão das dependênciasD.I.P. - Princípio da inversão das dependências
Em vez de criar as instânci...
D.I.P. - Princípio da inversão das dependênciasD.I.P. - Princípio da inversão das dependências
Abstração é um conceito.
Um...
D.I.P. - Princípio da inversão das dependênciasD.I.P. - Princípio da inversão das dependências
Confie na interface das coi...
D.I.P. - Princípio da inversão das dependênciasD.I.P. - Princípio da inversão das dependências
Então é só eu criar uma int...
D.I.P. - Princípio da inversão das dependênciasD.I.P. - Princípio da inversão das dependências
Esqueceu das
responsabilida...
D.I.P. - Princípio da inversão das dependênciasD.I.P. - Princípio da inversão das dependências
É esperado que seus objetos...
D.I.P. - Princípio da inversão das dependênciasD.I.P. - Princípio da inversão das dependências
Então qual a responsabilida...
I.S.P. - Princípio da segregação das interfacesI.S.P. - Princípio da segregação das interfaces
Faça com que sua interface ...
I.S.P. - Princípio da segregação das interfacesI.S.P. - Princípio da segregação das interfaces
Quanto mais coesa for a
int...
Problemas de um mau designProblemas de um mau design
Rigidez
Uma única mudança, implica na
mudança de vários outros
compon...
Problemas de um mau designProblemas de um mau design
Fragilidade
Quando mudamos alguma coisa,
partes inesperadas da aplica...
Problemas de um mau designProblemas de um mau design
Imobilidade
Fica difícil reutilizar o código,
pois fica difícil extra...
Problemas de um mau designProblemas de um mau design
Há mais maus cheiros entre seus
objetos, do que essa vã
apresentação ...
@augustohp@augustohp
@Ivonascimento@Ivonascimento
@lcobucci@lcobucci
@nelson_senna@nelson_senna
@netojoaobatista@netojoaob...
Upcoming SlideShare
Loading in …5
×

SOLID a 6 mãos

1,257 views

Published on

Apresentação sobre design de software orientado a objetos com foco nos princípios de design SOLID. A apresentação foi feita no formato PUB no InterCon PHP de 2014 e contou com a participação de @augustohp, @guilhermeblanco, @Ivonascimento, @lcobucci, @nelson_senna e @netojoaobatista.

  • DOWNLOAD THAT BOOKS INTO AVAILABLE FORMAT (2019 Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full doc Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download doc Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book that can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer that is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBooks .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story That Helped Ignite a Movement,-- Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money That the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths that Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

SOLID a 6 mãos

  1. 1. @augustohp@augustohp @Ivonascimento@Ivonascimento @lcobucci@lcobucci @nelson_senna@nelson_senna @netojoaobatista@netojoaobatista @guilhermeblanco@guilhermeblanco S.O.L.I.D.S.O.L.I.D.a 6 mãosa 6 mãos
  2. 2. Sólido, mas não engessadoSólido, mas não engessado Código engessado apodrece e cheira mal.
  3. 3. Sólido, mas não engessadoSólido, mas não engessado Como evitar o apodrecimento do código?
  4. 4. Sólido, mas não engessadoSólido, mas não engessado Código S.O.L.I.D.  facilita a manutenção  mudanças não quebram o código  é reutilizável e reaproveitável
  5. 5. Sólido, mas não engessadoSólido, mas não engessado E como meu código pode ser S.O.L.I.D.?
  6. 6. S.R.P. - Princípio da responsabilidade únicaS.R.P. - Princípio da responsabilidade única O primeiro passo, é compreender responsabilidade.
  7. 7. S.R.P. - Princípio da responsabilidade únicaS.R.P. - Princípio da responsabilidade única Responsabilidade única, por quê?
  8. 8. S.R.P. - Princípio da responsabilidade únicaS.R.P. - Princípio da responsabilidade única Okay, tenho apenas uma responsabilidade. E agora?
  9. 9. S.R.P. - Princípio da responsabilidade únicaS.R.P. - Princípio da responsabilidade única Seu código ainda fede; Muito!
  10. 10. O.C.P. - Princípio Aberto/FechadoO.C.P. - Princípio Aberto/Fechado Agora você é proibido de editar seu código.
  11. 11. O.C.P. - Princípio Aberto/FechadoO.C.P. - Princípio Aberto/Fechado Aberto e fechado?! Não é antagônico?
  12. 12. O.C.P. - Princípio Aberto/FechadoO.C.P. - Princípio Aberto/Fechado Aberto para extensão; Fechado para edição.
  13. 13. O.C.P. - Princípio Aberto/FechadoO.C.P. - Princípio Aberto/Fechado A implementação é irrelevante. Trabalhe com abstrações.
  14. 14. O.C.P. - Princípio Aberto/FechadoO.C.P. - Princípio Aberto/Fechado Herança pode ser uma solução para variar o comportamento.
  15. 15. O.C.P. - Princípio Aberto/FechadoO.C.P. - Princípio Aberto/Fechado Herança?! Eu sei trabalhar com herança!
  16. 16. O.C.P. - Princípio Aberto/FechadoO.C.P. - Princípio Aberto/Fechado class User extends Database {}
  17. 17. L.S.P. - Princípio da substituição de LiskovL.S.P. - Princípio da substituição de Liskov Herança é mais complexo do que você imagina!
  18. 18. L.S.P. - Princípio da substituição de LiskovL.S.P. - Princípio da substituição de Liskov 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.
  19. 19. L.S.P. - Princípio da substituição de LiskovL.S.P. - Princípio da substituição de Liskov WTF?!
  20. 20. L.S.P. - Princípio da substituição de LiskovL.S.P. - Princípio da substituição de Liskov 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.
  21. 21. L.S.P. - Princípio da substituição de LiskovL.S.P. - Princípio da substituição de Liskov E como uso isso?
  22. 22. L.S.P. - Princípio da substituição de LiskovL.S.P. - Princípio da substituição de Liskov Validação de input nunca deve ser mais forte na derivação, do que é na classe base.
  23. 23. L.S.P. - Princípio da substituição de LiskovL.S.P. - Princípio da substituição de Liskov Validação do output nunca deve ser mais fraco na derivação, do que é na classe base.
  24. 24. L.S.P. - Princípio da substituição de LiskovL.S.P. - Princípio da substituição de Liskov Se não posso editar o código, como utilizo uma classe derivada?
  25. 25. D.I.P. - Princípio da inversão das dependênciasD.I.P. - Princípio da inversão das dependências Trabalhando com abstrações e invertendo as dependências.
  26. 26. D.I.P. - Princípio da inversão das dependênciasD.I.P. - Princípio da inversão das dependências Mas o que é dependência?
  27. 27. D.I.P. - Princípio da inversão das dependênciasD.I.P. - Princípio da inversão das dependências Em vez de criar as instâncias dentro das classes, devemos passá-las como parâmetros na forma de abstrações.
  28. 28. D.I.P. - Princípio da inversão das dependênciasD.I.P. - Princípio da inversão das dependências Abstração é um conceito. Uma ideia.
  29. 29. D.I.P. - Princípio da inversão das dependênciasD.I.P. - Princípio da inversão das dependências Confie na interface das coisas e não espere conhecer os detalhes da implementação.
  30. 30. D.I.P. - Princípio da inversão das dependênciasD.I.P. - Princípio da inversão das dependências Então é só eu criar uma interface com todos os métodos possíveis?
  31. 31. D.I.P. - Princípio da inversão das dependênciasD.I.P. - Princípio da inversão das dependências Esqueceu das responsabilidades?
  32. 32. D.I.P. - Princípio da inversão das dependênciasD.I.P. - Princípio da inversão das dependências É esperado que seus objetos se comportem de todas as formas possíveis?
  33. 33. D.I.P. - Princípio da inversão das dependênciasD.I.P. - Princípio da inversão das dependências Então qual a responsabilidade do seu objeto?
  34. 34. I.S.P. - Princípio da segregação das interfacesI.S.P. - Princípio da segregação das interfaces Faça com que sua interface deixe os outros saberem dessa, e somente dessa, responsabilidade.
  35. 35. I.S.P. - Princípio da segregação das interfacesI.S.P. - Princípio da segregação das interfaces Quanto mais coesa for a interface, mais fácil será sua reutilização.
  36. 36. Problemas de um mau designProblemas de um mau design Rigidez Uma única mudança, implica na mudança de vários outros componentes.
  37. 37. Problemas de um mau designProblemas de um mau design Fragilidade Quando mudamos alguma coisa, partes inesperadas da aplicação quebram.
  38. 38. Problemas de um mau designProblemas de um mau design Imobilidade Fica difícil reutilizar o código, pois fica difícil extrair uma parte de um todo.
  39. 39. Problemas de um mau designProblemas de um mau design Há mais maus cheiros entre seus objetos, do que essa vã apresentação pode lhe mostrar.
  40. 40. @augustohp@augustohp @Ivonascimento@Ivonascimento @lcobucci@lcobucci @nelson_senna@nelson_senna @netojoaobatista@netojoaobatista @guilhermeblanco@guilhermeblanco Obrigado!Obrigado!

×