Orientação a objetos     nas trincheiras.               Higor Ramos
About(me)•   Desenvolvedor na Lambda3•   7 anos de programação•   Final de semana é tempo de camping e trekking!•   48GBs ...
Lambda Lambda Lambda!“Não existe outro lugar onde eu tenha vontade detrabalhar que não seja a Lambda3.”
Orientação a objetos
Contextualizando..• Experiência em desenvolvimento de aplicações LoB• Conhecimento adquirido através dos muitos livros• Et...
E você, como se preparou ?
Baby steps
Aprendendo sobre objetos• Você aprende sobre  classes, objetos, métodos, interfaces...• Domínio sobre keywords que promove...
Quem disse que seria fácil ?•   Classes gigantes!•   Métodos com várias responsabilidades•   Efeitos colaterais por todos ...
Herança
Codigo! Codigo! Codigo!
Princípios                                  One reason to change      Responsabilidade única           Keep it simple stup...
Princípios• 143 princípios OO• identificar problemas de design• Não é difícil relacionar um ao outro
Febre de princípiosDesign de um método para realizar pagamento comcartão de crédito demora no mínimo duas horas!
Como ficou o design...     http://bit.ly/YPq7Ft
Status• Os membros não são mais todos públicos• Métodos não possuem mais que 40 linhas.
Supletivo, supletivo, supletivo...•   Experiência com diferentes problemas•   Discussões técnicas para elaboração de desig...
Padrões de projeto
Uma lista grande de padrões masnem todos são realmente usados..
Sem violar o encapsulamento, capturar e externalizarum estado interno de um objeto, de maneira que o objetopossa ser resta...
Padrões de projeto•   Aprenda diversos cenários de utilização•   Resolva problemas aplicando parte do padrão•   Implemente...
Padrões de Arquitetura de Aplicações CorporativasSim, ainda vale a pena conhecer alguns desses padrões!
Padrões de Arquitetura de Aplicações Corporativas• Capacidade de entender um pouco mais de  frameworks e APIs famosas(Acti...
Software Legado
Código legado“To me, legacy code is simply code without tests.”                                     Michael C Feathers“Any...
Código legado• Se o código legado não é OO o meu código também  não pode ser OO.• O banco de dados é relacional então não ...
Modelo anêmico
Modelo anêmico“The fundamental horror of this anti-pattern is that its socontrary to the basic idea of object-oriented des...
Codigo! Codigo! Codigo!
Origem do modelo anêmico•   Falha na separação de responsabilidades•   Granularidade exagerada•   Falha no encapsulamento ...
Camada anticorrupção“É uma forma de isolar a comunicação entre o sistemasendo construído com sistemas legados através dacr...
Camada anticorrupção“The public interface of the ANTICORRUPTION LAYERusually appears as a set of SERVICES, althoughoccasio...
Tecnicamente falando..• Facades e Adapters(Gama, 1995)• Tradutores• Mecanismo de comunicação
Codigo! Codigo! Codigo!
Outros exemplos..• Ferramenta ORM(hibernate, entity framework)• Exposição de API Rest
Refatoração
RefatoraçãoSabe aquela história que você passa a maior parte dotempo lendo código ?
Teste Testes!      seu código!
Testes unitários•   Planejamento antes de código•   Desacoplamento•   Separação de responsabilidades•   Encapsulamento ade...
Testes• Testes unitários• Testes integrados• Testes, testes e testes!
Cheiro ruim em código
Exemplos..•   Método longo demais•   Classe longa demais•   Parâmetros demais•   Intimidade indevida•   Classe preguiçosa
Anti-padrõesSão soluções reutilizáveis para problemas recorrentes emdeterminados contextos de desenvolvimento de software.
Anti-padrões•   Modelo anêmico•   Objeto deus•   Poltergeists•   Problema do yo-yo•   Programação orientada a exceções
Linguagem ubíqua“Uma linguagem única entre todos os envolvidos noprojeto baseada no domínio.”                             ...
Ao infinito e além..
YAGNI“Somente implemente funcionalidades quando vocêrealmente precisar delas, nunca quando você achar quevai precisar.”   ...
Aplicando o princípio de pareto..•   Princípios OO•   Camada anticorrupção•   Testes unitários•   Linguagem ubíqua•   Soft...
Quais passos eu estou seguindo..•   Trabalhe com uma boa equipe!•   Leia os clássicos!•   Proponha soluções, compartilhe c...
www.lambda3.com.br
Aprensentacao oo-trincheiras
Aprensentacao oo-trincheiras
Aprensentacao oo-trincheiras
Aprensentacao oo-trincheiras
Aprensentacao oo-trincheiras
Aprensentacao oo-trincheiras
Aprensentacao oo-trincheiras
Aprensentacao oo-trincheiras
Aprensentacao oo-trincheiras
Aprensentacao oo-trincheiras
Aprensentacao oo-trincheiras
Aprensentacao oo-trincheiras
Aprensentacao oo-trincheiras
Aprensentacao oo-trincheiras
Upcoming SlideShare
Loading in...5
×

Aprensentacao oo-trincheiras

469

Published on

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
469
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
3
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide
  • Experiência em desenvolvimento de aplicações LoBO que deu certo, o que deu errado. Liberdade para experimentarLivros -Até onde os livros podem te levar
  • Estudo ? Pragmatismo ?
  • É daqueles que nasceu pra guerra ?
  • Você aprende sobre classes, objetos, métodos,interfaces e etc - Você cursa aquela turma de OO ou ainda compra um livro sobre objetos..Ou ando lendo o macorati falando de OO com VB.NET e logo você percebeQue todos ao seu redor ou em fóruns falam em objetos e que só com eles você será um profissional.KeywordsClasse,interface, acoplamento,reuso,accessors,encapsulamento e etc... Tudo deixa a coisa bem mais profissional não é ?Tudo vira um objetoE você contrai a febre de objetos, você não consegue mais olhar para o mundo e não enxergar objetos e mais objetos
  • Você larga aquela coisa estranha que você fazia, estruturada.. Arquivos gigantes e etc e começa a trilhar um caminho mais simples.
  • Herança define um relacionamento é um! Você acabou de criar uma forma de acoplamento muito forte, muito mesmo! E provavelmente quebrou parte do encapsulamento. Porque ? Exemplo de código!Herança! Nesse momento você deve estar usando composição na maioria dos cenários, até porque você nem pensa em herança se o princípio de substituição de liskov não for respeitado. Não é claro ?
  • https://gist.github.com/HigorCesar/5113912
  • Estou fazendo tudo certo! Muito esperto.. Toma-lhe herança
  • Imagem de alguém infartando ou desmaiando..Então se você der sorte você escuta sobre dezenas de princípios e até mesmo sobre os tais padrões de projetosCuidado com o que vcs exibem por ai pessoal..rs
  • Agora já conseguimos identificar problemas, relacionar princípios e estamos evoluindo..
  • Pensa.. medita.. Consulta aos búzios... E assim vai
  • http://bit.ly/YPq7Ft
  • Vamos falar de coisas importantes..
  • Proximo: Então você está me dizendo que...Depois exibir os padrões mais usadoshttp://brizeno.wordpress.com/category/padroes-de-projeto/memento/
  • Capacidade de entender um pouco mais de frameworks e APIs famosas.-Entender como funciona o activerecord/parte do ADO.NETTécnicas explicadas de forma simplesLazyloading, desenvolvimento em camadas..
  • Em algum momento todo mundo trabalha com software legadoÉ ai que o bicho pega, afinal de conta agora que os conhecimentos de design São colocados a prova..Quem ai trabalha em algum momento com alguma coisa legada ? Sistemas, banco de dados ou API cliente ?
  • Fique atento aos sinais..
  • Adicionar exemplos de código
  • Foto de vitória só se entregar software...
  • Aprensentacao oo-trincheiras

    1. 1. Orientação a objetos nas trincheiras. Higor Ramos
    2. 2. About(me)• Desenvolvedor na Lambda3• 7 anos de programação• Final de semana é tempo de camping e trekking!• 48GBs de música e contando..
    3. 3. Lambda Lambda Lambda!“Não existe outro lugar onde eu tenha vontade detrabalhar que não seja a Lambda3.”
    4. 4. Orientação a objetos
    5. 5. Contextualizando..• Experiência em desenvolvimento de aplicações LoB• Conhecimento adquirido através dos muitos livros• Etapas do aprendizado de orientação a objetos
    6. 6. E você, como se preparou ?
    7. 7. Baby steps
    8. 8. Aprendendo sobre objetos• Você aprende sobre classes, objetos, métodos, interfaces...• Domínio sobre keywords que promovem um júnior a pleno• Da noite pro dia tudo virou um objeto!
    9. 9. Quem disse que seria fácil ?• Classes gigantes!• Métodos com várias responsabilidades• Efeitos colaterais por todos os lados!• Separação de responsabilidades ? Onde ? O que ?
    10. 10. Herança
    11. 11. Codigo! Codigo! Codigo!
    12. 12. Princípios One reason to change Responsabilidade única Keep it simple stupidProgramar para interfaces YAGNI Injeção de dependência Substituição de liskov DRY Inversão de controle Low coupling Aberto-fechado Composição sobre herança
    13. 13. Princípios• 143 princípios OO• identificar problemas de design• Não é difícil relacionar um ao outro
    14. 14. Febre de princípiosDesign de um método para realizar pagamento comcartão de crédito demora no mínimo duas horas!
    15. 15. Como ficou o design... http://bit.ly/YPq7Ft
    16. 16. Status• Os membros não são mais todos públicos• Métodos não possuem mais que 40 linhas.
    17. 17. Supletivo, supletivo, supletivo...• Experiência com diferentes problemas• Discussões técnicas para elaboração de design• Designs propostos são bem aceitos pelo time• Aventuras pelos padrões de projetos
    18. 18. Padrões de projeto
    19. 19. Uma lista grande de padrões masnem todos são realmente usados..
    20. 20. Sem violar o encapsulamento, capturar e externalizarum estado interno de um objeto, de maneira que o objetopossa ser restaurado para esse estado mais tarde
    21. 21. Padrões de projeto• Aprenda diversos cenários de utilização• Resolva problemas aplicando parte do padrão• Implemente padrões em linguagens diferentes• Prototype,decorator,facade,iterator,observer,template method, factory method
    22. 22. Padrões de Arquitetura de Aplicações CorporativasSim, ainda vale a pena conhecer alguns desses padrões!
    23. 23. Padrões de Arquitetura de Aplicações Corporativas• Capacidade de entender um pouco mais de frameworks e APIs famosas(Active Record,NET).• Técnicas explicadas de forma simples• Exercício de entendimento OO
    24. 24. Software Legado
    25. 25. Código legado“To me, legacy code is simply code without tests.” Michael C Feathers“Any code that has been delivered” Autor desconhecido
    26. 26. Código legado• Se o código legado não é OO o meu código também não pode ser OO.• O banco de dados é relacional então não posso construir software OO• O código legado não possui testes unitários, por isso eu não consigo escrever
    27. 27. Modelo anêmico
    28. 28. Modelo anêmico“The fundamental horror of this anti-pattern is that its socontrary to the basic idea of object-oriented design;which is to combine data and process together. Martin fowler
    29. 29. Codigo! Codigo! Codigo!
    30. 30. Origem do modelo anêmico• Falha na separação de responsabilidades• Granularidade exagerada• Falha no encapsulamento de comportamento• Falha no entendimento do domínio
    31. 31. Camada anticorrupção“É uma forma de isolar a comunicação entre o sistemasendo construído com sistemas legados através dacriação de uma fachada interna.” a.k.a encapsular gambiarra
    32. 32. Camada anticorrupção“The public interface of the ANTICORRUPTION LAYERusually appears as a set of SERVICES, althoughoccasionally it can take the form of an ENTITY.” Eric Evans
    33. 33. Tecnicamente falando..• Facades e Adapters(Gama, 1995)• Tradutores• Mecanismo de comunicação
    34. 34. Codigo! Codigo! Codigo!
    35. 35. Outros exemplos..• Ferramenta ORM(hibernate, entity framework)• Exposição de API Rest
    36. 36. Refatoração
    37. 37. RefatoraçãoSabe aquela história que você passa a maior parte dotempo lendo código ?
    38. 38. Teste Testes! seu código!
    39. 39. Testes unitários• Planejamento antes de código• Desacoplamento• Separação de responsabilidades• Encapsulamento adequado
    40. 40. Testes• Testes unitários• Testes integrados• Testes, testes e testes!
    41. 41. Cheiro ruim em código
    42. 42. Exemplos..• Método longo demais• Classe longa demais• Parâmetros demais• Intimidade indevida• Classe preguiçosa
    43. 43. Anti-padrõesSão soluções reutilizáveis para problemas recorrentes emdeterminados contextos de desenvolvimento de software.
    44. 44. Anti-padrões• Modelo anêmico• Objeto deus• Poltergeists• Problema do yo-yo• Programação orientada a exceções
    45. 45. Linguagem ubíqua“Uma linguagem única entre todos os envolvidos noprojeto baseada no domínio.” Eric Evans
    46. 46. Ao infinito e além..
    47. 47. YAGNI“Somente implemente funcionalidades quando vocêrealmente precisar delas, nunca quando você achar quevai precisar.” Ron jeffries
    48. 48. Aplicando o princípio de pareto..• Princípios OO• Camada anticorrupção• Testes unitários• Linguagem ubíqua• Software em produção!
    49. 49. Quais passos eu estou seguindo..• Trabalhe com uma boa equipe!• Leia os clássicos!• Proponha soluções, compartilhe código• Aprenda a resolver problemas de formas diferentes• Participe de dojos, trabalhe em par
    50. 50. www.lambda3.com.br
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×