Olá, Não achei muito interessante a idéia de ter que escrever no código qual é a regra de cada cargo. Em uma empresa, acho que seria mais comum categorizar cada posição e então definir qual será o valor multiplicado.
Assim, tentei desenvolver a classe Cargo como abstrata e com uma variável regra e todas as classes que extendam Cargo iriam ter em seu construtor um cargo inicial, conforme o código abaixo:
abstract class Cargo
{
private $regra;
public function getRegra()
{
return $this->regra;
}
}
class Desenvolvedor extends Cargo
{
private $regra;
public function __construct()
{
$this->regra = new DezOuVintePorcento();
}
}
class Tester extends Cargo
{
private $regra;
public function __construct()
{
$this->regra = new QuinzeOuVinteCincoPorcento();
}
}
class Dba extends Cargo
{
private $regra;
public function __construct()
{
$this->regra = new QuinzeOuVinteCincoPorcento();
}
}
Assim, quando alguém criar um cargo novo, só seria necessário decidir qual é a regra de cobrança. No entanto esse código não está funcionando.. Alguém sabe o que pode ser? Acho que deve ser alguma coisa que esqueci ou esse construtor só nas classes extendidas está fazendo algo errado..
Obrigado :D