sexta-feira, 28 de março de 2008

Aulas 15 e 16 - Projeto Orientado a Objetos

Alta Coesão

Alta coesão indica qual o grau de relacionamento entre os módulos de uma classe, sintonia que há entre eles, o grande problema de se ter uma alta coesão é o gerenciamento da complexidade, deve-se manter esse tipo de coesão, faz com que elimina ligações, reduz métodos sem ligações entre eles, um trabalha sinergia do outro.

Baixa Coesão podemos citar vários problemas encontrados:

Difícil de entender – muitos métodos numa mesma classe;
Difícil de reusar- muitas classes diferentes para gerenciar;
Difícil de manter – dificuldade no entendimento das classes;
Assumir responsabilidade demais – há uma sobrecarga de classes com muitas responsabilidades;
Solução para os problemas relacionados acima:
Cada classe com sua própria responsabilidade, por exemplo, um módulo de venda não tem a responsabilidade de conectar com o Banco não é missão dela.
Temos alguns tipos de coesão:
- Coincidental
- Lógica
- Temporal
- Procedural
- De comunicação
- Sequencial
- Funcional

Conseqüências de Alta Coesão

1 – Melhora o reuso
2 – Sistemas mais fáceis de manter
3 – Melhora o Entendimento
4 – Melhora a granularidade e conseqüentemente aumenta o reuso
Padrão Controlador
Se preocupa com eventos da classe cadidata para tratar isso, normalmente para cada caso de uso tem que ter um controlador, um controlador apenas recebe o evento e passa adiante, delega para alguém.

quinta-feira, 20 de março de 2008

Aulas 13 e 14 - Projetos Orientado a Objetos

Acoplamento de Controle

Utiliza flags de controle entre os objetos de forma que um controle o outro, para percebemos um acoplamento de controle basta observar quais são as classes que estão acopladas e verificar a característica básica do controle que é justamente a passagem de parâmetros que controla outra classes, no exemplo mostrado em aula, observamos que há uma classe Lâmpada e uma classe Circuito, nesse caso a classe Circuito controla a classe Lâmpada, passando flags de ajuste para executar alguma ação (Ligar, Desligar, Piscar), há também na classe Lâmpada o problema de ajuste do código o código proposto em primeiro momento funciona, mas poderá ser refatorado criando apenas métodos que serão executados a partir de outra classe(Circuito) , em segundo momento decompomos a classe em múltipla operações primitivas, onde criamos um método para cada ação.

Duas soluções para o Acoplamento de Controle:

1º - Decompor a classe em métodos para se tornar mais transparente;
2º - Utilizar tratamento de exceções.

Acoplamento de Dados Globais

Quando dois ou mais objetos compartilham os mesmos dados, todas as classes trabalham com as mesmas coisas, o problema desse acoplamento é que fica escondido, tornando mais difícil perceber o problema.


Acoplamento de Dados Internos


Quando um objeto altera os dados locais de outro, por exemplo, dados protected e public no caso da linguagem Java, para que esse problema se torne mais difícil de acontecer utiliza-se private e métodos assessores e mutatórios para evitar o acoplamento de dados internos, essas duas soluções lembra o encapsulamento de dados.

quinta-feira, 13 de março de 2008

Aulas 11 e 12 - Projetos Orientado a Objetos

Acoplamento

Pode-se dizer que acoplamento e à medida que dá a dependência de uma classe com outra, é possível identificar um acoplamento quando uma classe está relacionada com outra através de uma associação, agregação, etc, está ramificada em:

- Conhecimento
- Dependência
- Interligação

O que estudamos nas aulas 10 e 11 como utilizar o baixo acoplamento que é uma boa prática de projeto, quanto menor o relacionamento entre as classes melhor é a manutenção, a portabilidade e a reutilização da mesma. O problema de um alto acoplamento, torna difícil o entendimento, a reutilização e a mudança se necessário de um lugar para outro, a solução mais óbvia é aplicar o Baixo Acoplamento.

Podemos citar alguns tipos de Acoplamento:

Acoplamento de dados 1 (-)
Acoplamento de controle 2
Acoplamento de dados Globais 3
Acoplamento de dados Internos 4 (+)

quinta-feira, 6 de março de 2008

Aulas 9 e 10 - Projeto Orientado a Objetos

Padrões GRASP

- Criador

Nas duas aulas ministradas discutimos o funcionamento do Padrão criador, exemplificando com códigos.

Produto

Public calss produto {

private Integer idProduto;
private String Descricao;
private Double valorUnitario;

public String GetDescricao() {

return descrição;
}

Public void setDescricao (String descricao) {

This.descricao = descircao;
}
}

ItemVenda

Public calss produto {

private Double qtde;
private Produto p;

public void setP(Produto p) {


this.p = p;
}
}

Venda

public class Venda {

private set itemVendaList = new HashSet();
private Data dataVenda;
private Integer idVenda;

public criarItemVenda (Produto P, Dpuble qtde) {

ItemVenda i = new ItemVenda();
i.setP(P);
i.setQtde(qtde);
itemVendaList.add(i);

}

}

No trecho de código está sendo aplicado não só o padrão criador, mas também o especialista, é importante citar também que há um encapsulamento do objeto.