Multi-core Parallelization in Clojure - a Case Study
Aumente o QI dos Seus Objetos
1. Aumente o QI
dos Seus Objetos
Cam ada de Negócios
de Verdade com Spring
Phillip Calçado
www.fragmental.com.br
2. Objetivos
(Tentar dominar o mundo!)
• Workshop de Projet o de Software Orientado a Objetos
• Apresent ar e discut ir técnicas “alt ernat ivas” para
aplicações em POO
• Criar a cam ada de negócios baseada em objet os
int eligentes
• Int roduzir e utilizar o IoC (com o Spring Fram ework) para
int egração ent re cam adas
• Se divert ir Objetivos
Não São no processo
(Droga! Sabia que devia ter me inscrito no outro curso...)
• Ut ilizar m ais que o necessário do Spring (IoC básico)
• Fazer um a aplicação com plet a
• Mudar as suas convicções, sua cabeça, sua religião, seu
t im e de fut ebol...
www.fragmental.com.br Slide 2
3. Pré- Requisitos
(Pentium IV, 5 1 2 MB RAM DDR,...)
• Orient ação a Objetos, Java, JEE, Eclipse, Web... o de
sem pre!
• Bom senso
• Vontade de Debat er
www.fragmental.com.br Slide 3
4. Agenda
(A gente veio aqui pra beber ou conversar?)
• Quem é Você?
• Int rodução: Cam adas, Objetos e Tudo Mais
• A Cam ada de Negócios
• Quando Não Usar Um a
• Nosso Desafio de Hoje
• Est órias
• Modelando o Dom ínio
• Duas Alt ernat ivas Típicas de Persist ência
• Pequena Int rodução à IoC
• Int egrando Nossa Prim eira Versão (e rezando pra
funcionar)
• Conclusão
www.fragmental.com.br Slide 4
5. Quem é Você?
• Phillip Calçado, a.k.a. Shoes
• Program ador desde 1996
• Com Java desde 2003 (“¡ adios, C+ + !”)
• Colaborador do GUJ
• JUG Leader do RioJUG
• Consultor, inst rut or, coach
• Diversos projet os open- source (alguns chegaram até a t er
um a versão 1.0!)
• Atualm ente t rabalhando com aplicações em redes GSM
(NÃO É JME!!!)
www.fragmental.com.br Slide 5
6. Introdução: Camadas, Objetos e Tudo
Mais esse povo de Java fala tanto em camadas?)
(Por que
• Divisão Lógica de
com ponent es de
soft ware(layer) ou
hardware(tier)
• Separam com ponent es
por responsabilidade
com um
• Se com unicam de cim a
para baix o (quase sem pre)
• Cam adas Fam osas:
– TCP/ IP
– Sistem as Operacionais
– Java
– .Net
www.fragmental.com.br Slide 6
7. Introdução: Camadas, Objetos e Tudo
Maisfamosas tres camadas. Massa, recheio e cobertura. A culinaria francesa em geral
(“Ah, as
me decepciona, mas as sobremesas sao sempre otimas. “ – Carlos Villela - GUJ )
• 2, 3, 4 ou N Cam adas?
• Camada de
Apresentação é a
Interface
• Camada de Aplicação
coordena casos de uso
• Camada de Negócios é
onde fica a Lógica de
negócios
• Camada de Persistência
são os com ponent es que
salvam o estado do objeto
em algum lugar
www.fragmental.com.br Slide 7
9. A Camada de Negócios
(Como você acha que os dados vão parar nas tabelinhas?)
• Cham ada tam bém de Camada de Domínio
• Modela o dom ínio do problem a
• Sempre independent e da interface
• Preferencialmente Independente da Im plem entação de
Persist ência
• É o sistema!
www.fragmental.com.br Slide 9
10. Quando Não Usar Uma
(Canhões, moscas...)
• Não Compensa em:
• Aplicações sim ples que não fazem m ais que t irar e
colocar regist ros no banco
• Protótipos
• Relatórios Pesados
• Soluções Menos Problemáticas:
• Shell Script s
• Ruby on Rails/ PHP
• Ferram ent as do SGBD
• Ferram ent as RAD
www.fragmental.com.br Slide 10
11. Nosso Desafio de Hoje
(Caso queiram aceitá- lo...)
• Sist em a para Cadastro em Eventos
• Protótipo da int erface web
• Protótipo da Persistência (DAO genérico em m em ória)
www.fragmental.com.br Slide 11
12. Estórias:
Cadast rar Participant e
Cadast rar Palestra
Se inscrever em Palestra
Registrar Presença em Palest ra
www.fragmental.com.br Slide 12
13. Modelando o Domínio
(Onde foi parar meu DER?)
Um domain model não é um diagrama em
particular; é a idéia que o diagrama que passar.
Não é apenas o conhecimento na cabeça de um
especialista no domínio; é uma seletiva abstração
deste conhecimento rigorosamente organizada.
Um diagrama pode representar e comunicar
um modelo, assim como podem fazê-lo código
bem escrito ou uma frase em inglês.
Eric Evans, Domain-Driven Design
www.fragmental.com.br Slide 13
14. Modelando o Domínio
(Como assim não tem DER?)
• Mantenha sempre sua implementação ligada com seu
modelo
• O melhor meio de não deixar um modelo ficar
defasado
• Crie uma linguagem e API baseadas no seu Modelo
• Faça seus desenvolvedores falarem a mesma língua
dos usuários
www.fragmental.com.br Slide 14
15. Modelando o Domínio
(Nunca vi disso..coisa de Java, tinha que ser!)
• Se prepare para a evolução do Modelo
• Conceitos importantes entram, supérfluos saem
• Pratique Experimentação e Brainstorming
• Pense, discuta, crie, teste
• Busque feedback dos especialistas do domínio
• Ex plique seu flux o de atividades. Faz sentido para
eles?
www.fragmental.com.br Slide 15
16. Duas Alternativas Típicas de Persistência
(Você ainda sonha em não suar Banco de Dados?)
www.fragmental.com.br Slide 16
23. Pequena Introdução à IoC
(Ele falou que me ligava...)
Don’t call us, we’ll call you.
The Hollywood Principle
www.fragmental.com.br Slide 23
24. Pequena Introdução à IoC
(Ele falou que me ligava...)
www.fragmental.com.br Slide 24
25. Pequena Introdução à IoC
(Ele falou que me ligava...)
www.fragmental.com.br Slide 25
26. Integrando Nossa Primeira Versão
(e rezando pra funcionar)
(Este bean encontra- se fora de área ou desligado.)
www.fragmental.com.br Slide 26
27. Integrando Nossa Primeira Versão
(e rezando pra funcionar)
(Este bean encontra- se fora de área ou desligado.)
<beans>
<bean class=“GerenciadorCoisasquot; id=“gerenciadorquot;>
<property name=“repositorioDeCoisasquot;>
<ref bean=“repositorioquot;/>
</property>
</bean>
<bean class=“DaoCoisasquot; id=“repositorio“ />
</beans>
www.fragmental.com.br Slide 27
30. Autores Recomendados
• Craig Larman – Applying UML and Pat t erns
• Eric Evans – Dom ain- Driven Design
• Bertrand Meyer – Object - Orient ed Software Construct ion
• Martin Fowler – Refactoring, PEAI, Analisys Patt erns...
• Rod Johnson – J2EE Developm en Wit hout EJB
• Bruce Tate & Justin Gehtland – Bett er, Faster, Light er
Java
• Meilir Page- Jones – Fundam ent als of Object- Orient ed
Design Using UML
www.fragmental.com.br Slide 30