← Questões de Programação

Programação · FGV · 2023

Questão comentada de Programação

Analise o código PHP abaixo, no qual três linhas foram omitidas do trecho tracejado. <!DOCTYPE html> <html> <body> <?php class Time { public $x; public $y; function set_n($x) { $this->n = $x; } function get_n() { return $this->n; } function set_c($c) { $this->c = $c; } function get_c() { return $this->c; } } - - - - - - - - - - - - - - echo "Time: " . $t->get_n(); echo "<br>"; echo "Cor: " . $t->get_c(); ?> </body> </html> Dado que essa página exibe o trecho Time: Flamengo Cor: Red as linhas omitidas são:

Gabarito: A

Em PHP, para criar um objeto de uma classe, voce usa a palavra-chave `new`, normalmente com parênteses: `new Time();`. Depois disso, para chamar métodos de instância, o acesso é feito com `->`, como em `$t->set_n('Flamengo');`. Esse detalhe é o coração da questão: primeiro cria-se o objeto, depois se alimentam seus atributos por meio dos métodos da classe. No código, a classe `Time` possui métodos `set_n()` e `set_c()` para gravar valores e `get_n()` e `get_c()` para recuperá-los. Assim, para que a página mostre `Time: Flamengo` e `Cor: Red`, o objeto precisa ser instanciado e, em seguida, receber esses dois valores antes dos `echo`. A alternativa A faz exatamente isso: `$t = new Time();`, depois `$t->set_n('Flamengo');` e `$t->set_c('Red');`. Quando os métodos `get_n()` e `get_c()` forem chamados, eles devolvem o que foi armazenado nos atributos do objeto. Simples, direto e sem magia de carnaval no PHP. As outras opções quebram a sintaxe da linguagem: usam `=` no lugar de `->`, tentam chamar método sem objeto, ou usam operadores inexistentes. Em prova, a FGV costuma cobrar justamente essa combinação básica de orientação a objetos com sintaxe correta da linguagem.

Continue treinando

Questões relacionadas