Upgrade to Pro — share decks privately, control downloads, hide ads and more …

OOP - Begins

OOP - Begins

Uma introdução sobre os princípios básicos de Orientação a Objetos.

Miere Liniel Teixeira

October 29, 2013
Tweet

More Decks by Miere Liniel Teixeira

Other Decks in Programming

Transcript

  1. Rigidêz é a tendência que um software tem de ser

    dificil de se fazer alterações.
  2. Sintomas de Rigidêz • Alterações simples tornam-se investidas de semanas

    • Medo de corrigir problemas não críticos • Dificuldade de estimar prazos
  3. Sintomas de fragilidade • Quebra em locais sem vínculo algum

    de negócio • Toda manutenção o torna pior • O time tem receio de fazer o software parar de funcionar se mexer nele
  4. Imobilidade é a incapacidade de se reusar software de outros

    projetos ou de parte do mesmo projeto.
  5. Sintoma da imobilidade • O Desenvolvedor nota que poderia usar

    rotinas que estão em outro projeto • Ele nota que a rotina traz com ele muitas dependencias do outro projeto • Nota-se que o risco de trazer a rotina é muito alto • Reescreve-se a rotina
  6. Viscosidade por design ocorre quando é mais fácil fazer um

    Hack ( gambiarra ) do que manter o design original.
  7. 1. Mudanças de requisitos As vezes nem sequer foi terminado

    de implementar o requisito, e ele já sofre mudança.
  8. 2. Gestão de dependencias Para atingir às demandas é preciso

    alterar as dependencias dos módulos entre si, e nem sempre o design permite isso.
  9. Fatos sobre o código 1. Quanto mais dependencias um código

    possui, mais estável ele é. 2. Regras voláteis são pontos de mudança no sistema ( fragilidade ). 3. Dependencias concretas indicam pontos de rigidêz. 4. Agrupamento de responsabilidades também indicam rigidêz e fragilidade do código.
  10. A OOP fornece vários princípios e técnicas que permitem desenhar

    uma arquitetura tolerânte à mudanças. Por que, então, usar OOP?
  11. Principios da OOP 1. Single Responsibility Principle 2. Open Closed

    Principle 3. Liskov Substituition Principle 4. Interface Segregation Principle 5. Dependency Inversion Principle
  12. Considerações sobre SRP 1. Resposabilidade - razão para mudar /

    alterar ( Modem Dilemma ) 2. Complexidade Desnecessária 3. O fator mudança deve ser considerado apenas se a mudança realmente acontecer ( volatilidade ).
  13. Interface Segregation Principle Você não deve ser obrigado a depender

    de uma interface que você não precisa. Muitas interfaces específicas são melhores que uma interface genérica.
  14. Considerações sobre DIP/ISP 1. Alterações nas interfaces quebram compatibilidade 2.

    Quebras geram retrabalho, recompilação e rebuild 3. Alguns engenheiros acabam escolhendo fazer um caminho alternativo ao invés de seguir o caminho tradicional.