segunda-feira, 31 de março de 2008

aulas 14 e 15 (padrão alta coesão)

Este padrão é altamente relacionado ao padrão baixo acoplamento, ao se aplicar um, geralmente aplica-se o outro como resultado. Em termos de projeto, a coesão mede o quanto as responsabilidades de um elemento são fortemente relacionadas, um elemento com responsabilidades altamente relacionadas e que não executa um grande volume de trabalho, tem coesão alta, já os elementos que executam múltiplas funções, ou que executa diversas tarefas além de não ter nenhum relacionamento, possuem baixa coesão.

As classes com baixa coesão são:

· Difíceis de compreender pois não existe relação entre elas, ou muito pouca;

· Difíceis de reutilizar pois estão fortemente acopladas ou possuem granularidade alta;

· Difíceis de manter pois manutenção em uma classe mal relacionada e muito acoplada é praticamente impossível;

· Delicadas, além de serem constantemente afetadas por mudanças.

O principal defeito em um sistema com baixa coesão é ter classes com responsabilidades que deveriam ter sido delegadas a outros objetos.

aula 12 e 13 (acoplamento de controle, dados globais, dados internos)

Acoplamento de controle:

Basicamente quando há passagem de flags de controle entre objetos de forma que um objeto controle as ações do outro objeto, ou melhor:

  • Objeto a manda uma mensagem para objeto b
  • b usa um parâmetro da mensagem para decidir o que fazer

A solução para este tipo de acoplamento é decompor as operações das classes em múltiplas operações.

Acoplamento de dados globais:

  • Dois ou mais objetos compartilham estruturas de dados globais
  • É um acoplamento muito ruim pois está escondido
  • Uma chamada de método pode mudar um valor global e o código não deixa isso aparente
  • Um tipo de acoplamento muito ruim

Acoplamento de dados internos:

  • Um objeto altera os dados locais de um outro objeto
  • Ocorrência comum:
    • Friends em C++
    • Dados públicos, package visibility ou mesmo protected em java
  • Use com cuidado!

aulas 10 e 11 (acoplamento de dados)

Dentro do padrão baixo acoplamento há algumas divisões quanto aos tipos:

  • Acoplamento de dados
  • Acoplamento de controle
  • Acoplamento de dados globais
  • Acoplamento de dados internos

O acoplamento de dados ocorre quando a saída de um objeto é a entrada de outro ou quando há uso de parâmetros para passar itens entre métodos.

Exemplificando:














Há grande acoplamento entre as classes Aluno e ListaOrdenada, de acordo o princípio do padrão baixo acoplamento, a classe ListaOrdenada está fazendo uma comparação, mas dentro de um grande sistema ela teria que fazer comparação de qualquer elemento, e não apenas de uma matrícula, como é esse caso.

aula 8 e 9 (padrão baixo acoplamento)

O objetivo geral deste padrão é atribuir responsabilidade de maneira que o acoplamento permaneça fraco.

Acoplamento quer dizer junto, agregado, ou seja, na linguagem de análise e projeto, é o quanto uma classe está ligada a outra, ou seja, quanto uma classe depende de outra, tem conhecimento ou depende dos elementos desta classe.

Um sistema com baixo acoplamento tem independência, com isso, reduz o impacto nas mudanças que poderão vir a ocorrer.

Os principais benefícios do baixo acoplamento são:

· Não é afetado por mudanças

· È simples de entender isoladamente

· È conveniente para reutilização

aula 6 e 7 (padrão criador)

Um objeto é uma instância de uma classe, portanto em uma conjunto de classes, ou seja, um sistema, haverá diversos objetos. Um objeto é criado a partir de uma chamada de procedimento conhecidas como mensagens que uma classe envia a outra, pois bem, o ponto onde queremos chegar é este. Qual classe é responsável por passar uma mensagem a outra para que seja criada uma instância da mesma? Sabemos que em um projeto é útil ter um princípio geral para atribuições de responsabilidades de criação. Sendo essas responsabilidades bem atribuídas, o projeto apresentará acoplamento fraco, mais clareza, encapsulamento fraco e reutilização.

O objetivo básico do padrão criador é encontrar um criador que necessite ser conectado ao objeto criado em qualquer evento. Escolhê-lo como criador garante um acoplamento fraco.

Segundo o padrão criador, uma classe é responsável por criar instâncias de outra se uma das seguintes condições se aplicar:

a. B agrega objetos da classe A.

b. B contém objetos da classe A.

c. B registra instâncias da classe A.

d. B usa muitos objetos da classe A.

e. B possui os dados usados para inicializar A.