Questão de Engenharia de Software — UML — FUNDATEC 2026
Engenharia de Software›UML
Código
qg685261
Banca
FUNDATEC
Órgão
IFC-SC
Ano
2026
Nível
Superior
Cargo
Professor EBTT - Informática: Linguagens de Programação
Considere o diagrama de classes apresentado:No diagrama apresentado, a classe BancoChain define o método processRequest(bankName: String) e possui o atributo next, que referencia outro objeto da mesma classe. As classes BancoA, BancoB, BancoC e BancoD herdam de BancoChain e podem especializar o comportamento desse método. Com base na estrutura representada no diagrama, assinale a alternativa correta.
AO diagrama indica que apenas uma instância de BancoChain pode existir no sistema.
BAs classes BancoA, BancoB, BancoC e BancoD não podem redefinir o método processRequest.
CO diagrama representa uma implementação típica do padrão de projeto Observer, no qual múltiplos objetos recebem notificações de mudanças de estado.
DO atributo next indica uma associação entre objetos da classe BancoChain, permitindo o encadeamento de instâncias dessa classe.
EO método processRequest só pode ser executado pela classe BancoChain, não podendo ser utilizado pelas subclasses.
Revelar gabarito e comentário▾
GabaritoD — O atributo next indica uma associação entre objetos da classe BancoChain, permitindo o encadeamento de instâncias dessa classe.
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ão de Projeto Chain of Responsibility e UML
Gabarito: letra D. O atributo next na classe BancoChain representa uma autoassociação (associação reflexiva), permitindo que um objeto da classe referencie outro da mesma classe, formando uma cadeia de responsabilidades — estrutura típica do padrão de projeto Chain of Responsibility. As demais alternativas distorcem o significado do diagrama: não há indicação de instância única (Singleton), as subclasses podem redefinir o método (polimorfismo), o padrão não é Observer e o método pode ser executado pelas subclasses.
O diagrama de classes UML é a representação estática da estrutura de um sistema orientado a objetos: mostra as classes, seus atributos, operações e os relacionamentos entre elas. Neste caso, a classe BancoChain possui um atributo next do próprio tipo — isso é uma autoassociação (ou associação reflexiva), que indica que um objeto da classe pode estar ligado a outro objeto da mesma classe. Essa estrutura é a base do padrão Chain of Responsibility, no qual uma requisição é passada ao longo de uma cadeia de objetos até que um deles a trate. Cada elo da cadeia decide se processa a requisição ou a repassa ao próximo (next).
O padrão Chain of Responsibility é um padrão comportamental do catálogo GoF. Sua intenção é evitar o acoplamento entre o remetente de uma requisição e seus receptores, dando a mais de um objeto a oportunidade de tratar a requisição, encadeando os objetos receptores e passando a requisição ao longo da cadeia até que um objeto a trate. No exemplo, BancoA, BancoB, BancoC e BancoD herdam de BancoChain e podem especializar o método processRequest, implementando cada um sua lógica de tratamento e repassando ao próximo quando não conseguem processar.
A herança permite que as subclasses redefinam (sobrescrevam) o método processRequest — isso é polimorfismo, um dos pilares da orientação a objetos. O método declarado na superclasse pode ser executado por qualquer objeto das subclasses, pois elas são do tipo BancoChain. A alternativa C confunde o padrão com Observer, que tem estrutura completamente diferente: no Observer há um sujeito (subject) que mantém uma lista de observadores e os notifica sobre mudanças de estado, enquanto no Chain of Responsibility há uma cadeia linear de objetos que repassam a requisição.
A alternativa A sugere o padrão Singleton, que garante uma única instância de uma classe — mas o diagrama não mostra nenhum indicativo disso (como um atributo estático ou método de acesso global). A alternativa E afirma que o método só pode ser executado pela classe BancoChain, o que contraria o próprio conceito de herança e polimorfismo: as subclasses herdam e podem sobrescrever o método.
NÃO CAIA NESSA!
A banca troca o padrão Chain of Responsibility pelo Observer, pois ambos são padrões comportamentais e envolvem comunicação entre objetos. No Chain, a requisição flui por uma cadeia linear (next); no Observer, há um sujeito que notifica múltiplos observadores de uma só vez. Guarde a diferença: cadeia linear (Chain) × lista de notificados (Observer).
Critério
Chain of Responsibility (diagrama)
Observer (alternativa C)
Singleton (alternativa A)
Estrutura
Cadeia linear com atributo next
Sujeito com lista de observadores
Instância única global
Fluxo de comunicação
Requisição passa de elo em elo até ser tratada
Sujeito notifica todos os observadores simultaneamente
Acesso centralizado a uma única instância
Relação entre objetos
Autoassociação (objeto aponta para outro da mesma classe)
Associação unidirecional sujeito→observadores
Sem associação entre múltiplas instâncias
Indicativo no diagrama
Atributo next do tipo BancoChain
Lista de observadores + método notify()
Atributo estático + construtor privado
Polimorfismo nas subclasses
Subclasses podem sobrescrever processRequest
Observadores implementam interface comum
Não há subclasses relevantes
Alternativa A — ❌ Incorreta
Afirma que apenas uma instância de BancoChain pode existir. Isso descreve o padrão Singleton, que não é indicado no diagrama. A autoassociação next sugere justamente o oposto: múltiplas instâncias encadeadas. Não há nenhum elemento no diagrama (como atributo estático ou método de acesso global) que restrinja a criação de instâncias.
Alternativa B — ❌ Incorreta
Diz que as subclasses não podem redefinir processRequest. Isso contraria o princípio do polimorfismo e o próprio enunciado, que afirma que as subclasses "podem especializar o comportamento desse método". Na UML, a herança permite que subclasses sobrescrevam métodos da superclasse.
Alternativa C — ❌ Incorreta
Identifica o diagrama como uma implementação do padrão Observer. No Observer, um sujeito mantém uma lista de observadores e os notifica sobre mudanças de estado. No diagrama, a estrutura é uma cadeia linear (next aponta para o próximo), característica do Chain of Responsibility, não do Observer.
Alternativa D — ✅ Correta ⟵ GABARITO
O atributo next é uma autoassociação (associação reflexiva): um objeto da classe BancoChain referencia outro objeto da mesma classe. Isso permite o encadeamento de instâncias, formando uma cadeia — exatamente a estrutura do padrão Chain of Responsibility. A alternativa espelha corretamente o significado do atributo no diagrama.
Alternativa E — ❌ Incorreta
Afirma que o método processRequest só pode ser executado pela classe BancoChain. Na orientação a objetos, as subclasses herdam os métodos da superclasse e podem executá-los e sobrescrevê-los. O enunciado inclusive afirma que as subclasses podem especializar o comportamento do método.
Gabarito: letra D — o atributo next indica uma autoassociação que permite o encadeamento de instâncias de BancoChain, caracterizando o padrão Chain of Responsibility.