1
resposta

[Dúvida] Diferença de um método "normal" para um setter?

Boa noite, estava dando uma olhada na classe e tive a seguinte dúvida, oque difere os métodos normais (ou só métodos não sei), dos métodos setters? Sendo que ao meu ver os dois fazem as mesma coisas, setam atributos da instância?

class Conta {
   private $cpfTitular;
   private $nomeTitular;
   private $saldoTitular;

    // MÉTODOS NORMAIS??
   public function sacar(float $valorASacar) {
    if($valorASacar > $this->saldoTitular) {
      echo 'saldoTitular indisponível' . '<br />';
    } else {
      $this->saldoTitular -= $valorASacar;
    }
   }

   public function depositar(float $valorADepositar) {
    if($valorADepositar < 0) {
      echo 'Valor a depositar precisa ser positivo' . '<br />';
    } else {
      $this->saldoTitular += $valorADepositar;
      echo 'Você acaba de depositar o valor de R$' . $valorADepositar . ' em sua conta.' . '<br />';
    }
   }

   public function transferir(float $valorATransferir, Conta $contaDestino) {
    if($valorATransferir > $this->saldoTitular) {
      echo "saldoTitular indisponivel" . '<br />';
    } else {
      $this->sacar($valorATransferir);
      $contaDestino->depositar($valorATransferir);
    }
   }

   // GETTERS
   public function recuperarCpfTitular() {
    return $this->cpfTitular;
   }

   public function recuperarNomeTitular() {
    return $this->nomeTitular;
   }

   public function recuperarSaldoTitular() {
    return $this->saldoTitular;
   }


   // SETTERS
   public function defineCpfTitular(string $cpf) {
    $this->cpfTitular = $cpf;
   }

   public function defineNomeTitular(string $nome) {
    $this->nomeTitular = $nome;
   }

  }
1 resposta

Oii, Frank.

A principal diferença é que os métodos "normais" podem executar qualquer tipo de operação, exemplo: sacar, transferir e despositar (Em um sistema mais robusto tem mais validações a serem desenvolvidas nessas funcionalidades). Enquanto os setters são usados especificamente para atribuir valores a atributos do objeto.

Espero ter ajudado e bons estudos :)

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software