SOLID – Teoria e Prática – Demo + Vídeo

SOLID – Teoria e Prática. É com certeza um dos temas mais debatidos no ramo de OOP, aprenda cada um dos princípios e como aplicá-los.

Este é um artigo complementar ao Orientação a Objeto – SOLID, neste primeiro artigo eu apresentei teoricamente o conceito do SOLID e seus benefícios.

SOLID – Teoria e Prática

Recapitulando

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. O acrônimo SOLID foi introduzido por Michael Feathers, após observar que os cinco princípios poderiam se encaixar nesta palavra.

Os princípios SOLID deveriam ser aplicados por qualquer desenvolvedor, porém pouquíssimos profissionais preocupam-se em utilizá-los, para obtermos todos os reais benefícios da OOP é necessário atender aos 5 princípios do SOLID.

Lembrando também que além destes 5 princípios Uncle Bob também mapeou 3 outros princípios sobre Coesão e mais outros 3 sobre Acoplamento. Utilize este link para conhecê-los também.

SLIDES

VÍDEO (1h00)

* Assine meu canal no Youtube 🙂

SOURCE

Para visualizar o fonte e realizar o download do projeto clique aqui (GitHub)

Referências

Vamos continuar enriquecendo o assunto, poste aqui sua opinião ou dúvida.

41 ideias sobre “SOLID – Teoria e Prática – Demo + Vídeo

    • O Youtube está renderizando ainda… A qualidade vai melhorar ainda, mas já dá para assistir! Daqui uma meia hora ele vai estar em HD.

      Abs.

  1. Muito bom, Eduardo!
    Sempre tenho dúvidas quando falam de SOLID, incrível como a gente só consegue entender quando alguém “desenha” pra gente! kkk.

    Ansioso pelo curso agora em janeiro =)

  2. Formidável explicação!
    Achei o principio LSP o mais complicado. Não sei me perdi em algum momento do vídeo, mas para implementar o DIP foi utilizado o LSP?

    Abraços e esperamos por mais vídeos!

    • Fala Erick!

      Muito obrigado pelo feedback!
      O LSP consiste em passar a classe derivada no lugar da classe base, mas dependendo da abstração (se ela for falha) terá o problema que eu apresentei.
      Através do OCP se faz LSP, mas no caso do DIP eu não preciso de LSP não.

      Abs!

    • Eu tbm achei o LSP mais complicado, mas quando comecei a escrever uma situação o conceito ficou mais fácil…
      Posso estar errado e meu xará pode me corrigir, mas para esse caso, eu teria uma classe abstrata chamada paralelogramo e obrigaria a sobreescrever o método calcular área e ai sim criar as filhas quadrado e retangulo, ou seja, quadrado e retangulo tem que herdar de paralelogramo e não uma da outra…
      Vindo pro mundo real, vc tem a classe base Cliente e as filhas PF e PJ, cada uma tratando das suas particularidades…

      • Então Eduardo, esse é o conceito de herança que eu tento quebrar, a questão de “é um” é simples demais, se vc for criar uma herança vc precisa garantir que a classe derivada consegue substituir a classe base sem mudar seu comportamento, essa é a missão do LSP.

        Abs.

  3. Muito bom o conteúdo. Eu ja usava a somente SRP(agora passarei usar SOLID inteiramente), e em um dos últimos videos seu sobre o DDD vc esta usando todos e com Injeção de Dependência com Ninject. Muito boa a sua explicação. Parabéns;

  4. Sensacional Eduardo, vi o ultimo asp.net cast e cai aqui, já tinha estudado SOLID e realmente ele implementa OO de verdade, se ao menos os desenvolvedores tivessem a noção da importância disso, nossa vida seria muito melhor

    parabéns.

  5. Fala Eduardo!

    Muito bom o vídeo de SOLID, são princípios que realmente ajudam muito, principalmente nos testes e no trabalho a ser feito depois que o software está pronto. Utilizar SOLID nos leva a ter mais arquivos, porém com um código mais coerente nesses arquivos; isso chega a afetar de alguma forma a performance do software, quanto ao tempo de resposta, por exemplo? Seja melhorando por causa do código presente em cada arquivo, ou piorando por ter muitos arquivos?

    Seria muito legal se você fizesse um vídeo explicando o básico do Entity Framework! Tive um pouco de dificuldade em seguir o DDD, por não ter os conhecimentos necessários sobre o Entity, mas estou buscando!! rs

    Valeu, abraço!

  6. Pingback: Dúvida de iniciantes na área de desenvolvimento. - Serialize

  7. Eduardo, Parabéns pelo otimo trabalho para comunidade programadores, espero que pelo menos obrigado quem ver o video possa fazer o que vou fazer agora.
    Mestre dos códigos (rs) ou poderia ser (Mestre dos magos).

    Obrigado, agora estou ansioso para ver vc falar de Entity Framework, Dapper e outros com repositórios grande abs.

  8. Vlw Eduardo, excelente matéria, eu to sempre acompanhando os seus artigos e devo muita coisa que sei a você, continue com o seu bom trabalho que eu tenho certeza que ajuda muitas outras pessoas, principalmente se forem pessoas como eu que moram no Rio de Janeiro, aqui a educação é muito precária, principalmente da área de T.I, não tem eventos nem nada do tipo por aqui então as vezes acabo ficando no escuro, muito obrigado mesmo.

  9. Eduardo, primeiramente parabéns pelo ótimo trabalho!
    Tenho uma dúvida quanto ao DIP:
    Acho que entendi bem o conceito para o seu exemplo, em que os contratos estão bem definidos. E como fica o caso em que os contratos tem uma probabilidade maior de adaptação? Neste caso, muito mais código precisará ser alterado quando isso ocorrer. O que estaria errado em meu raciocínio?
    Abraços!

  10. Muito obrigado por compartilhar tanto com todos e pedir apenas a forma correta de implementação e coerência de como fazer. Que você receba tudo em dobro! Bom final de ano.

  11. Excelente o video, parabéns !!!

    Eduardo fiquei com uma dúvida na última parte, no 5 – DIP.
    Você criou o repositoy que insere o cliente no banco, esse método no repository tem como única responsabilidade inserir o cliente no banco correto.Agora vamos imaginar que eu estivesse inserindo valores em uma tabela de pedidoitem e precisasse verificar se o cabeçalho (tabela pedido) já foi criado antes de inserir os itens, como ficaria o repository nesse caso ? Eu iria implementar a injeção de dependência no repository também ?

  12. Pingback: Cuide bem do seu domínio! Parte 3 | Alexandre Miranda

  13. Olá, Muito bom seu post!!

    Minha duvida é para as classes que tem relacionamentos, o objeto que está sendo relacionado deve ter uma interface?? A classe deve ter apenas a abstração como relacionamento??? Valeu

  14. Pingback: Começando do Zero: .NET Developer || asp.net{cast} S01EP05 – aspnet{cast}

  15. Gostei Muito do video… Explica muito bem cada um dos princípios!!!
    Parabéns…

    Obs.: O ClienteRepository tem um problema no commandText! 😀

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *