P1_IntroduzindoPadroesDeProjeto.pdf
Document Details
Uploaded by Deleted User
Tags
Full Transcript
Padrões de Projeto Prof. Bernardo Copstein Leituras recomendadas: Sommerville, Ian. Engineering Software Introdução Products – An Introduction to Modern Software Engineering. Pearson, 2019. Capítulo 8 Introdução Uma forma efe...
Padrões de Projeto Prof. Bernardo Copstein Leituras recomendadas: Sommerville, Ian. Engineering Software Introdução Products – An Introduction to Modern Software Engineering. Pearson, 2019. Capítulo 8 Introdução Uma forma efetiva de evitar falhas em seu Código é reusar Código. Código existente, normalmente em bibliotecas, costuma estar exaustivamente testado, de maneira que a grande maioria dos bugs já foi detectada e consertada. Entretanto o reuso de código nem sempre é possível porque pode ser muito custoso adaptar o código existente as necessidades atuais. Um outro tipo de reuso possível, que evita estes problemas, é reusar ideias e conceitos ao invés de código. Padrões de projeto são uma forma de descrever boas práticas em programação orientada a objetos O uso de padrões contribui para a redução das falhas porque eles descrevem soluções confiáveis para problemas recorrentes. Definição : um solução genérica e reusável para um problema recorrente em projeto de software Padrões de projeto são soluções reusáveis para problemas comuns que costumam ocorrer em certos contextos de projeto de software Resumindo Descrevem a estrutura para a solução de um São orientados à problema que deve ser objetos e descrevem adaptada para um caso soluções em termos de e uma linguagem de objetos e classes programação particulares Separação de objetivos: Cada abstração do programa (classe, método, Princípios interface etc) deve lidar com um único propósito ou objetivo e todos os aspectos básicos que relativos aquele objetivo devem ser tratados por aquela abstração norteiam os padrões Separação do “o que” do “como”: Se um componente fornece um serviço em particular, ele deve expor apenas a informação necessária para que possa ser usado. A informação sobre como foi implementado não é de interesse de seus usuários. Se você segue os princípios seu código fica menos complexo e menos propenso à erros Seguindo os A complexidade aumenta a chance de cometermos erros e inserirmos defeitos em nossos programas princípios Padrões foram desenvolvidos em diferentes áreas, mas os mais conhecidos ainda são os desenvolvidos pela “Gangue dos quatro” no livro de 1995 → Design Patterns: Elements of Reusable Object-Oriented Software escrito por Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides Segundo o catálogo GoF, os padrões podem ser classificados segundo sua finalidade: Padrões de criação: preocupam-se com a criação de classes e objetos. Definem maneiras de instanciar e inicializar objetos e classes que são mais abstratos que os mecanismos básicos definidos pelas linguagens de programação. Padrões estruturais: preocupam-se com a maneira Classificação como classes e objetos podem ser compostos. Descrevem como classes e objetos podem ser combinados para formar estruturas maiores. Padrões comportamentais: preocupam-se com a forma como os objetos e classes se comunicam. Definem como os objetos interagem trocando mensagens, as atividades em um processo e como estas são distribuídas entre os objetos participantes. 7 Padrões de Projeto provêm um vocabulário comum para o entendimento e discussão de projetos de software Padrões de Projeto podem melhorar a flexibilidade ou performance do código Considerações Padrões de Projeto podem aumentar a complexidade do código gerais Neste caso, devem ser utilizados quando as vantagens do uso de um determinado padrão são maiores que as desvantagens Padrões de Projeto devem ser utilizados de modo a preservar o Princípio de Substituição Deve-se evitar o deslumbramento Padrões devem ser usados para tornar Não se deve forçar o código mais fácil o uso de padrões de ler e manter 9 O exercício que segue (ver tarefa no Moodle) tem como objetivo principal demonstrar a importância do planejamento dos componentes de um software dentro de certos princípios. Incluem-se aí os aspectos de projeto de Exercício grande escala (padrões arquiteturais) e de pequena escala (padrões de projeto). Como veremos ao longo do semestre, motivador do para que um ou outro sejam efetivos é preciso que sejam planejados dentro dos mesmos princípios. uso de O exercício trata de classes que modelam um "carro". padrões Embora inicialmente pareça um exercício simples de disciplinas tipo "Programação Orientada a Objetos", leia todo o enunciado antes de começar. Lembre-se que o objetivo do exercício não é verificar seu conhecimento de Java e sim levá-lo a refletir sobre a melhor forma de organizar um conjunto de classes de maneira a satisfazer as alterações que são solicitadas. Procure anotar suas reflexões de maneira a poder discutir as mesmas após o término do exercício.