Questão nº 37
Questão de Tecnologia da Informação · FCC SEGEP-MA 2018 (nº 37)
Considere a classe abaixo, criada com Ruby, em um ambiente de programação em condições ideais.
```ruby
class Pessoa
def initialize(nome)
@nome = nome
end
def get_nome
@nome
end
end
```
Para instanciar um objeto dessa classe armazenando no atributo `nome` o valor `Paulo` e para exibir o nome contido no atributo, utilizam-se as instruções
- A`p = new Pessoa("Paulo")`
`whiteln p.get_nome` - B`p = Pessoa.new("Paulo")`
`println p.get_nome` - C`Pessoa p = Pessoa->new("Paulo")`
`puts p.get_nome` - D`Pessoa p = new Pessoa("Paulo")`
`puts p.get_nome` - E`p = Pessoa.new("Paulo")`
`puts p.get_nome` (alternativa correta)
Resposta comentada
Gabarito Alternativa E
Em Ruby, para criar um objeto (uma instância de uma classe), você chama o método new diretamente na classe. Para acessar as funcionalidades (chamadas de métodos) desse objeto, você usa um ponto (.) seguido do nome do método.
- (A) Incorreta: A criação de objeto em Ruby usa
Classe.new, nãonew Classe.whitelnnão é um método de saída padrão em Ruby. - (B) Incorreta: Embora
Pessoa.new("Paulo")esteja correto para instanciar,printlnnão é um método de saída padrão em Ruby; o correto éputs. Armadilha da banca: Esta alternativa é muito tentadora porqueprintlné um comando comum em muitas outras linguagens de programação (como Java ou Kotlin), fazendo com que o aluno que está migrando ou aprendendo Ruby possa confundi-lo com oputsouprintdo Ruby. - (C) Incorreta: Ruby não exige declaração de tipo (
Pessoa p) e usa o operador.para chamar métodos em classes e objetos, não->. - (D) Incorreta: Ruby não exige declaração de tipo (
Pessoa p) e a criação de objeto usaClasse.new, nãonew Classe. - (E) Correta:
p = Pessoa.new("Paulo")cria corretamente uma instância da classePessoa, passando "Paulo" para o métodoinitialize.puts p.get_nomechama o métodoget_nomedo objetope exibe seu valor no console, que é a forma padrão de saída em Ruby.
Fonte: FCC SEGEP-MA 2018 Analista Executivo - Programador de Sistemas (Caderno Tipo 1). Reproduzida para fins de estudo.