Princípio law of demeter
Upcoming SlideShare
Loading in...5
×
 

Princípio law of demeter

on

  • 1,111 views

 

Statistics

Views

Total Views
1,111
Views on SlideShare
870
Embed Views
241

Actions

Likes
1
Downloads
9
Comments
0

2 Embeds 241

http://engenhariadesoftwareagil.com 240
http://webcache.googleusercontent.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Princípio law of demeter Princípio law of demeter Presentation Transcript

  • Princípio Law Of Demeter
    (Lei de Demeter)
    Grupo: Gladson Otávio
    Emerson Roger
  • A lei de Demeter é um conjunto de regras para construir sistemas visando baixo acoplamento, também conhecida como Princípio do menor Conhecimento e Fale somente com os amigos.
    Princípio
    • Cada unidade deveria somente utilizar um conjunto limitado de unidades de outras unidades.
    • Cada unidade deveria falar somente com seus amigos e não com estrangeiros.
    Em Aspectos Gerais
  • Um método M de um objeto O somente poderia acessar métodos de outros objetos que sigam as diretrizes:
    • Seja parâmetro de M
    • Um objeto que M criou
    • Um método do próprio objeto O
    • Objeto diretamente relacionado com o objeto O
    • Uma variável global acessível pelo objeto O
    Em orientação a objeto
  • infringindo o princípio
  • Dentro da classe jornaleiro, há um método chamado coletarPagamento(), cuja finalidade é coletar pagamento dos clientes, pelos produtos vendidos. Vamos analisar este método e descobrir como como ele infinge a lei de demeter.
    Infringindo o principio (LOD)
  • //o método coletar pagamento sem atender o principio LOD
    public void coletarPagamento() {
    for (Cliente cliente : clientes) {
    if (cliente.getMinhacarteira().getValor()>= nota) { cliente.getMinhacarteira().subtractValor(nota);
    fundoColeta += nota;
    }
    else {
    System.out.println("Sem dinheiro,anotar divida ");
    }
    }
    }
  • Acoplamento indesejado:
    Alterações nas classes dependentes:
    Mais resposabilidades para a classe:
    Problema que forte acoplamento pode causar
  • As dependências criada pelo método
  • Como resolver esse problema?
  • 1º - Ex cluir Método getMinhacarteira() da classe Cliente.
    2º - Criar um método fazerPagamento() na mesma classe.
    public class Cliente {
    private String firstName;
    private String lastName;
    private Carteira minhacarteira;
    // construtores {...}
    // metodo criado para o cliente fazer o pagamento.
    public double getFazerPagamento(double nota) {
    double valorPago = 0;
    if (minhacarteira.getValor() >= nota) {
    minhacarteira.subtractValor(nota);
    valorPago= nota;
    }
    return valorPago;
    }
    // get and seters{...}
    // public Carteira getMinhacarteira() { return minhacarteira; }
  • public void coletarPagamento() {
    for (Cliente cliente : clientes) {
    double pagamento =cliente.getFazerPagamento(nota);
    if (pagamento !=0) {
    fundoColeta += pagamento;
    }
    }
    }
    3º - Alterar o método coletarPagamento() da classe jornaleiro para que ele acesse o método getFazerPagamento() da classe cliente.
  • Atendendo ao princípio (LOD)
  • Dar para aplicar o princípio para todos os projetos?
  • Exemplo onde o princípio não se aplicaria:
  • A atitude comum entre os desenvolvedores sugere que que as vezes elementos de coesão e acoplamento são teorias irreais, e acaba atrasando o trabalho. Contudo, tenho a percepção de que as qualidades positivas de coesão e acoplamento servirão para preservar a produtividade do código ao longo do tempo.
    Conclusão