Camada de Negócios de Verdade com Spring

Post on 20-Jul-2015

1.194 views 0 download

Transcript of Camada de Negócios de Verdade com Spring

www.fragmental.com.br

Aumente o QI dos Seus Objetos

Camada de Negócios

de Verdade com Spring

Phillip Calçado

www.fragmental.com.br Slide 2

• Workshop de Projeto de Software Orientado a Objetos• Apresentar e discut ir técnicas “alternat ivas” para

aplicações em POO• Criar a camada de negócios baseada em objetos

inteligentes• Introduzir e ut ilizar o IoC (com o Spring Framework) para

integração entre camadas• Se divert ir no processo

Objetivos

Não São Objetivos

• Utilizar mais que o necessário do Spring (IoC básico)• Fazer uma aplicação completa• Mudar as suas convicções, sua cabeça, sua religião, seu

t ime de futebol...

(Tentar dominar o mundo!)

(Droga! Sabia que devia ter me inscrito no outro curso...)

www.fragmental.com.br Slide 3

• Orientação a Objetos, Java, JEE, Eclipse, Web... o de sempre!

• Bom senso• Vontade de Debater

Pré- Requisitos(Pentium IV, 512 MB RAM DDR,...)

www.fragmental.com.br Slide 4

• Quem é Você?• Introdução: Camadas, Objetos e Tudo Mais• A Camada de Negócios• Quando Não Usar Uma• Nosso Desafio de Hoje• Estórias• Modelando o Domínio• Duas Alternat ivas Típicas de Persistência• Pequena Introdução à IoC• Integrando Nossa Primeira Versão (e rezando pra

funcionar)• Conclusão

Agenda(A gente veio aqui pra beber ou conversar?)

www.fragmental.com.br Slide 5

• Phillip Calçado, a.k.a. Shoes• Programador desde 1996• Com Java desde 2003 (“¡ adios, C+ + !”)• Colaborador do GUJ• JUG Leader do RioJUG• Consultor, instrutor, coach• Diversos projetos open- source (alguns chegaram até a ter

uma versão 1.0!)• Atualmente t rabalhando com aplicações em redes GSM

(NÃO É JME!!!)

Quem é Você?

www.fragmental.com.br Slide 6

Introdução: Camadas, Objetos e Tudo Mais

• Divisão Lógica de componentes de software(layer) ou hardware(t ier)

• Separam componentes por responsabilidade comum

• Se comunicam de cima para baixo (quase sempre)

• Camadas Famosas:– TCP/ IP– Sistemas Operacionais– Java– .Net

(Por que esse povo de Java fala tanto em camadas?)

www.fragmental.com.br Slide 7

Introdução: Camadas, Objetos e Tudo Mais(“Ah, as famosas tres camadas. Massa, recheio e cobertura. A culinaria francesa em geral me decepciona, mas as sobremesas sao sempre otimas. “ – Carlos Villela - GUJ )

• 2, 3, 4 ou N Camadas? • Camada de

Apresentação é a Interface

• Camada de Aplicação coordena casos de uso

• Camada de Negócios é onde f ica a Lógica de negócios

• Camada de Persistência são os componentes que salvam o estado do objeto em algum lugar

www.fragmental.com.br Slide 8

Introdução: Camadas, Objetos e Tudo Mais(Em VB não tem essas frescuras...)

www.fragmental.com.br Slide 9

• Chamada também de Camada de Domínio• Modela o domínio do problema• Sempre independente da interface• Preferencialmente Independente da Implementação de

Persistência• É o sistema!

A Camada de Negócios(Como você acha que os dados vão parar nas tabelinhas?)

www.fragmental.com.br Slide 10

• Não Compensa em:• Aplicações simples que não fazem mais que t irar e

colocar registros no banco• Protót ipos• Relatórios Pesados

• Soluções Menos Problemáticas:• Shell Scripts• Ruby on Rails/ PHP• Ferramentas do SGBD• Ferramentas RAD

Quando Não Usar Uma(Canhões, moscas...)

www.fragmental.com.br Slide 11

• Sistema para Cadastro em Eventos• Protót ipo da interface web• Protót ipo da Persistência (DAO genérico em memória)

Nosso Desafio de Hoje(Caso queiram aceitá- lo...)

www.fragmental.com.br Slide 12

Cadastrar Part icipante

Cadastrar Palestra

Se inscrever em Palestra

Registrar Presença em Palestra

Estórias:

www.fragmental.com.br Slide 13

Modelando o Domínio(Onde foi parar meu DER?)

Eric Evans, Domain-Driven Design

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.

www.fragmental.com.br Slide 14

• 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

Modelando o Domínio(Como assim não tem DER?)

www.fragmental.com.br Slide 15

• 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• Explique seu f luxo de at ividades. Faz sent ido para

eles?

Modelando o Domínio(Nunca vi disso..coisa de Java, tinha que ser!)

www.fragmental.com.br Slide 16

Duas Alternativas Típicas de Persistência(Você ainda sonha em não suar Banco de Dados?)

www.fragmental.com.br Slide 17

Duas Alternativas Típicas de Persistência(Deixa comigo!)

www.fragmental.com.br Slide 18

Duas Alternativas Típicas de Persistência(Deixa comigo!)

www.fragmental.com.br Slide 19

Duas Alternativas Típicas de Persistência(Deixa comigo!)

www.fragmental.com.br Slide 20

Duas Alternativas Típicas de Persistência(Cada um por si...)

www.fragmental.com.br Slide 21

Duas Alternativas Típicas de Persistência(Cada um por si...)

www.fragmental.com.br Slide 22

Duas Alternativas Típicas de Persistência(Cada um por si...)

www.fragmental.com.br Slide 23

Pequena Introdução à IoC(Ele falou que me ligava...)

The Hollywood Principle

Don’t call us, we’ll call you.

www.fragmental.com.br Slide 24

Pequena Introdução à IoC(Ele falou que me ligava...)

www.fragmental.com.br Slide 25

Pequena Introdução à IoC(Ele falou que me ligava...)

www.fragmental.com.br Slide 26

Integrando Nossa Primeira Versão (e rezando pra funcionar)(Este bean encontra- se fora de área ou desligado.)

www.fragmental.com.br Slide 27

Integrando Nossa Primeira Versão (e rezando pra funcionar)(Este bean encontra- se fora de área ou desligado.)

<beans>

<bean class=“GerenciadorCoisas" id=“gerenciador">

<property name=“repositorioDeCoisas">

<ref bean=“repositorio"/>

</property>

</bean>

<bean class=“DaoCoisas" id=“repositorio“ />

</beans>

www.fragmental.com.br Slide 28

Continuando a Iterar...

www.fragmental.com.br Slide 29

Conclusão

?

www.fragmental.com.br Slide 30

• Craig Larman – Applying UML and Patterns• Eric Evans – Domain- Driven Design• Bertrand Meyer – Object- Oriented Software Construct ion• Martin Fowler – Refactoring, PEAI, Analisys Patterns...• Rod Johnson – J2EE Developmen Without EJB• Bruce Tate & Justin Gehtland – Better, Faster, Lighter

Java• Meilir Page- Jones – Fundamentals of Object- Oriented

Design Using UML

Autores Recomendados

www.fragmental.com.br Slide 31

O Workshop Continua em

www.fragmental.com.br Slide 32

Contato

http:/ / www.fragmental.com.br

http:/ / www.guj.com.br

pcalcado@gmail.com

www.fragmental.com.br Slide 33

Obrigado!Que Zahl os Acompanhe...

(Espero vocês no O’Malley’s!!!)