Abstração
A orientação a objetos é baseada em quatro pilares fundamentais: abstração, encapsulamento, herança e polimorfismo. Entre eles, a abstração ocupa um papel central: ela nos ajuda a focar apenas no que é essencial para o problema que queremos resolver, deixando de lado os detalhes irrelevantes.
Mesmo antes de estudar orientação a objetos, muitos estudantes já têm contato com o conceito de abstração — ainda que de forma intuitiva. Por exemplo, ao criar uma struct
em C para representar um aluno, você precisa decidir quais atributos são importantes (nome, matrícula, média, etc.) e quais não precisam ser incluídos naquele contexto. Esse processo de seleção já é uma forma de abstração: você está modelando um conceito real (um aluno) com base apenas nas características relevantes para a aplicação.
Abstração na orientação a objetos
No paradigma orientado a objetos, a abstração é aplicada de maneira mais estruturada por meio de classes e interfaces. Com elas, conseguimos representar entidades do mundo real ou conceitos do sistema de forma mais modular, reutilizável e coesa.
Uma classe é, essencialmente, uma abstração: ela define quais propriedades (atributos) e comportamentos (métodos) são relevantes para determinado tipo de objeto. Por exemplo, uma classe Carro
pode ter atributos como cor
, modelo
e velocidade
, e métodos como acelerar()
e frear()
. Detalhes internos do motor ou do sistema elétrico podem ser deixados de fora, caso não sejam necessários para o problema em questão.
Fazendo uma referência à linguagem C, é como se incluíssemos dentro das structs as funções que manipulam aquela struct.
Essa capacidade de focar apenas no que importa e omitir o que não é relevante torna os sistemas mais fáceis de entender, manter e evoluir. Além disso, a abstração contribui diretamente para outros princípios da orientação a objetos, como o encapsulamento e a separação de responsabilidades.
Em resumo, a abstração nos permite:
- Representar objetos reais ou conceituais com simplicidade;
- Reduzir a complexidade do sistema;
- Focar nos aspectos que interessam para cada contexto;
- Construir sistemas mais organizados, modulares e reutilizáveis.
Dominar o uso da abstração é um passo fundamental para projetar sistemas orientados a objetos.