150 likes | 264 Views
PADROES DE PROJETO. PROF. OSIEL MARLON. PADRÕES DE PROJETO. INTRODUÇÃO
E N D
PADROES DE PROJETO PROF. OSIEL MARLON
PADRÕES DE PROJETO • INTRODUÇÃO • Padrões de projeto têm emergido como uma das mais promissoras abordagens para a melhoria da qualidade de software. Eles enfatizam a identificação e comunicação entre pessoas de elementos dos melhores exemplos e práticas em software. • Entretanto, não substituem as abordagens correntes, e sim as complementam com o preenchimento de lacunas que não estavam sendo tratadas adequadamente. • A principal lacuna é a deficiência no compartilhamento dos melhores exemplos e práticas em software. • O enfoque nestes aspectos tem gerado um grande número de “soluções” para os problemas do software que não tem tido os resultados práticos esperados, agravando o que é conhecido como a “crônica crise do software”.
Os padrões de projeto tornam mais fáceis reutilizar projetos e arquiteturas bem-sucedidas. • Ajudam a escolher alternativas de projeto que tornam um sistema mais reutilizável e a evitar alternativas que comprometam a utilização.
PRINCIPAIS CONCEITOS • A idéia central de Padrões de Projeto está fortemente baseada nos trabalhos de Christopher Alexander, que propôs uma nova atitude para arquitetura, construção e planejamento de cidades, comunidades, prédios e casas.
Um padrão descreve uma solução para um problema que ocorre com freqüência durante o desenvolvimento de software, podendo ser considerado como um par “problema/solução”. • Os padrões de software podem se referir aos diferentes níveis de abstração no desenvolvimento de sistemas orientados a objetos.
Um padrão de projeto sistematicamente nomeia, explica e avalia um projeto importante e recorrente em sistemas orientados a objetos, descrevendo “moldes” para a arquitetura de software.
ELEMENTOS ESSENCIAIS • A abordagem Padrões de Projeto pode ser definida por meio de quatro perspectivas complementares: nome, problema, solução, conseqüências. • Nome - referência a descrição de um problema de projeto, suas soluções e conseqüências, em uma ou duas palavras. Dar nome a um padrão aumenta imediatamente o vocabulário de projeto. • Problema - descreve quando aplicar um padrão, defi nindo o contexto do sistema, as estruturas de classe e a lista de condições que devem ser satisfeitas para que faça sentido aplicar o padrão. • Solução - descreve os elementos que compõem o projeto, seus relacionamentos, suas responsabilidades e colaborações, além de mostrar um arranjo geral de elementos que resolvem um determinado problema. É feito o uso de UML para descrição de soluções. • Conseqüências: é feita uma análise crítica do padrão fornecido, incluindo vantagens, desvantagens e limitações, definindo elementos que infl uenciam decisivamente na escolha de um padrão, como solução para um problema.
CLASSIFICAÇÃO DE PADRÕES • Padrões se referem à comunicação de problemas e soluções, permitindo documentar um problema conhecido recorrente a sua solução em um contexto específico, repassando esse conhecimento para outras pessoas. • Padrões de projeto – descrevem soluções para problemas de projeto de software. • Padrões de interface – defi nem soluções para problemas comuns no projeto de interfaces de sistemas. • Padrões de programação – descrevem soluções de programação particulares de uma determinada linguagem de programação ou regras gerais de estilo de programação. • Padrões de persistência – descrevem soluções para problemas de armazenamento de informação em arquivos ou bancos de dados. • Padrões para hipertextos – descrevem soluções para problemas encontrados no projeto de hipertextos. • Padrões para hipermídia – descrevem soluções para problemas encontrados no desenvolvimento de aplicações multimídia.
EXEMPLO DE UMA ARQUITETURA • Um padrão de projeto servirá para auxiliar o trabalho, comunicação e entendimento entre os desenvolvedores sobre a natureza do problema. • Um exemplo de padrão, que será mostrado como exemplo, é o façade (fachada) [Gamma]. A finalidade do façade é estabelecer uma única interface de comunicação entre a classe cliente e a classe de negócio. • A utilização deste padrão facilita na manutenção, portabilidade e produção de novos sistemas, já que toda a comunicação entre as classes já foi estabelecida.
Dentre os benefícios que se obtêm com a implementação do fachada, podem ser destacados: • separação entre os clientes e os componentes do subsistema, diminuindo o número de objetos que têm que se comunicar com os clientes; • baixo acoplamento entre o subsistema e os clientes, permitindo que haja alterações dos componentes do subsistema sem que isso afete os clientes; • não há restrições, caso seja necessário utilizar as classes do sistema nas aplicações, sendo possível optar por facilidade de uso ou generalidade.
Facade-Fachada • Estrutura-Uma única interface é definida para comunicação com o banco de dados. Padrão Façade aplicado a uma classe de um projeto.
Facade-Fachada • Considerações sobre implementação • Redução do acoplamento do cliente-subsistema. • Ocorre tornando o Facade uma classe abstrata com subclasses concretas. • Classe de subsistemas: públicas ou privadas ? • A classe Facade deve ser naturalmente pública. As classes envolvidas no processo podem ser privadas, mas por convenção de padronização independente de linguagem de programação devem ser públicas.
Considerações Finais • Ao usar um padrão de projeto é importante: • Ler e entender o padrão por inteiro; • Estudar como os padrões se interrelacionam; • Estudar padrões com finalidades semelhantes; • Definir de maneira clara as classes e operações que suportem as responsabilidades e colaborações presentes no padrão. • Os padrões de projetonãodevem ser aplicados indiscriminadamente, mas apenas quando a flexibilidade que eles oferecem é realmente necessária.
Referência Bibliográfica • Salviano, Clenio. Introdução à Software Patterns • Tutorial SBES’97 ftp://st.cs.uiuc.edu/pub/patterns/presentations/nswpatt.zip • Alur,Deepak- Core J2EE patterns: as melhoeres práticas e estratégias de design • Gamma,Erich et all- Padrões de projeto:Soluções reutilizáveis de software orientada a objeto