Disciplina: TI - Desenvolvimento de Sistemas
Banca: PROGEP-FURG
Orgão: FURG
- Fundamentos de ProgramaçãoAlgoritmosAnálise de Execução de Algoritmos
- Paradigmas de ProgramaçãoOrientação a ObjetosOrientação a Objetos: Herança
- Paradigmas de ProgramaçãoOrientação a ObjetosOrientação a Objetos: Métodos
- WebPHP
Os arquivos definidos abaixo, de um sistema operacional Ubuntu, se encontram em um diretório de caminho /home/usuario/ e devem ser considerados na solução da questão.
/home/usuario/src/C.php
<?php
class C {
public function m(string $x) { return $x; }
public function n(int $x) { return $this->k($x + 3); }
protected function k($v) { return $this->m(strval($v)); }
}
/home/usuario/src/D.php
<?php
require_once 'C.php';
class D extends C {
public function k($v) {
if (is_numeric($v)) { return $this->m(strval($v + 3));
} else { throw new Exception('Preciso de um número!'); }
}
}
/home/usuario/src/runC.php
<?php
require_once 'C.php';
$o = new C();
echo $o->n(3); echo $o->m('3'); echo $o->m('3' . $o->n(3));
/home/usuario/src/runD.php
<?php
require_once 'D.php';
$l = new D();
echo $l->n(3); echo $l->m('3'); echo $l->m('3' . $l->n(3));
/home/usuario/tests/CDTest.php
<?php
use PHPUnit\Framework\TestCase;
require_once __DIR__ . '/../src/C.php';
require_once __DIR__ . '/../src/D.php';
final class CDTest extends TestCase {
public function test1(): void {
$c = new C(); $d = new D();
$this->assertEquals($c->m('a'), $d->m('a'));
$this->assertNotEquals($c->m('a'), $d->m('n'));
$this->assertFalse($c->m('1') != $d->m('1'));
$this->assertTrue($d->m('1') == 1);
}
public function test2(): void {
$c = new C(); $d = new D();
$this->assertTrue($c->n(1) == '4');
$this->assertEquals($c->n(1), $d->n(1) - 3);
}
public function test3(): void {
$this->expectExceptionMessage('Preciso de um número!');
$d = new D(); $d->k('a');
}
public function test4(): void {
$this->expectExceptionMessage('Preciso de um número!');
$d = new D(); $d->k('2');
}
}
Ao executar o comando "php src/runD.php" no diretório /home/usuario/, marque a alternativa abaixo que representa a saída obtida: