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
10. 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!
11.
12. 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 ?
18. Princípios
One reason to change
Responsabilidade única Keep it simple stupid
Programar 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
23. Status
• Os membros não são mais todos públicos
• Métodos não possuem mais que 40 linhas.
24.
25. 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
28. Uma lista grande de padrões mas
nem todos são realmente usados..
29. Sem violar o encapsulamento, capturar e externalizar
um estado interno de um objeto, de maneira que o objeto
possa ser restaurado para esse estado mais tarde
30.
31. 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
32. Padrões de Arquitetura de Aplicações Corporativas
Sim, ainda vale a pena conhecer alguns desses padrões!
33. 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
35. Código legado
“To me, legacy code is simply code without tests.”
Michael C Feathers
“Any code that has been delivered”
Autor desconhecido
36. 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
38. Modelo anêmico
“The fundamental horror of this anti-pattern is that it's so
contrary to the basic idea of object-oriented design;
which is to combine data and process together.
Martin fowler
40. Origem do modelo anêmico
• Falha na separação de responsabilidades
• Granularidade exagerada
• Falha no encapsulamento de comportamento
• Falha no entendimento do domínio
41.
42.
43. Camada anticorrupção
“É uma forma de isolar a comunicação entre o sistema
sendo construído com sistemas legados através da
criação de uma fachada interna.”
a.k.a encapsular gambiarra
44. Camada anticorrupção
“The public interface of the ANTICORRUPTION LAYER
usually appears as a set of SERVICES, although
occasionally it can take the form of an ENTITY.”
Eric Evans
61. Aplicando o princípio de pareto..
• Princípios OO
• Camada anticorrupção
• Testes unitários
• Linguagem ubíqua
• Software em produção!
62. 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
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 ?