segunda-feira, abril 14, 2008

Conceitos de padrões de projeto de software

Projeto de software orientado a objetos reutilizável:

  • identificar objetos pertinentes

  • fatorar os objetos em classes

  • definir interfaces

  • definir hierarquia de herança

  • estabelecer as relações-chave entre objetos

A grande dificuldade é tentar desenvolver sistemas específicos que ao mesmo tempo sejam genéricos afim de que no futuro os componentes modelados possam ser reutilizado.

Boas soluções precisam ser reutilizadas repetidamente, ou seja, padrões de classes e de comunicação entre elas devem ser repassados entre diferentes projetos, dessa forma os projetos orientados a objetos tornam-se mais flexíveis.

Padrões de projetos tornam mais fácil reutilizar projetos e arquiteturas. Os padrões de projetos ajudam a escolher alternativas de projeto que tornam um sistema reutilizável.

Segundo Christopher Alexander “cada padrão descreve um problema no nosso ambiente e o cerne de sua solução, de tal forma que você possa usar essa solução mais de um milhão de vezes, sem nunca faze-lo da mesma maneira” [AIS+ 77]. Para Erich Gamma padrões de projeto “são descrições de objetos e classes comunicantes que precisam ser personalizadas para resolver um problema geral de projeto num contexto particular. Um padrão de projeto nomeia, abstrai, e identifica aspectos-chave de uma estrutura de projeto comum para torna-lo útil para a criação de um projeto orientado a objetos reutilizável” [G193].

Um padrão possui 4 elementos essenciais:

  1. O nome do padrão: vocabulário de projeto.

  2. O problema: descreve em que situação aplicar o padrão.

  3. A solução: elementos que compõe o padrão de projeto (relacionamentos, responsabilidades e colaborações)

  4. As consequências: resultados e análise das vantagens e desvantagens da aplicação do padrão. As consequências de um padrão incluem o seu impacto sobre a flexibilidade, a extensibilidade ou a portabilidade de um sistema.