SlideShare une entreprise Scribd logo
1  sur  33
Télécharger pour lire hors ligne
Aumente o QI
dos Seus Objetos
 Cam ada de Negócios
de Verdade com Spring
       Phillip Calçado




       www.fragmental.com.br
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
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
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
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
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
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
Introdução: Camadas, Objetos e Tudo
Maisnão tem essas frescuras...)
 (Em VB




                www.fragmental.com.br   Slide 8
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
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
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
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
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
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
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
Duas Alternativas Típicas de Persistência
(Você ainda sonha em não suar Banco de Dados?)




                               www.fragmental.com.br   Slide 16
Duas Alternativas Típicas de Persistência
(Deixa comigo!)




                  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
(Cada um por si...)




                      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
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
Pequena Introdução à IoC
(Ele falou que me ligava...)




                               www.fragmental.com.br   Slide 24
Pequena Introdução à IoC
(Ele falou que me ligava...)




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




                                  www.fragmental.com.br   Slide 26
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
Continuando a Iterar...




            www.fragmental.com.br   Slide 28
Conclusão




            ?
            www.fragmental.com.br   Slide 29
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
O Workshop Continua em




               www.fragmental.com.br   Slide 31
Contato



http:/ / www.fragmental.com.br

     http:/ / www.guj.com.br

          pcalcado@gm ail.com




               www.fragmental.com.br   Slide 32
Obrigado!
        Que Zahl os Acompanhe...




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



              www.fragmental.com.br   Slide 33

Contenu connexe

Tendances

Tendances (6)

Seja Um Programador Pragmatico
Seja Um Programador PragmaticoSeja Um Programador Pragmatico
Seja Um Programador Pragmatico
 
10 dicas de carreira em PHP
10 dicas de carreira em PHP10 dicas de carreira em PHP
10 dicas de carreira em PHP
 
O Spring está morto! Viva o Spring!
O Spring está morto! Viva o Spring!O Spring está morto! Viva o Spring!
O Spring está morto! Viva o Spring!
 
Certificacao
CertificacaoCertificacao
Certificacao
 
Curso de logica de programação aula 1
Curso de logica de programação aula 1Curso de logica de programação aula 1
Curso de logica de programação aula 1
 
Aprendendo a programar com ruby - INTRO
Aprendendo a programar com ruby - INTROAprendendo a programar com ruby - INTRO
Aprendendo a programar com ruby - INTRO
 

En vedette

Adam Sherk - OPA Social Media Day - 8 Social Media Questions You Should Be As...
Adam Sherk - OPA Social Media Day - 8 Social Media Questions You Should Be As...Adam Sherk - OPA Social Media Day - 8 Social Media Questions You Should Be As...
Adam Sherk - OPA Social Media Day - 8 Social Media Questions You Should Be As...Adam Sherk
 
Internet Applications
Internet ApplicationsInternet Applications
Internet ApplicationsAlaa Sadik
 
RDFa From Theory to Practice
RDFa From Theory to PracticeRDFa From Theory to Practice
RDFa From Theory to PracticeAdrian Stevenson
 
PresentationTube
PresentationTubePresentationTube
PresentationTubeAlaa Sadik
 
العنوان الرئيسي
العنوان الرئيسيالعنوان الرئيسي
العنوان الرئيسيAlaa Sadik
 

En vedette (7)

Adam Sherk - OPA Social Media Day - 8 Social Media Questions You Should Be As...
Adam Sherk - OPA Social Media Day - 8 Social Media Questions You Should Be As...Adam Sherk - OPA Social Media Day - 8 Social Media Questions You Should Be As...
Adam Sherk - OPA Social Media Day - 8 Social Media Questions You Should Be As...
 
Internet Applications
Internet ApplicationsInternet Applications
Internet Applications
 
Porto Alegre
Porto AlegrePorto Alegre
Porto Alegre
 
PolicyOptions.org
PolicyOptions.orgPolicyOptions.org
PolicyOptions.org
 
RDFa From Theory to Practice
RDFa From Theory to PracticeRDFa From Theory to Practice
RDFa From Theory to Practice
 
PresentationTube
PresentationTubePresentationTube
PresentationTube
 
العنوان الرئيسي
العنوان الرئيسيالعنوان الرئيسي
العنوان الرئيسي
 

Similaire à Aumente o QI dos Seus Objetos

Criando um ambiente ágil! Lições aprendidas em XP, Scrum e Lean Development
Criando um ambiente ágil! Lições aprendidas em XP, Scrum e Lean DevelopmentCriando um ambiente ágil! Lições aprendidas em XP, Scrum e Lean Development
Criando um ambiente ágil! Lições aprendidas em XP, Scrum e Lean DevelopmentDaniel Wildt
 
Otimizando Portais Plone: Dicas de Desempenho
Otimizando Portais Plone: Dicas de DesempenhoOtimizando Portais Plone: Dicas de Desempenho
Otimizando Portais Plone: Dicas de DesempenhoDouglas Soares de Andrade
 
Removendo o cheiro ruim do seu código - SoLiSC 2011
Removendo o cheiro ruim do seu código - SoLiSC 2011Removendo o cheiro ruim do seu código - SoLiSC 2011
Removendo o cheiro ruim do seu código - SoLiSC 2011Luís Cobucci
 
Gestão de Projeto de Desenvolvimento Agil(XP)
Gestão de Projeto de Desenvolvimento Agil(XP)Gestão de Projeto de Desenvolvimento Agil(XP)
Gestão de Projeto de Desenvolvimento Agil(XP)elliando dias
 
Criando software para o futuro com DDD, Arquitetura, Patterns, e Atitude
Criando software para o futuro com DDD, Arquitetura, Patterns, e AtitudeCriando software para o futuro com DDD, Arquitetura, Patterns, e Atitude
Criando software para o futuro com DDD, Arquitetura, Patterns, e AtitudePablo Dall'Oglio
 
Software Configuration Management Problemas e Soluções
Software Configuration Management Problemas e SoluçõesSoftware Configuration Management Problemas e Soluções
Software Configuration Management Problemas e Soluçõeselliando dias
 
Workshop gratuito sobre Acessibilidade na Web
Workshop gratuito sobre Acessibilidade na WebWorkshop gratuito sobre Acessibilidade na Web
Workshop gratuito sobre Acessibilidade na WebCentro Web
 
Do Clipper e Delphi ao Ruby e PHP: Antes e depois dos frameworks
Do Clipper e Delphi ao Ruby e PHP: Antes e depois dos frameworksDo Clipper e Delphi ao Ruby e PHP: Antes e depois dos frameworks
Do Clipper e Delphi ao Ruby e PHP: Antes e depois dos frameworksPablo Dall'Oglio
 
Eu não sou um "bom programador"!
Eu não sou um "bom programador"!Eu não sou um "bom programador"!
Eu não sou um "bom programador"!Gustavo Pereira
 
Design de Interação Criativo, Social, Emotivo e Complicado
Design de Interação Criativo, Social, Emotivo e ComplicadoDesign de Interação Criativo, Social, Emotivo e Complicado
Design de Interação Criativo, Social, Emotivo e ComplicadoUTFPR
 
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...iMasters
 
Sistemas para o Mundo Real
Sistemas para o Mundo RealSistemas para o Mundo Real
Sistemas para o Mundo RealLeandro Silva
 
Além do Java - Maratona4Java 2005
Além do Java - Maratona4Java 2005Além do Java - Maratona4Java 2005
Além do Java - Maratona4Java 2005Phil Calçado
 
JavaScript Firme: Módulos com RequireJS e BDD com Jasmine
JavaScript Firme: Módulos com RequireJS e BDD com JasmineJavaScript Firme: Módulos com RequireJS e BDD com Jasmine
JavaScript Firme: Módulos com RequireJS e BDD com JasmineAndré Willik Valenti
 
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOS
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOSAULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOS
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOSprofjotamarcosduarte
 

Similaire à Aumente o QI dos Seus Objetos (20)

Criando um ambiente ágil! Lições aprendidas em XP, Scrum e Lean Development
Criando um ambiente ágil! Lições aprendidas em XP, Scrum e Lean DevelopmentCriando um ambiente ágil! Lições aprendidas em XP, Scrum e Lean Development
Criando um ambiente ágil! Lições aprendidas em XP, Scrum e Lean Development
 
Uma Olhada no Netbeans 6
Uma Olhada no Netbeans 6Uma Olhada no Netbeans 6
Uma Olhada no Netbeans 6
 
Otimizando Portais Plone: Dicas de Desempenho
Otimizando Portais Plone: Dicas de DesempenhoOtimizando Portais Plone: Dicas de Desempenho
Otimizando Portais Plone: Dicas de Desempenho
 
Palestra Testes De Unidade Com JUnit
Palestra Testes De Unidade Com JUnitPalestra Testes De Unidade Com JUnit
Palestra Testes De Unidade Com JUnit
 
Removendo o cheiro ruim do seu código - SoLiSC 2011
Removendo o cheiro ruim do seu código - SoLiSC 2011Removendo o cheiro ruim do seu código - SoLiSC 2011
Removendo o cheiro ruim do seu código - SoLiSC 2011
 
WRVA 2015
WRVA 2015WRVA 2015
WRVA 2015
 
Cs 2
Cs 2Cs 2
Cs 2
 
Gestão de Projeto de Desenvolvimento Agil(XP)
Gestão de Projeto de Desenvolvimento Agil(XP)Gestão de Projeto de Desenvolvimento Agil(XP)
Gestão de Projeto de Desenvolvimento Agil(XP)
 
Criando software para o futuro com DDD, Arquitetura, Patterns, e Atitude
Criando software para o futuro com DDD, Arquitetura, Patterns, e AtitudeCriando software para o futuro com DDD, Arquitetura, Patterns, e Atitude
Criando software para o futuro com DDD, Arquitetura, Patterns, e Atitude
 
Software Configuration Management Problemas e Soluções
Software Configuration Management Problemas e SoluçõesSoftware Configuration Management Problemas e Soluções
Software Configuration Management Problemas e Soluções
 
Workshop gratuito sobre Acessibilidade na Web
Workshop gratuito sobre Acessibilidade na WebWorkshop gratuito sobre Acessibilidade na Web
Workshop gratuito sobre Acessibilidade na Web
 
Cwbfx 1 Encontro
Cwbfx 1 EncontroCwbfx 1 Encontro
Cwbfx 1 Encontro
 
Do Clipper e Delphi ao Ruby e PHP: Antes e depois dos frameworks
Do Clipper e Delphi ao Ruby e PHP: Antes e depois dos frameworksDo Clipper e Delphi ao Ruby e PHP: Antes e depois dos frameworks
Do Clipper e Delphi ao Ruby e PHP: Antes e depois dos frameworks
 
Eu não sou um "bom programador"!
Eu não sou um "bom programador"!Eu não sou um "bom programador"!
Eu não sou um "bom programador"!
 
Design de Interação Criativo, Social, Emotivo e Complicado
Design de Interação Criativo, Social, Emotivo e ComplicadoDesign de Interação Criativo, Social, Emotivo e Complicado
Design de Interação Criativo, Social, Emotivo e Complicado
 
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...
 
Sistemas para o Mundo Real
Sistemas para o Mundo RealSistemas para o Mundo Real
Sistemas para o Mundo Real
 
Além do Java - Maratona4Java 2005
Além do Java - Maratona4Java 2005Além do Java - Maratona4Java 2005
Além do Java - Maratona4Java 2005
 
JavaScript Firme: Módulos com RequireJS e BDD com Jasmine
JavaScript Firme: Módulos com RequireJS e BDD com JasmineJavaScript Firme: Módulos com RequireJS e BDD com Jasmine
JavaScript Firme: Módulos com RequireJS e BDD com Jasmine
 
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOS
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOSAULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOS
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOS
 

Plus de elliando dias

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slideselliando dias
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScriptelliando dias
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structureselliando dias
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de containerelliando dias
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agilityelliando dias
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Librarieselliando dias
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!elliando dias
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Webelliando dias
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduinoelliando dias
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorceryelliando dias
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Designelliando dias
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makeselliando dias
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.elliando dias
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebookelliando dias
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Studyelliando dias
 

Plus de elliando dias (20)

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slides
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScript
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structures
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de container
 
Geometria Projetiva
Geometria ProjetivaGeometria Projetiva
Geometria Projetiva
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agility
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Libraries
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!
 
Ragel talk
Ragel talkRagel talk
Ragel talk
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Web
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
Minicurso arduino
Minicurso arduinoMinicurso arduino
Minicurso arduino
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorcery
 
Rango
RangoRango
Rango
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Design
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makes
 
Hadoop + Clojure
Hadoop + ClojureHadoop + Clojure
Hadoop + Clojure
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebook
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
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
  • 8. Introdução: Camadas, Objetos e Tudo Maisnão tem essas frescuras...) (Em VB www.fragmental.com.br Slide 8
  • 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
  • 17. Duas Alternativas Típicas de Persistência (Deixa comigo!) www.fragmental.com.br Slide 17
  • 18. Duas Alternativas Típicas de Persistência (Deixa comigo!) www.fragmental.com.br Slide 18
  • 19. Duas Alternativas Típicas de Persistência (Deixa comigo!) www.fragmental.com.br Slide 19
  • 20. Duas Alternativas Típicas de Persistência (Cada um por si...) www.fragmental.com.br Slide 20
  • 21. Duas Alternativas Típicas de Persistência (Cada um por si...) www.fragmental.com.br Slide 21
  • 22. Duas Alternativas Típicas de Persistência (Cada um por si...) www.fragmental.com.br Slide 22
  • 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
  • 28. Continuando a Iterar... www.fragmental.com.br Slide 28
  • 29. Conclusão ? www.fragmental.com.br Slide 29
  • 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
  • 31. O Workshop Continua em www.fragmental.com.br Slide 31
  • 32. Contato http:/ / www.fragmental.com.br http:/ / www.guj.com.br pcalcado@gm ail.com www.fragmental.com.br Slide 32
  • 33. Obrigado! Que Zahl os Acompanhe... (Espero vocês no O’Malley’s!!!) www.fragmental.com.br Slide 33