Questão nº 52

Questão de Suporte · FGV DPGE-RJ 2014 (nº 52)

FGV2014Técnico Superior Especializado em SuporteSuporte
Gabarito: Dver comentário ↓

Considere o seguinte trecho de um programa escrito na linguagem Python.

```
class Carro(object):
def FaleComigo(self):
print "Sou um carro"
class Fusca (Carro):
def FaleComUmFusca(self):
print "Sou um Fusca"
x = Carro()
y = Fusca()
x.FaleComigo()
y.FaleComigo()
```

No primeiro bloco, o método FaleComigo é definido para a classe Carro, que simplesmente produz a mensagem "Sou um carro" ao ser invocado. Para a classe Fusca, definida no segundo bloco, foi definido o método FaleComUmFusca, que apenas produz a mensagem "Sou um Fusca". No terceiro bloco, os objetos x e y tornam-se instâncias das classes Carro e Fusca, respectivamente. No quarto bloco, o método FaleComigo é invocado para cada um dos dois objetos, x e y. Ao ser executado, esse programa produz duas linhas na sua tela de saída:

```
Sou um carro
Sou um carro
```

A mensagem produzida no comando y.FaleComigo deve-se ao mecanismo de

Resposta comentada

Gabarito Alternativa D

Herança é um conceito da programação orientada a objetos que permite que uma classe (chamada de subclasse ou classe filha) adquira características (atributos e métodos) de outra classe (chamada de superclasse ou classe pai). Isso promove a reutilização de código e estabelece uma relação "é um tipo de".

  • (A) Incorreta: Abstração é o processo de ocultar detalhes complexos de implementação e mostrar apenas as funcionalidades essenciais. Embora seja um princípio fundamental da POO, não é o mecanismo direto que explica por que Fusca pode chamar o método de Carro.
  • (B) Incorreta: Associação descreve um relacionamento onde uma classe "tem um" objeto de outra classe (ex: um carro tem um motor). Não é o caso aqui, onde Fusca "é um" Carro.
  • (C) Incorreta: Uma interface define um contrato de métodos que uma classe deve implementar. O código não descreve a implementação de um contrato, mas sim a reutilização de um método já existente na classe pai.
  • (D) Correta: A classe Fusca herda da classe Carro. Isso significa que Fusca automaticamente "ganha" todos os métodos e atributos públicos de Carro, a menos que os sobrescreva. Quando y.FaleComigo() é chamado, e o método FaleComigo não é encontrado diretamente na classe Fusca, o Python o procura na classe pai (Carro) devido à herança, e o executa.
  • (E) Incorreta: Polimorfismo (muitas formas) permite que objetos de diferentes classes sejam tratados como objetos de um tipo comum, e que um mesmo método possa ter comportamentos diferentes dependendo do objeto que o invoca (geralmente por sobrescrita de método). No exemplo, Fusca não sobrescreve o método FaleComigo; ele simplesmente usa a implementação herdada de Carro. Se Fusca tivesse sua própria versão de FaleComigo e a chamasse, aí sim seria polimorfismo. A armadilha é que o polimorfismo frequentemente depende da herança, mas o mecanismo que permite ao Fusca acessar FaleComigo é a herança em si, não a alteração de seu comportamento.

Fonte: FGV DPGE-RJ 2014 Técnico Superior Especializado em Suporte (Caderno Tipo 1). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho