Afinal o que é Abstração?

Muitas vezes me fizeram essa pergunta.
Muitas vezes eu me fiz essa pergunta.

Mas o que é mesmo Abstração?

Para entender a POO é essencial que se entenda, pelo menos 5 conceitos básicos: abstração, classe, objeto, encapsulamento, herança e polimorfismo. E além disso saber como eles atuam na POO e qual a importância de cada um deles.
Na minha opinião outra atitude benéfica a quem quiser ser um bom desenvolvedor é abandonar as posições radicais. Alguns programadores parecem religiosos ou componentes de torcidas organizadas que não admitem que a “sua” linguagem seja criticada ou que possa haver uma remota possibilidade de que a linguagem que ele tanto gosta não vá salvar a humanidade do total aniquilamento.

Abstração

O poder de abstração é inerente ao ser humano. Desde cedo aprendemos a arte de abstrair ou (em termos mais, digamos abstratos) simplificar.
Recentemente li um artigo na internet, onde o autor tenta explicar (ou não) o que é abstração. Eu copiei um trecho e (misericordiosamente) poupei o autor de ter seu nome citado em tamanho vexame (não precisa ler todo, mas copiei por inteiro pra não parecer que tirei algo fora do contexto).

“Assim entra a abstração o que é um conceito fundamental para conseguir uma boa modularização. A abstração é fundamental para o raciocínio e resolução de problemas, devemos nos importar com os aspectos relevantes do problema em questão. Em programas bem modularizados, cada modulo representa uma abstração existente no contexto do problema.Essa técnica é empregada em sua forma mais simples por funções e procedimentos parametrizados, criando funções genéricas onde resolvem um subproblema.

Poderíamos ficar falando só sobre abstração de dados, o que considero o mais importante para se construir programa bem modularizados e conseqüentemente orientados a objetos. O aspecto mais importante é como dado um problema criar sua abstração, ou seja, quais aspectos são relevantes e como representá-los. Conhecer as técnicas para implementar uma abstração é menos relevante, pois não garante a construção de um bom aplicativo.

O.O claro que o leitor já deve ter escutado esse termo e para muito pode ser assustador e complexo, no entanto não é, a aplicação da técnica não é complexo e atualmente traz muitas vantagens para o desenvolvimento e esse conceito é o utilizado nas novas linguagens de programação.Onde temos o JAVA e .NET totalmente orientados a objetos. E já temos bancos de dados também O.O , onde para mim será a nova arquitetura usada num futuro próximo.

Então para os desenvolvedores manterem-se atualizados devem regaçar as mangas, respirar fundo e cair de cabeça neste assunto. Espero que este artigo seja o pontapé inicial para muitos em programação orientada a objetos.”

Entenderam? Não? A vantagem é que essa conversa toda poderia ser resumida em uma única frase:”devemos nos importar com os aspectos relevantes do problema em questão”. É o que se salva dessa saraivada de palavras pra explicar um conceito tão simples e ao mesmo tempo tão fundamental.

Então abstrair é simplificar. Só isso!

E nós aprendemos a abstrair desde pequenos, criamos conceitos, assumimos verdades, entendemos o mundo de acordo com a nossa capacidade intelectual. Por isso que nem todo mundo entende o que o outro diz, pois o processo de comunicação é, na verdade, a transmissão de um entendimento abstrato para outro entendimento abstrato.

Quando lemos um livro e imaginamos o que o autor descreve, nós estamos, também, abstraindo pois tentamos entender o que o autor tentou nos passar e em muitos casos esse entendimento é particular de cada um. Como os olhos de ressaca de Capitu.

Carl Jung redefiniu o conceito de abstração expandindo seu escopo para além do processo de pensamento, incluindo as funções psicológicas: sentimento, sensação e intuição.

Para mim o bom programador é aquele que consegue abstrair melhor. É o que tem mais feeling(sentimento ou algo parecido), capta melhor as senações do meio e tem uma grande intuição. Ou seja, um artista. O resto é matemático.

6 Respostas

  1. Muito bom seu conceito, me ajudou bastante a entender melhor o que é esse tão comentado “abstrair”.

  2. Então, esse amontoado de palavra poderia ser resumido em “abstrair é simplificar” 🙂

    • Você abstraiu o conceito. Ehehe. Não exatamente. Simplificar é apenas tornar algo mais simples, abstrair requer um pouco mais de esforço pois é retirar o que há de irrelevante para o propósito que você quer, digamos tornar algo mais simples para um propósito. Exemplo: um cadastro de clientes não é uma simplificação do cliente, mas você só coloca no seu cadastro aquilo que é relevante para o seu sistema.

    • abstrair é algo como absorver algum conhecimento e simplificá-lo de sua forma, do seu entendimento??

  3. abstrair é algo como absorver algum conhecimento e simplificá-lo de sua forma, do seu entendimento??

    • Tudo o que você cria (e no caso uma abstração é uma criação) tem o seu entendimento. Então a resposta é Sim.

Deixe um comentário