Questão
ID 67262Disciplina: Tecnologia da Informação
Assuntos: Padrões Comportamentais, Padrões Estruturais
Ano: 2025 Banca: PERFIL - ENADE Órgão: Terceiro Simulado Pnd
Em um curso de Engenharia de Software, o professor está ensinando sobre padrões de projeto (design patterns). Ele quer que os alunos compreendam que os padrões de projeto não são códigos prontos, mas sim 'receitas' ou soluções gerais para problemas recorrentes de design de software. Para ilustrar, ele foca no padrão **Strategy**. Ele apresenta a definição do livro 'Design Patterns: Elements of Reusable Object-Oriented Software' (o livro da 'Gangue dos Quatro'): "O padrão Strategy define uma família de algoritmos, encapsula cada um deles e os torna intercambiáveis. O Strategy permite que o algoritmo varie independentemente dos clientes que o utilizam." Para a atividade prática, ele propõe o seguinte cenário: desenvolver um sistema de uma loja online que precisa calcular o frete de uma compra. O método de cálculo do frete pode variar dependendo da escolha do cliente: Sedex, PAC ou transportadora. Uma abordagem inicial, sem usar o padrão, seria usar uma longa estrutura `if-else` ou `switch` dentro da classe `Pedido` para selecionar o método de cálculo.
Como o padrão de projeto **Strategy** seria aplicado para melhorar o design do sistema de cálculo de frete?