Se uma classe abstrata declara uma interface, essa classe ti...

Próximas questões
Com base no mesmo assunto
Q52977 Engenharia de Software
Julgue os itens a seguir, relativos a conceitos de orientação a objetos e UML.

Se uma classe abstrata declara uma interface, essa classe tipicamente contém declarações de métodos, mas não corpos de métodos; a interface não pode ser implementada por classes que herdem da classe abstrata. Em diagramas UML, a classe abstrata pode ser identificada colocando-se seu nome em itálico, e relacionamentos de dependência podem ser representados por setas tracejadas entre clientes da interface e a classe abstrata.
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

A alternativa correta é E - errado. Vamos entender o porquê.

Na programação orientada a objetos, uma classe abstrata é uma classe que não pode ser instanciada por si só, significando que você não pode criar um objeto diretamente desta classe. Ela é projetada para ser uma classe base de outras classes. Uma classe abstrata pode conter métodos abstratos e métodos concretos (com corpo). Os métodos abstratos declaram a assinatura sem fornecer uma implementação.

Importante mencionar que, quando uma classe herda de uma classe abstrata, ela deve implementar todos os métodos abstratos que não foram implementados anteriormente, ou então essa classe também deve ser declarada como abstrata.

Na UML, uma classe abstrata pode ser, de fato, identificada pelo nome em itálico. No entanto, a afirmação de que a "interface não pode ser implementada por classes que herdem da classe abstrata" está incorreta. A ideia por trás de uma interface é justamente ser um contrato que outras classes podem implementar, definindo um conjunto de métodos que devem ser fornecidos por qualquer classe concreta que se comprometa com essa interface. Classes abstratas podem muito bem declarar e implementar interfaces.

Além disso, em UML, relacionamentos de dependência são geralmente representados por uma seta tracejada com uma ponta aberta, mas isso não é específico para a relação entre clientes e uma classe abstrata - é um conceito mais genérico que pode representar qualquer tipo de dependência.

Com base nesses esclarecimentos, podemos perceber que a alternativa está errada porque mistura conceitos de classes abstratas e interfaces, e apresenta uma restrição inexistente sobre a implementação de interfaces por classes derivadas de uma classe abstrata.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

ERRADO

por causa disso:
"a interface não pode ser implementada por classes que herdem da classe abstrata."

Não se se aplica à UML tbm, mas essa afirmação em java estaria errada : "essa classe tipicamente contém declarações de métodos, mas não corpos de métodos;


pois em uma classe abstrata pode ter métodos abstratos e métodos concretos

neste caso, cada método da interface deve obrigatoriamente ser implementado por classes que herdem da classe abstrata.
já a classe abstrata pode ou não implementar (codificar) todos os métodos realizados da interface.

e-

Classe Abstrata

- Seus métodos podem ter suas próprias implementações padrão, podem ser estendidos e podem funcionar, independente da classe herdeira (subclasse).

- Seus métodos podem ser implementados se declarados abstratos.

- Pode implementar mais de uma interface, mas pode herdar apenas uma classe.

 In Java, an abstract class can implement an interface, and not provide implementations of all of the interface’s methods.

https://hackerbits.com/programming/why-does-an-abstract-class-need-to-implement-interface-methods/

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo