Considere a classe Ruby a seguir: class Pessoa     def muda...

Próximas questões
Com base no mesmo assunto
Q535635 Programação
Considere a classe Ruby a seguir:


 class Pessoa
    def muda_nome(novo_nome)
       @nome = novo_nome
     end

      def diz_nome
           "meu nome é #{@nome}"
       end
end


É correto afirmar que 


Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: B - utiliza-se a instrução p = Pessoa.new para instanciar um objeto p da classe Pessoa.

Vamos entender por que essa alternativa é a correta:

No contexto da linguagem de programação Ruby, a criação de um novo objeto é feita chamando o método new sobre a classe desejada. No caso da classe Pessoa, para criar uma nova instância e atribuí-la à variável p, usa-se exatamente a instrução p = Pessoa.new. Esse processo é conhecido como instanciação e o objeto criado é chamado de instância da classe.

As outras alternativas falham nos seguintes pontos:

  • A Alternativa A menciona que as variáveis de instância são sempre protegidas, o que não é inteiramente verdade. Elas são acessíveis dentro dos métodos da própria instância e, por padrão, não são acessíveis diretamente fora da classe, mas isso não significa que são sempre protegidas, pois podem ser expostas por meio de métodos acessores (attr_reader, attr_writer, attr_accessor).
  • A Alternativa C apresenta um erro de sintaxe ao tentar passar o parâmetro para o método muda_nome. A sintaxe correta seria p.muda_nome("João"), sem o @ antes das aspas e com as aspas corretas.
  • A Alternativa D contém um erro no nome da função de saída padrão do Ruby. A função correta para imprimir uma string seguida de uma quebra de linha é puts, e não putz.
  • A Alternativa E usa a notação incorreta para chamar um método em Ruby. O operador -> não é utilizado em Ruby para esse propósito. A chamada de métodos é feita utilizando o ponto (.), como em p.diz_nome.

Portanto, a alternativa B é a única correta porque segue a sintaxe correta de Ruby para instanciar um novo objeto da classe Pessoa.

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

a) atributos, também conhecidos como variáveis de instância, não são sempre protegidos e começam com @.

c) para chamar o método muda_nome  por meio de um objeto p da classe Pessoa passando como parâmetro o nome João utiliza-se a instrução p.muda_nome("João")

d) para imprimir o retorno do método diz_nome utiliza-se a instrução puts p.diz_nome.

e) para chamar o método diz_nome por meio de um objeto p da classe Pessoa utiliza-se a instrução p.diz_nome.

Sacanagem...

"variáveis de instância são sempre protegidos (privados)"

protegido = protected

privado = private

Clique para visualizar este comentário

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