SóProvas


ID
1119940
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
  • Acredito que a resposta seria Polimorfismo se tivessemos uma instância da classe Filha sendo referenciada por uma classe Mãe. Não conheço bem Python pra saber o quanto isso é comum.

  • 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.

     

  • Alternativa correta: D.

    .

    O mecanismo que forneceu o comportamento em questão é a HERANÇA, e não o polimorfismo.

    .

    Quando a classe Fusca herdou de Carro, ela não sobrescreveu ou sobrecarregou o método FaleComigo(). Isso fez com que a chamada da última linha retornasse o método "original", sem alterações.

    • 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.