quarta-feira, 14 de maio de 2008

Aula 23 e 24 de Projetos Orientado a Objetos

Padrão Command

O padrão Command é baseado em: encapsular uma solicitação como uma objeto, assim permitindo filas, rollbacks e façam logs. Conhecido também como Action ou Transaction.
O uso deste padrão muitas vezes é utilizado para substituir procedures no banco de dados, ou seja, caso o programador quiser que seu software execute um calculo ou então faça uma inserção em varias tabelas de seu banco de dados através de uma única solicitação, ele pode fazer com que seja realizado isso no próprio banco, ou seja, que o banco processe esta informação ou ele pode utilizar a camada de aplicação utilizando uma transaction, pois a mesma permite rollbacks e commit, assim mantendo a segurança de se houver falha em uma parte da inserção ou do calculo, não executara esta solicitação por inteiro.

Bibliografia: Material fornecido pelo professor e conhecimentos próprios.

sexta-feira, 9 de maio de 2008

Aula 21 e 22 de Projetos Orientado a Objetos

Padrão Observer

Este padrão tem como objetivo definir uma dependência de um para muitos entre objetos, para que quando um objeto mudar seu estado, seus dependentes atualizem automaticamente.
Este padrão disponibiliza uma facilidade maior de manutenção, pois a cada alteração de um objeto, não é necessária a atualização de todos os seu objetos dependentes, ou seja, não sendo necessário se preocupar com outros objetos, pois automaticamente eles iram reconhecer a atualização.
- Vantagens:
– Tanto observadores quando sujeitos observados
podem ser reutilizados e ter sua interface e
implementação alteradas sem afetar o sistema
– O acoplamento forte implicado pelo relacionamento
bidirecional é reduzido com o uso de interfaces e
classes abstratas
- Desvantagens:
– O abuso pode causar sério impacto na performance.
– Sistemas onde todos notificam todos a cada
mudança ficam inundados de requisições
("tempestade de eventos")

Bibliografia: Material fornecido pelo professor

Aula 19 e 20 de Projetos Orientado a Objetos

Padrão Singleton
O padrão Singleton, ou seja, o padrão de responsabilidade foge à regra comum de que as responsabilidades devem ser distribuídas ao Máximo. Este padrão centraliza a responsabilidade em uma única instância de uma classe, assim garantindo que uma classe terá apenas uma única instância e garantindo um acesso global a ela. Este padrão garante que apenas um objeto exista independente do número de requisições que ele irá sofrer.
A utilização de Singleton tem que ser bem analisada, pois existem alguns pontos fortes porem alguns pontos fracos também.
Pontos Fortes:
- Acesso central e extensível a recursos e objetos
– Pode ter subclasses* (o que seria impossível se fosse apenas
usada uma classe com métodos estáticos)

Pontos Fracos:
– Qualidade da implementação depende da linguagem
– Difícil de testar (simulações podem depender de instância extra)
– Uso (abuso) como substituto para variáveis globais
– Criação "preguiçosa" é complicada em ambiente multithreaded
– Difícil ou impossível de implementar em ambiente distribuído (é
preciso garantir que cópias serializadas refiram-se ao mesmo
objeto)

Bibliografia: Material fornecido pelo professor.

Aula 17 e 18 de Projetos Orientado a Objetos

Padrões GOF
A criação de padrões nada mais, nada menos é definir uma forma linear de como proceder com determinadas tarefas. Assim como o cirurgião deve seguir procedimentos padronizados em uma cirurgia, um programador também deve seguir padrões no seu desenvolvimento, para que em seu ambiente de trabalho ele consiga manter uma linguagem única entre seus companheiros de trabalho.
No desenvolvimento de projetos onde existe a descrição de objetos que se comunicam e classe que são customizadas, foi descrito por Erich Gamma, John Vlissides, Ralph Jonhson e Richard Helm, 23 padrões de projetos úteis.

Esses 23 padrões utilizam as melhores praticas em OO, utilizando polimorfismo, herança, modularidade, composição e abstração. Onde esses padrões são classificados por GAMMA em:

- Por propósito:
Criação de Classes e objetos
Alteração da estrutura de uma aplicação
Controle de seu comportamento

- Por escopo:
Classe
Objeto

E diferente de Gamma, METSKER classifica em 5 Grupos:

- Oferecer um interface.
- Atribuir uma responsabilidade
- Realizar a construção de classes ou objetos
- Controlar formas de operação
- Implementar uma extensão para a aplicação


Adapter

O padrão Adapter, que é o padrão de interface, tem por si o objetivo de transformar a interface de uma classe, de uma forma esperada para o cliente, e ainda permite a comunicação entre duas classes que não poderiam trabalhar juntas devido a incompatibilidade de suas interfaces.

Dois Tipos de Adapter:

- Adaptador de Objetos: Quando o alvo é uma classe, usa agregação.
- Adaptador de Classe: Quando o alvo é uma interface, usa herança múltipla.

É utilizado o class Adapter quando houver uma interface que permita a implementação estática. E o objeto Adapter quando for desejado um acoplamento menor.

Bibliografia: Material fornecido pelo Professor