ood - princípio da inversão de dependência

13
Hangout OOD – Princípio da Inversão de Dependência 01/07/2014

Upload: priscila-mayumi-sato

Post on 29-Jun-2015

340 views

Category:

Technology


0 download

DESCRIPTION

Mais um slide usado nos hangouts da série OOD.

TRANSCRIPT

Page 1: OOD - Princípio da Inversão de Dependência

Hangout OOD – Princípio da Inversão de Dependência01/07/2014

Page 2: OOD - Princípio da Inversão de Dependência

Participantes:• João Batista Neto - Hoster

• Augusto Pascutti - Moderador

• Priscila Mayumi Sato – Slider maker

• Ivo nascimento – Controlador do chat

• Luís Otavio

• Henrique Moody

• Daniel Ribeiro

Page 3: OOD - Princípio da Inversão de Dependência

Pauta• Resumo rápido dos hangouts anteriores

• Abordar, com profundidade e exemplos, o princípio de design D.I.P.

• O que é dependencia?

• Diferenciar Injeção de Dependência e Inversão de Dependência

• Ilustrar casos do mundo real

• Pôs pauta: discutir exemplos enviados previamente por cobaias e responder dúvidas

Page 4: OOD - Princípio da Inversão de Dependência

Resumo anteriores

Page 5: OOD - Princípio da Inversão de Dependência

Princípio de design D.I.P

Page 6: OOD - Princípio da Inversão de Dependência

D.I.P.• “Impossível compreender o principio da inversão de dependência antes

de compreender dependência. A dependência é um participante A precisar de participante B para cumprir com sua responsabilidade. É aquilo que eu preciso para fazer alguma coisa.” João

• “As classes de alto nível não devem depender das classes de baixo nível. A inversão de dependência funciona para você poder casar um determinado tipo com outras partes, não precisar usar tipos primitivos e usar classes de alto nível” (Moody? Foi ele que disse? :p)

• “Quando trabalhamos com classes concretas e precisamos mudar o comportamento da nossa aplicação precisamos mudar as nossas classes concretas, o que não é bom e viola os princípios citados anteriormente. Por isso precisamos lidar com interfaces, quanto mais abstração melhor para evitar lidar com as classes diretamente” Daniel

Page 7: OOD - Princípio da Inversão de Dependência

D.I.P.• “Vamos supor que temos uma classe que recebe uma outra classe que

escreve um arquivo XML, essa estritamente relacionada com arquivos XMLs. Se eu precisar um novo formato de texto eu preciso alterar a classe cliente, sendo eu preciso escrever um novo método. É essa a abstração de que estamos falando agora” Moody

• “Uma das coisas mais difíceis de se entender é o conceito de abstração. Assim podemos falar além do ambiente de software. Falando ‘mesa’, cada um pode pensar em uma mesa, o João pensa numa mesa diferente da mesa que a Thamara pensa. Todo mundo aqui sabe o que é uma mesa, mesmo sem saber quantos pés tem, qual a cor, de que material é feito. Em software podemos pensar nos comportamentos mesmo sem pensar em detalhes. No caso o exemplo da PDO é um exemplo da abstração de dependência” Daniel

Page 8: OOD - Princípio da Inversão de Dependência

D.I.P.• “Ao conversar sobre dependência costumo analisar o cenário também.

Por exemplo: dados transacionais são usados em bases de dados relacionais, por isso o Doctrine por exemplo abstraiu o problema de base de dados relacional. Mesmo sendo uma solução para dados transacionais, mas é uma abstração para o cenário especifico.” João

• “Qual as consequências de um software depender de implementações: as implementações mudam! Por exemplo você trabalha com mysql e precisa mudar para uma base oracle. A mudança de servidor quebrou a sua aplicação. Ela era rígida ao depender da implementação.

• Você ganha ao não depender em estabilidade e flexibilidade.” João

Page 9: OOD - Princípio da Inversão de Dependência

D.I.P.• “Duas coisas sobre software: o software muda. A grande probabilidade

de seu softwarer ter bug.

• Vivemos em um mercado muito acirrado, você precisa lançar features muito rápido, por isso quanto mais rápido você consegue mudar seu software mais você se mantém no mercado. Deixar seu software engessado atrapalha as mudanças e torna mais custoso as alterações. Depender de abstrações torna seu software mais fácil de se manter e escalável” João

• “Precisamos tentar ao máximo entender o que estamos fazendo. O que o objeto faz, para que vamos usar ele. Quando falamos de inversão de dependência não devemos transitar as implementações, mas teremos as implementações. Classe tem seu contexto.” Moodysim, true

Page 10: OOD - Princípio da Inversão de Dependência

D.I.P.• “Exmplo: numa loja virtual eu quero saber o valor do total dos meus

itens. Se no cara que faz a soma ele só sabe calcular o preço de um celular. Bom, o celular é uma única possibilidade. Ele pode calcular então qualquer coisa que tenha um preço, produto, serviço, etc. Então nesse meu processo eu recebo uma abstração de qualquer coisa que tenha um preço. Passando então qualquer coisa que tenha um preço pode ser passado para esse processo que segue a abstração.” Luiz

• “”Alguns exemplos que falam de vida real tem problemas pois a vida real de desenvolvedores é diferente da vida real de não desenvolvedores. Quando usamos o exemplo da garrafa e liquido fica difícil de identificar comportamentos. Como comporta um liquido, uma garrafa? O líquido não interfere em como a garrafa vai se comportar. E orientação a objetos é relacionada a comportamentos.” João

Page 11: OOD - Princípio da Inversão de Dependência

D.I.P.• “Quando estamos falando de abstração estamos falando de abstração

de comportamento e não de características.” João

• “Exemplificando a classe de logger. Pensando em uma classe concreta que faz o log de um arquivo. O que significa inveter a dependência: é fazer a classe concreta também depender da implementação, a seta da dependência foi invertida.” Daniel

• “

Page 12: OOD - Princípio da Inversão de Dependência

Exemplos

Page 13: OOD - Princípio da Inversão de Dependência

Pós pauta