Questão de Programação — Conceitos básicos de programação — FCC 2023
Programação›Conceitos básicos de programação
Código
fc069658
Banca
FCC
Órgão
TRT - 15ª Região (SP)
Ano
2023
Nível
Superior
Cargo
Analista Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação
Considere o seguinte caso hipotético:Um Analista de um Tribunal Regional do Trabalho está criando uma aplicação de gerenciamento de logística para distribuição de processos. A primeira versão da sua aplicação pode lidar apenas com a distribuição física feita por meio de pessoas, portanto, a maior parte do código fica dentro da classe Entregador. Depois de um tempo, a aplicação se torna bastante utilizada e ele recebe frequentemente várias solicitações de outros departamentos do órgão para incorporar, na aplicação, a logística de distribuição dos processos digitalizados por meio do computador. A adição de uma nova classe (meio) de distribuição ao programa causa um problema porque adicionar uma nova classe ao programa não é tão simples se o restante do código já estiver acoplado às classes existentes. Atualmente, a maior parte do código é acoplada à classe Entregador. Adicionar Computador à aplicação exigiria alterações em toda a base de código. Além disso, se mais tarde ele decidir adicionar outro meio de distribuição à aplicação, provavelmente precisará fazer todas essas alterações novamente. Como resultado, ele terá um código bastante sujo, repleto de condicionais que alteram o comportamento da aplicação, dependendo da classe de objetos de meio de distribuição.Uma solução de melhoria para deixar o código mais limpo e manutenível é usar o padrão de projeto
Acriacional Bridge.
Bcomportamental Composite.
Ccriacional Factory Method.
Dcomportamental Iterator.
Eestrutural Builder.
Revelar gabarito e comentário▾
GabaritoC — criacional Factory Method.
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Padrões de Projeto – Factory Method
Gabarito: letra C. O padrão criacional Factory Method é a solução ideal para o problema descrito, pois permite adicionar novas classes de distribuição (como Computador) sem modificar o código existente, delegando a criação de objetos a subclasses. O cenário apresenta forte acoplamento à classe Entregador, e a necessidade de alterar toda a base de código ao incluir um novo meio – exatamente o que o Factory Method resolve ao encapsular a lógica de instanciação.
A questão testa a identificação do padrão adequado para desacoplar a criação de objetos e promover extensibilidade sem modificar o código cliente. O padrão Factory Method define uma interface para criar um objeto, mas permite que subclasses decidam qual classe concreta instanciar. Isso elimina as condicionais espalhadas e facilita a adição de novos tipos.
Alternativa A – ❌ Incorreta
Bridge é um padrão estrutural que separa uma abstração de sua implementação, permitindo que ambas variem independentemente. Embora possa reduzir acoplamento, não é voltado para criar novos tipos de objetos sem modificar código existente. O problema é de criação, não de estrutura.
Alternativa B – ❌ Incorreta
Composite é um padrão estrutural que compõe objetos em estruturas de árvore para representar hierarquias parte-todo. Não se aplica à criação de novas famílias de objetos; trata de tratar objetos individuais e composições de maneira uniforme.
Alternativa C – ✅ Correta ⟵ GABARITO
Factory Method é um padrão criacional que define um método para criar objetos, permitindo que subclasses alterem o tipo de objeto que será criado. No caso, ao invés de instanciar diretamente Entregador ou Computador, o código usa uma fábrica que retorna o tipo adequado. Adicionar um novo meio implica apenas criar uma nova subclasse concreta da fábrica, sem alterar o restante do código. É a solução clássica para o problema de acoplamento e facilidade de extensão.
Alternativa D – ❌ Incorreta
Iterator é um padrão comportamental que fornece uma maneira de acessar sequencialmente os elementos de um objeto agregado sem expor sua representação interna. Não tem relação com a criação de novos tipos de objetos.
Alternativa E – ❌ Incorreta
Builder é um padrão estrutural que separa a construção de um objeto complexo de sua representação, permitindo o mesmo processo de construção criar diferentes representações. Embora seja útil para construir objetos com muitas configurações, não resolve o problema de adicionar novos tipos de objetos de forma desacoplada.
NÃO CAIA NESSA!
A banca mistura padrões criacionais e estruturais. A tentação é escolher Bridge (estrutural) por sua característica de desacoplamento, mas o cerne do problema é criação de novos objetos sem modificar o código existente – isso é função do Factory Method. Lembre-se: sempre que a ênfase for em "adicionar novas classes sem alterar o código", pense em padrões criacionais como Factory Method ou Abstract Factory.