Questão de Engenharia de Software — UML — FCC 2025
Engenharia de Software›UML
Código
fc150568
Banca
FCC
Órgão
TRT 2
Ano
2025
Cargo
TJ TRT2
Durante o desenvolvimento de um sistema de tramitação processual trabalhista, a equipe técnica optou por utilizar os princípios da orientação a objetos e diagramas da UML 2.5 para representar a modelagem. Considerando os conceitos de classes, métodos, interfaces, herança, encapsulamento, pacotes, sobrescrita e sobrecarga de métodos, bem como os diagramas da UML, a equipe entende, corretamente, que
Ano diagrama de classes da UML 2.5, a herança é representada por uma seta vazada com linha contínua apontando da subclasse para a superclasse, e métodos sobrescritos (override) devem manter a mesma assinatura da superclasse.
Bpacotes, em orientação a objetos, modelam agrupamentos físicos de arquivos, sendo que sua diagramação na UML é elaborada para mostrar a sequência de comunicação entre objetos, bem como as atividades correlacionadas.
Co encapsulamento é alcançado apenas pela herança entre classes, em que atributos privados são automaticamente expostos às subclasses para reutilização, e os métodos sobrescritos devem ter a mesma herança da superclasse.
Dmétodos sobrecarregados (overcharge) devem possuir o mesmo nome e exatamente a mesma assinatura, diferindo apenas no valor de retorno, e os métodos que tenham implementação padrão devem ser anotados com @def_method.
Einterfaces, em orientação a objetos, podem conter atributos e métodos com implementação padrão, desde que anotados com @default, e o encapsulamento é feito somente no nível do pacote adotado.
Revelar gabarito e comentário▾
GabaritoA — no diagrama de classes da UML 2.5, a herança é representada por uma seta vazada com linha contínua apontando da subclasse para a superclasse, e métodos sobrescritos (override) devem manter a mesma assinatura da superclasse.
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”.
UML 2.5: Herança, Sobrescrita e Sobrecarga
Gabarito: letra A. No diagrama de classes da UML 2.5, a herança (generalização) é representada por uma seta vazada com linha contínua apontando da subclasse para a superclasse, e métodos sobrescritos (override) devem manter a mesma assinatura da superclasse — é exatamente o que a alternativa A afirma. As demais alternativas misturam conceitos de orientação a objetos e de diagramas UML de forma incorreta.
A UML (Unified Modeling Language) é uma linguagem-padrão para visualizar, especificar, construir e documentar artefatos de sistemas de software. Ela define 14 tipos de diagramas, divididos em estruturais e comportamentais. O diagrama de classes é um diagrama estrutural que representa as classes do sistema, seus atributos, operações e os relacionamentos entre elas — incluindo associação, agregação, composição e herança (generalização).
A herança é um dos pilares da orientação a objetos: permite que uma classe (subclasse) herde atributos e métodos de outra (superclasse), promovendo reuso e hierarquia. Na UML, a generalização é desenhada com uma seta vazada (triângulo oco) na ponta, com linha contínua, apontando da subclasse para a superclasse. Esse é um detalhe notacional que a banca cobra com frequência.
A sobrescrita (override) é o mecanismo pelo qual uma subclasse redefine um método herdado, mantendo a mesma assinatura (nome, parâmetros e retorno) da superclasse, mas alterando a implementação. Já a sobrecarga (overload) é a definição de métodos com o mesmo nome, mas com assinaturas diferentes (parâmetros diferentes em tipo ou quantidade) — o retorno não é suficiente para diferenciar métodos sobrecarregados.
O encapsulamento é o princípio que esconde os detalhes internos de uma classe, expondo apenas o necessário por meio de métodos públicos. Ele é alcançado com modificadores de acesso (private, protected, public), não com herança. Interfaces, por sua vez, definem contratos que as classes devem cumprir; na UML, interfaces são representadas como classes com o estereótipo «interface» e podem conter apenas assinaturas de métodos (sem implementação) — embora linguagens como Java 8 permitam métodos default, isso não é uma regra da UML.
Pacotes, na UML, são mecanismos de agrupamento lógico de elementos de modelo (classes, interfaces, etc.), não agrupamentos físicos de arquivos. O diagrama de pacotes mostra a organização lógica, não a sequência de comunicação entre objetos — isso é papel do diagrama de sequência.
Guarde a fronteira entre herança (seta vazada contínua) e os demais relacionamentos (associação, agregação, composição), e entre sobrescrita (mesma assinatura) e sobrecarga (assinaturas diferentes): é exatamente nesses pares que as alternativas se dividem.
Critério
Sobrescrita (Override)
Sobrecarga (Overload)
Assinatura do método
Mesma (nome, parâmetros e retorno)
Diferente (parâmetros em tipo, quantidade ou ordem)
Classe
Subclasse redefine método herdado
Mesma classe (ou subclasse) define múltiplas versões
Objetivo
Alterar comportamento herdado
Oferecer variações de uso com mesmo nome
Retorno
Deve ser igual ao da superclasse
Não é suficiente para diferenciar (pode variar)
Exemplo UML/Java
@Override em método com mesma assinatura
Métodos com mesmo nome e parâmetros distintos
Alternativa A — ✅ Correta ⟵ GABARITO
A alternativa está correta em dois pontos: (1) a notação de herança na UML 2.5 é a seta vazada com linha contínua apontando da subclasse para a superclasse; (2) métodos sobrescritos (override) devem manter a mesma assinatura da superclasse — caso contrário, não é sobrescrita, mas sobrecarga ou um método novo. Essa é a definição clássica de polimorfismo por sobrescrita.
Alternativa B — ❌ Incorreta
A alternativa erra ao afirmar que pacotes modelam agrupamentos físicos de arquivos. Na UML, pacotes são agrupamentos lógicos de elementos de modelo. Além disso, a diagramação de pacotes não mostra sequência de comunicação entre objetos (isso é do diagrama de sequência) nem atividades correlacionadas (diagrama de atividades). A banca mistura três conceitos distintos: pacote (estrutural), sequência (comportamental) e atividade (comportamental).
Alternativa C — ❌ Incorreta
A alternativa erra ao afirmar que o encapsulamento é alcançado apenas pela herança e que atributos privados são automaticamente expostos às subclasses. Na verdade, encapsulamento é obtido com modificadores de acesso (private, protected, public) — e atributos private não são acessíveis diretamente pelas subclasses (apenas protected ou public). Além disso, a frase "métodos sobrescritos devem ter a mesma herança da superclasse" é sem sentido técnico: o correto é que mantenham a mesma assinatura.
Alternativa D — ❌ Incorreta
A alternativa erra ao afirmar que métodos sobrecarregados (overload) devem ter exatamente a mesma assinatura, diferindo apenas no valor de retorno. Na verdade, sobrecarga exige assinaturas diferentes (parâmetros diferentes em tipo, quantidade ou ordem); o retorno não é suficiente para diferenciar. Além disso, não existe anotação @def_method em Java ou UML — a banca inventou essa notação.
Alternativa E — ❌ Incorreta
A alternativa erra ao afirmar que interfaces podem conter atributos e métodos com implementação padrão desde que anotados com @default. Na UML, interfaces definem apenas contratos (assinaturas de métodos), sem implementação. Em linguagens como Java 8, métodos default são permitidos, mas não é uma regra da UML, e a anotação correta seria @Default (não @default). Além disso, o encapsulamento não é feito somente no nível do pacote — ele é feito em nível de classe, com modificadores de acesso.
NÃO CAIA NESSA!
A banca adora trocar os conceitos de sobrescrita e sobrecarga: na sobrescrita a assinatura é a MESMA (muda a implementação); na sobrecarga a assinatura é DIFERENTE (muda os parâmetros). Na alternativa D, ela inverteu exatamente isso — e ainda inventou uma anotação @def_method. Fique atento: se a alternativa falar em "mesma assinatura" para sobrecarga, está errada.
PEGA ESSA DICA!
Para fixar a notação UML: herança = seta vazada contínua (triângulo oco); associação = linha simples; agregação = losango vazio; composição = losango preenchido. E lembre: override = mesma assinatura; overload = assinaturas diferentes. Monte uma tabela mental com esses pares e resolva questões de notação com tranquilidade.