Sobes.tech
Junior — Middle

Pode explicar o que se entende por abstração na programação orientada a objetos?

sobes.tech IA

Resposta da IA

A abstração na programação orientada a objetos é um princípio que permite ocultar detalhes complexos de implementação e mostrar ao utilizador apenas a interface necessária para interagir com o objeto. Em PHP, isto é frequentemente realizado através de classes abstratas e interfaces, que definem um conjunto de métodos sem a sua implementação concreta.

Por exemplo, uma classe abstrata Animal pode declarar o método makeSound(), mas não implementá-lo. As classes concretas, como Dog ou Cat, irão herdar de Animal e implementar este método à sua maneira. Isto permite trabalhar com objetos através de uma interface comum, sem se preocupar com os detalhes de implementação de cada um.

abstract class Animal {
    abstract public function makeSound();
}

class Dog extends Animal {
    public function makeSound() {
        echo "Au-au";
    }
}

class Cat extends Animal {
    public function makeSound() {
        echo "Miau";
    }
}

function playSound(Animal $animal) {
    $animal->makeSound();
}

playSound(new Dog()); // Vai imprimir: Au-au
playSound(new Cat()); // Vai imprimir: Miau

Assim, a abstração ajuda a criar sistemas flexíveis e escaláveis, separando a interface da implementação.