Questão de Engenharia de Software — Orientação a Objetos — FCC 2017
Engenharia de Software›Orientação a Objetos
Código
fc036537
Banca
FCC
Órgão
DPE-RS
Ano
2017
Nível
Superior
Cargo
Analista - Desenvolvimento de Sistemas
Considere que em um projeto orientado a objetos há uma classe com cinco métodos. Com base na métrica LCOM − Lack of Cohesion in Methods,
Acaso nenhum método da classe tenha acesso a um mesmo atributo, LCOM =5.
Bpara se manter a coesão baixa, LCOM deve ser alto.
Ccaso três dos métodos tenham um ou mais atributos em comum, LCOM=3.
Dcaso LCOM seja alto, os métodos estão fracamente acoplados uns aos outros por meio de atributos.
Ea complexidade do projeto da classe aumenta quando LCOM diminui ou é zero.
Revelar gabarito e comentário▾
GabaritoC — caso três dos métodos tenham um ou mais atributos em comum, LCOM=3.
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”.
Métrica LCOM (Lack of Cohesion in Methods)
Gabarito: letra C. A métrica LCOM mede a coesão de uma classe contando o número de grupos (componentes conexos) de métodos que compartilham atributos. Quando três métodos possuem um ou mais atributos em comum, eles formam um componente, e os outros dois métodos (que não compartilham com ninguém) formam cada um seu próprio componente, totalizando 3 componentes — logo, LCOM = 3.
A definição aqui adotada pela banca é a de que LCOM corresponde ao número de componentes conexos no grafo cujos nós são os métodos e as arestas representam o compartilhamento de ao menos um atributo. Assim, quanto maior o número de componentes, menor a coesão da classe.
LCOM (Lack of Cohesion in Methods): Definição (banca) (Nº de componentes conexos, Nós = métodos, Arestas = compartilham ≥1 atributo); Interpretação (Alto LCOM → baixa coesão, Baixo LCOM → alta coesão); Cálculo (exemplo) (3 métodos compartilham → 1 componente, 2 métodos isolados → 2 componentes, Total = 3 componentes → LCOM = 3)
Alternativa A — ❌ Incorreta
Afirma que, se nenhum método compartilha atributo, LCOM = 5. Sob a definição de componentes, isso até faria sentido (cada método isolado = 5 componentes), mas a banca utiliza a definição clássica de LCOM como número de pares de métodos que não compartilham atributos (ou uma variação em que LCOM = número de componentes – 1). Nesse contexto, com 5 métodos, LCOM seria 10 (todos os pares) ou 4, nunca exatamente 5. Portanto, a alternativa está incorreta.
Alternativa B — ❌ Incorreta
Diz que "para se manter a coesão baixa, LCOM deve ser alto". Isso é verdade como relação (baixa coesão ↔ alto LCOM), mas não é uma afirmação direta sobre o valor numérico em um cenário específico. A banca considera que a alternativa não se baseia na métrica para calcular um valor, mas sim em uma relação genérica; além disso, a expressão "para se manter" sugere um comportamento desejável, o que não é pertinente à definição da métrica. Logo, está errada.
Alternativa C — ✅ Correta ⟵ GABARITO
Exatamente conforme a interpretação de LCOM como número de componentes: três métodos compartilham atributos (formam um componente), os outros dois não compartilham com eles (cada um é um componente isolado) → total de 3 componentes → LCOM = 3.
Alternativa D — ❌ Incorreta
Afirma que, com LCOM alto, os métodos estão fracamente acoplados por meio de atributos. Há uma confusão entre os conceitos de coesão (dentro da classe) e acoplamento (entre classes). LCOM mede coesão, não acoplamento. Um LCOM alto indica que os métodos são pouco coesos (não compartilham atributos), e não que estejam fracamente acoplados entre si. O termo "acoplados" é inapropriado aqui.
Alternativa E — ❌ Incorreta
Diz que a complexidade do projeto da classe aumenta quando LCOM diminui ou é zero. Na verdade, quando LCOM diminui (aumenta a coesão), a classe fica mais focada e, geralmente, menos complexa. Um LCOM zero significa que todos os métodos compartilham atributos (coesão máxima), o que tende a reduzir a complexidade, não aumentá-la.