domingo, 30 de março de 2008

Aulas 14 e 15 - Coesão

Alta coesão

Problema e como gerenciar a complexidade: a coesão mede quão focada ou relacionada estão os módulos de uma classe.
Uma classe com baixa coesão faz muitas coisas não relacionadas. Tais classes são indesejáveis, pois sofrem dos seguintes problemas que são difíceis de compreender, difícil de reutilizar, difícil de manter e delicadas, ou seja, constantemente afetadas pelas mudanças.
As classes de coesão baixa geralmente representam um grau de abstração muito alto e de grande granularidade, ou então assumiram responsabilidades que deceriam ter sido delegadas a outros objetos.
Temos 4 tipos de coesão funcional que são:

Coesão muito baixa: uma única classe é responsável por muitas coisas em áreas funcional muito diferente.

Coesão Baixa: uma classe é a única responsável por uma tarefa não complexa em uma área funcional.

Coesão Alta: Uma classe tem responsabilidades moderadas e, uma área funcional e colabora com outras classes para realizar tarefas.

Coesão moderada: uma classe tem peso leve e responsabilidades exclusivas em algumas áreas logicamente relacionadas ao conceito da classe, mas não uma com a outra.

Coesão coincidental

Não existe nenhuma coesão entre os módulos, eles se agrupam por coincidências.

Coesão Lógica

Neste padrão tem que ser respeitado como um baixo acoplamento, pois a alta coesão deve ser mantida dentro do método.

Coesão Temporal

Os módulos estão coesos, por algum evento temporal.

Coesão comunicação

São os métodos que agem sobre o mesmo dado, mas isso não significa que sejam métodos coesos, portanto não deveriam estar juntos.

Coesão seqüencial

Nela os módulos estão juntos apenas porque a saída de um é à entrada do outro.

Coesão Funcional

Os módulos estão coesos de tal forma a trabalhar num mesmo objetivo, ou seja, todos os métodos estão focados em um único objetivo.
Coesão Procedural

Faz com que os módulos se agrupem por procedimentos, mesmo não sendo coesos.

Aulas 12 e 13 - Acoplamentos

Acoplamento de controle
Ocorre quando se quer flags de controle entre objetos de forma em que um controla o outro objeto.
Neste acoplamento uma classe tem o pode ser de controlar o comportamento de outra classe.

Acoplamento de dados globais
Ocorre quando dois ou mais objetos compartilham os mesmos dados.

Acoplamento de dados internos

Um objeto altera os dados locais de outro objeto
Dados protected e públicos em Java

Aula 10 e 11 - Acoplamento Fraco

Nestas aulas apreendemos sobre acoplamento fraco que é uma forma de atribuir uma responsabilidade de maneira que o acoplamento permaneça fraco. O acoplamento fraco é um principio a ser levado em conta em todas as decisões de projeto. Ele e tipo um objeto que deve estar sempre em mente
O acoplamento fraco estimula a atribuição de uma responsabilidade de maneira que a sua colocação não aumente o acoplamento ate um nível que conduza aos resultados negativos de um acoplamento forte. Mas o acoplamento fraco favorece o projeto de classes que são mais independente, o que reduz o impacto das mudanças. Ele não pode ser considerado isoladamente de outros padrões como especialistas e a coesão alta, mas em vez disso precisa ser incluído como um entre vários princípios de projetos que influenciam uma escolha na atribuição de umas responsabilidades. Existe um extremo de acoplamento fraco que é queda não existe acoplamento entre as classes, ou seja, não é desejável porque a metáfora da tecnologia de objetos é que um sistema é composto de objetos conectados que se comunica por mensagens. Por isso caso se o acoplamento fraco for aplicado em demasia, levará há um projeto pobre, com poucos objetos ativos, sem coesão.

Aula 8 e 9- Padrão Criador

Nestas aulas compreendi que os métodos Set e Get eles tem como característica de transforma os dados que estão privados em public.
Como neste exemplo:
public class Produto
private Integer idProduto;
private String descricao;
private Double valorUnitario;

public String getDescricao( ){
Return descrição;
}public void setDescricao (String descricao){
This.descricao= descricao;
}

Também foi falado sobre os probelmas da rain que é ela tem 3 dimensões e não pode ser aumentado. Outra coisa foi que as interface não pode ser instanciadas.

terça-feira, 25 de março de 2008

Aula 6 e 7 - Padrão Criador

A criação de objetos e uma das atividades, mas comuns em um sistema. O padrão criador guia a atribuição de responsabilidades relacionadas com a criação de objetos, uma tarefa muito comum. Tem um objeto básico que é encontra um criador que garante um acoplamento fraco. Mas também algumas vezes um criador e encontrado ao olhar a classe que tem os dados inicias que serão passados na criação. Esse é na realidade um exemplo do padrão especialista. Dados de iniciação são passados durante a criação por meio de algum método de iniciação, como um construtor em Java, ou seja, um que contém parâmetros. Um exemplo disso seria uma instância de pagamento recente a ser iniciada, quando o criada com o total de venda. Uma vez que a venda sabe o total, é uma candidata à criadora do Pagamento.
Para utilizar o padrão criador não fácil, porque muitas vezes a criação é uma tarefa complexa que exige uso de instâncias recicladas por motivo de desempenho, eventualmente criando uma instância de uma família de classes similares com base no valor de alguma propriedade externa, e assim por diante. Nesses casos, é aconselhável delegar a criação para uma classe auxiliar chamada Fábrica, em vez de usar a classe sugerida pelo criador.
Mas por outro lado o padrão criador favorece o acoplamento Fraco, e o que implica em menor desempenho para a manutenção e maiores oportunidades de reutilização.