SóProvas


ID
1119505
Banca
FGV
Órgão
DPE-RJ
Ano
2014
Provas
Disciplina
Programação
Assuntos

  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

Alternativas
Comentários
  • Quando falamos de herança, você terá que ser capaz de determinar se ele mostra um relacionamento “É UM”, ou “TEM UM”.

    Exemplo:

    Fusca é um carro

    Carro é uma superclasse de Fusca

    Fusca é uma subclasse de Veículo

    O termo “É UM”, é uma forma de dizer cada objeto de uma subclasse também é um objeto da superclasse, ou seja, o objeto de um tipo de subclasse também pode ser tratado como objeto de uma superclasse.

     

  • Observe que a classe Fusca é uma subclasse (também chamada de especialização) da classe Carro. Nestes casos, a classe filha herda da classe mãe seus atributos e métodos e ainda acrescenta alguma especialização, isto é, adiciona atributos e métodos exclusivos da classe filha.

    No enunciado em questão, a classe Fusca herda da sua mãe, a classe Carro, o método FaleComigo e ainda acrescenta o método FaleComUmFusca, exclusivo da classe filha Fusca.

    Na última linha do código é feita a chamada y.FaleComigo(). Isso é perfeitamente válido em Python porque o objeto y, apesar de não ter definido nenhum método FaleComigo, herdou este método de sua mãe Carro.

    Isso se deve ao mecanismo de herança.

    Resposta: D

  • Na questão, o comportamento invocado no objeto da classe-filha Fusca não está declarado na própria classe, mas na sua classe-pai Carro. Temos então um comportamento herdado devido ao mecanismo de herança.

  • Resposta do Professor Hamilton Rodrigues:

    Observe que a classe Fusca é uma subclasse (também chamada de especialização) da classe Carro. Nestes casos, a classe filha herda da classe mãe seus atributos e métodos e ainda acrescenta alguma especialização, isto é, adiciona atributos e métodos exclusivos da classe filha.

    No enunciado em questão, a classe Fusca herda da sua mãe, a classe Carro, o método FaleComigo e ainda acrescenta o método FaleComUmFusca, exclusivo da classe filha Fusca.

    Na última linha do código é feita a chamada y.FaleComigo(). Isso é perfeitamente válido em Python porque o objeto y, apesar de não ter definido nenhum método FaleComigo, herdou este método de sua mãe Carro.

    Isso se deve ao mecanismo de herança.

    Resposta: D