Desenvolvendo em Java
     Visando o
 Baixo Acoplamento

       Marcelo de Melo Madeira
            Just Java 2011
Marcelo de Melo Madeira


• Arquiteto de sistemas
• Instrutor Java na Globalcode
• SCJP e SCWCD
Agenda
•   Acoplamento

        •   Alto Acoplamento

        •   Baixo Acoplamento

•   Coesão

        •   Baixa Coesão

        •   Alta Coesão

•   Live code!!!
Acoplamento
Alto Acoplamento

• Forte dependência entre componentes.
• É difícil trocar dependências de um objeto
  sem quebrar seu funcionamento interno.
• É difícil adicionar mais funcionalidades ao
  componente sem ter que alterar seu
  código.
Baixo Acoplamento
•   Depender de abstrações
    •   Classe abstrata???

    •   Interface




•   IoC (Inversão de controle)
    •   Spring

    •   Guice

    •   Puro Java
Coesão
Qual é a sua função?
Baixa Coesão

• Várias funcionalidades em um mesmo
  objeto.
• Difícil reaproveitamento
• Difícil manutenção
• Alta complexidade
Alta coesão

• Objetos devem fazer apenas uma (e bem
  feita) tarefa.
• Maior capacidade de reaproveitamento
• Facilidade de manutenção
Logo....
baixoAcoplamento.plus(AltaCoesao).equals(ProgramadorFe
                          liz)
Live Code!!!
   Perigoso!!!
API de Validação
               Requisitos:

• Objetos não podem ser nulos.
• String não devem ser vazias.
• Números não podem ser menor que zero.
• Deve possibilitar a adição de novos
  validadores sem a necessidade de alteração
  no código da API.
Conclusão

• Componentes devem depender de
  abstrações.
• Objetos devem ser especialistas.
• Funcionalidades devem resultar da
  composição de componentes especialistas.
Obrigado!!!

  Onde me encontrar???


celodemelo.wordpress.com
     @celodemelo
 celodemelo@gmail.com

Baixo Acoplamento e Alta Coesão

  • 1.
    Desenvolvendo em Java Visando o Baixo Acoplamento Marcelo de Melo Madeira Just Java 2011
  • 2.
    Marcelo de MeloMadeira • Arquiteto de sistemas • Instrutor Java na Globalcode • SCJP e SCWCD
  • 3.
    Agenda • Acoplamento • Alto Acoplamento • Baixo Acoplamento • Coesão • Baixa Coesão • Alta Coesão • Live code!!!
  • 4.
  • 5.
    Alto Acoplamento • Fortedependência entre componentes. • É difícil trocar dependências de um objeto sem quebrar seu funcionamento interno. • É difícil adicionar mais funcionalidades ao componente sem ter que alterar seu código.
  • 6.
    Baixo Acoplamento • Depender de abstrações • Classe abstrata??? • Interface • IoC (Inversão de controle) • Spring • Guice • Puro Java
  • 7.
    Coesão Qual é asua função?
  • 8.
    Baixa Coesão • Váriasfuncionalidades em um mesmo objeto. • Difícil reaproveitamento • Difícil manutenção • Alta complexidade
  • 9.
    Alta coesão • Objetosdevem fazer apenas uma (e bem feita) tarefa. • Maior capacidade de reaproveitamento • Facilidade de manutenção
  • 10.
  • 11.
    Live Code!!! Perigoso!!!
  • 12.
    API de Validação Requisitos: • Objetos não podem ser nulos. • String não devem ser vazias. • Números não podem ser menor que zero. • Deve possibilitar a adição de novos validadores sem a necessidade de alteração no código da API.
  • 13.
    Conclusão • Componentes devemdepender de abstrações. • Objetos devem ser especialistas. • Funcionalidades devem resultar da composição de componentes especialistas.
  • 14.
    Obrigado!!! Ondeme encontrar??? celodemelo.wordpress.com @celodemelo celodemelo@gmail.com

Notas do Editor