Sobes.tech
Junior

O que mais a encapsulação inclui além de ocultar dados?

sobes.tech IA

Resposta da IA

Além de ocultar dados (esconder a implementação interna do objeto do mundo exterior), a encapsulação inclui:

  • Combinar dados e métodos que trabalham com esses dados em um único objeto. Isso cria unidades de programa autossuficientes.
  • Controle de acesso aos dados. Com os modificadores de acesso (public, protected, private), determina-se como outros objetos podem interagir com o estado interno do objeto. Isso permite garantir a integridade dos dados e prevenir alterações incorretas.
  • Redução da coesão. Um alto nível de encapsulamento ajuda a que as mudanças dentro de um objeto tenham um impacto mínimo em outras partes do sistema.

Exemplo:

<?php

class BankAccount {
    private $balance; // Escondemos os dados

    public function __construct($initialBalance) {
        if ($initialBalance >= 0) {
            $this->balance = $initialBalance;
        } else {
            $this->balance = 0;
        }
    }

    public function deposit($amount) {
        if ($amount > 0) {
            $this->balance += $amount; // Os métodos trabalham com os dados
        }
    }

    public function withdraw($amount) {
        if ($amount > 0 && $amount <= $this->balance) {
            $this->balance -= $amount; // Controle de acesso e integridade
            return true;
        }
        return false;
    }

    public function getBalance() {
        return $this->balance; // Fornecemos acesso controlado
    }
}

?>

Neste exemplo, a ocultação de dados (private $balance) combina-se com a disponibilização de métodos públicos (deposit, withdraw, getBalance) que controlam o acesso e as alterações a esses dados. Isso une dados e lógica em um único objeto e garante a encapsulação.