# Abstracció (informàtica)

L'abstracció és l'eina de gestió de la complexitat per a un sistema de computació. Consisteix a aïllar un element dels elements que l'acompanyen i/o el componen. Per exemple, quan en una capa del sistema es treballa amb nombres, no interessa posar atenció als detalls de la representació dels nombres (com per exemple la seva representació al maquinari en forma de bits), així que simplement s'abstrauen aquests detalls, amagant-los en capes inferiors, permetent treballar directament amb els nombres. En altres paraules, l'abstracció és el que permet oblidar-se dels detalls innecessaris a cada moment i centrar-se en el problema immediat.

## Classificació

L'abstracció tant pot aplicar-se a control com a dades: L'abstracció de control és l'abstracció d'accions i consisteix en la utilització de subprogrames i l'establiment del flux de control (les particions i l'ordre en què s'avalua i executa un programa), mentre que la de dades és l'abstracció d'estructures de dades i consisteix en la partició de les dades en fragments autocontinguts i amb sentit.

### Abstracció de control

Una computadora, per efectuar operacions simples com les aritmètiques, necessita efectuar accions com moure bits d'un lloc a un altre, fer comparacions, etc. A l'hora de codificar, però, aquests passos s'ometen, i simplement se li especifica a la computadora l'operació aritmètica, abstraient-se dels detalls de l'execució. El mateix passa amb totes les accions: els detalls més complicats de l'execució s'abstrauen en altres accions a nivells més baixos.

### Abstracció de dades

Qualsevol aplicació té gran quantitat de dades relacionant-se i interactuant. L'abstracció de dades ens permet posar ordre entre les relacions i abstraure'ns de la implementació de la seva interacció. És a dir, definim, diferenciem i identifiquem totes les dades de manera que cada element tingui el seu significat, i deixem clar el comportament d'aquestes dades abstraient-nos de la implementació concreta d'aquest comportament, capacitat que permet, a tall d'exemple, que la programació orientada a objectes estableixi interfícies per a diferents classes (mateix comportament, diferent implementació).

## Nivells d'abstracció

Des de la gestió de recursos de la màquina fins a les interfícies d'usuari, l'abstracció es fa més pronunciada a través de diferents capes o nivells. D'aquesta manera, com més detallem com funciona tot (nivell de màquina) més baixa és l'abstracció, i com menys ens centrem en els detalls i més es restringeix l'accés als recursos, més alta és l'abstracció.
Podríem dir, per tant, que el nivell de maquinari és el nivell 0, i que els usuaris es troben a la capa més alta, trobant per mig a programadors, desenvolupadors de software, dissenyadors de sistemes operatius i arquitectes de hardware, cadascun a un nivell més baix que l'anterior.

## Referències

* ↑ «Conceptos Básicos en Ingeniería de Software II» (en castellà). Facultad de Ingeniería de la Universidad de la República d'Uruguay. [Consulta: 11 febrer 2015].
* ↑ Introducción a la Programación (en castellà). 1, 2015, p. 57, 58. ISBN 978-1-312-76385-2.
* ↑ Introducción a la programación (en castellà). 1, 2015, p. 117, 118. ISBN 978-1-312-76385-2.
* ↑ «Interfaces» (en anglés). The Java™ Tutorials. Oracle. [Consulta: 2 novembre 2015].

## Vegeu també

* Prova de l'ànec
Viccionari