Princípios SOLID

  • 634 views
Uploaded on

Apresentação dos princípios SOLID com uma revisão de OOP

Apresentação dos princípios SOLID com uma revisão de OOP

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
634
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
0
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. INVERSÃO DE DEPENDÊNCIA COM INVERSÃO DE CONTROLE E INJEÇÃO DE DEPENDÊNCIA
  • 2. Cesar VilarimProgramador Agilista Arquiteto MSDevelop Santista
  • 3. POO SOLID IoC/DIReferências Dúvidas Castle.Windsor Contatos FIM
  • 4. Calma, calma! Não priemos cânico
  • 5. Vamos do começo
  • 6. O que éprogramação orientada a objetos?
  • 7. Paradigma deprogramação
  • 8. Forma de ver Estilo
  • 9. Existem vários“estilos”
  • 10. Classe
  • 11. Objeto
  • 12. Estado
  • 13. Comportamento
  • 14. Polimorfismo
  • 15. Polimorfismo
  • 16. VOCÊS CONHECEM O BOB?
  • 17. UNCLE BOB (ROBERT C. MARTIN)• Um dos pais do desenvolvimento ágil• Conferencista desde 1990.• Pai dos princípios SOLID, tidos hoje como um padrão no Design Orientado a Objetos (OOD).• Autor de diversos livros, entre eles: “Clean Code”, “The Clean Coder”, “Agile Software Development, Principles, Patterns, and Practices” e “Agile Principles, Patterns, and Practices in C#”.
  • 18. SINGLE RESPONSIBILITY PRINCIPLE (SRP)“Não deve haver mais doque UMA razão para umaclasse mudar.”As classes ou métodosdevem possuir apenas umaresponsabilidade.A classe que realiza amovimentação financeirade uma conta não devemanipular dados dousuário, por exemplo. Só porque você pode, não significa que você deve.
  • 19. OPEN CLOSED PRINCIPLE (OCP)“Entidades de software devemestar abertas paraextensão, mas fechadas paramodificação”A alteração do comportamentode uma classe deve ser feitacom a criação de umaextensão (herança) ou de umacomposição. Não é necessário abrir o peito quando quer um casaco.
  • 20. LISKOV SUBSTITUTION PRINCIPLE (LSP)“Métodos que usam referênciaspara classes base devemconseguir usar classes derivadassem tomar conhecimento disso.” Deve ser possível substituir uma classe base por suas classes derivadas em qualquer ponto do código. Se parece um pato, grasna como um pato, mas precisa de baterias, provavelmente você tem problemas de abstração.
  • 21. INTERFACE SEGREGATION PRINCIPLE (ISP)“Clientes não devem ser obrigadosa depender de interfaces que elesnão usam”.Mantenha suas interfacespequenas e coesas. Você quer que eu ligue isto, onde?
  • 22. DEPENDENCY INVERSION PRINCIPLE (DIP)“Módulos de alto nível não podemdepender de módulos de baixonível, ambos devem depender deabstrações.Abstrações não devem depender dedetalhes, detalhes devem dependerde abstrações.”Para que sejam facilmentereutilizáveis, os módulos devempossuir um baixo acoplamentoentre si. Você solda uma lâmpada diretamente na fiação em uma parede?
  • 23. DESIGN PATTERNS PARA APLICAR O DIP • Abstract Factory Pattern • Builder Pattern • Service Locator Pattern • Dependency Injection Pattern - DI • Inversion of Control Pattern - IoCMartin Fowler popularizou o termo Injeção de Dependênciacomo uma forma de Inversão de Controle
  • 24. Porque escolher aInversão de Controle?
  • 25. CONTEINERES DE DI/IOC Castle Windsor Unity StrucutureMap AutoFac
  • 26. CONTEINERES DE DI/IOCGerenciam o uso dasclasses, isto é, criação,destruição, duração econfiguração de instânciasbem como as dependênciasdas classes.Dessa forma nossas classesde negócio não precisamcriar e configurar as classesdas quais dependem.
  • 27. Código mais organizado
  • 28. Now, let’s to code
  • 29. REFERÊNCIASWeb – Em inglês - SOLIDhttp://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod - Principios de OOD- SOLIDhttp://hanselminutes.com/145/solid-principles-with-uncle-bob-robert-c-martin-Podcast do Scott Hanselman com o Uncle Bob sobre SOLIDhttp://en.wikipedia.org/wiki/SOLID_(object-oriented_design) – WikipediaWeb – Em inglês – Castle.Windsorhttp://docs.castleproject.org/Windsor.MainPage.ashx - Página oficial do projetohttp://www.castleproject.org/container/gettingstarted/part1/index.html - Exemplobem simples de um dos usos.
  • 30. REFERÊNCIASWeb – Em inglêshttp://blog.objectmentor.com/ - Blog da empresa do Uncle Bobhttp://www.hanselman.com/blog/ - Scott Hanselman – Principal Program Manager @Microsofthttp://weblogs.asp.net/scottgu/ - Scott Guthrie – Corporate Vice President @ MicrosoftServer and Tools divisionhttp://channel9.msdn.com/ - Channel 9 – Videos produzidos pela equipe da MicrosoftWeb - Em portuguêshttp://blogs.msdn.com/b/wcamb/ - Waldemir Cambiucci – Arquiteto na Microsoft Brasil –Blog interrompido mas com muito conteúdo legalhttp://www.israelaece.com/ - Israel Aecehttp://elemarjr.net/ - Elemar Jr. – Um dos melhores blogueiros que já vi.
  • 31. REFERÊNCIASLivros
  • 32. Cesar VilarimE-Mail MSDevelop: cesar.vilarim@msdevelop.com.brTwitter: http://www.twitter.com/csvilarimLinkedIn: http://br.linkedin.com/in/cesarvilarimFacebook: http://www.facebook.com/cesarvilarimMSN: vilarim97@hotmail.comSkype: caesarvila