Questão nº 52

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

FGV2014Técnico Superior Especializado em Rede de ComputadoresRedes de Computadores
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 onde uma nova classe (chamada subclasse ou classe filha) pode reutilizar e estender as características (métodos e atributos) de uma classe existente (chamada superclasse ou classe pai).

  • (A) Incorreta: Abstração é o processo de esconder os detalhes de implementação e mostrar apenas a funcionalidade essencial ao usuário. Não explica como um método da classe pai é acessado pela classe filha.
  • (B) Incorreta: Associação descreve um relacionamento "tem um" entre duas classes independentes, onde uma classe usa ou contém uma instância de outra. Não se aplica à relação "é um" entre Fusca e Carro.
  • (C) Incorreta: Uma interface define um contrato de métodos que uma classe deve implementar, sem fornecer a implementação. Embora Python não tenha interfaces explícitas como outras linguagens, o conceito não explica a reutilização de código da classe pai.
  • (D) Correta: A mensagem produzida pelo comando y.FaleComigo() deve-se ao mecanismo de herança. A classe Fusca herda da classe Carro, o que significa que Fusca automaticamente possui todos os métodos e atributos de Carro, incluindo FaleComigo, a menos que os sobrescreva. Como Fusca não sobrescreveu FaleComigo, ela executa a versão herdada de Carro.
  • (E) Incorreta: Polimorfismo é a capacidade de objetos de diferentes classes responderem ao mesmo método de maneiras diferentes (geralmente por sobrescrita de método) ou de um objeto assumir várias formas. Embora relacionado à herança, neste caso específico, Fusca não sobrescreveu FaleComigo, então não há uma "forma diferente" do método sendo executada; é a versão original herdada que está sendo usada. A armadilha aqui é que polimorfismo ocorre com herança, mas a razão fundamental pela qual y possui o método FaleComigo é a herança.

Fonte: FGV DPGE-RJ 2014 Técnico Superior Especializado em Rede de Computadores (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