La abstracci贸n. No me importa lo haya dentro, s贸lo dime como se usa

Abstracci贸n en programaci贸n

La abstracci贸n es un termino que hace referencia a la ocultaci贸n de la complejidad intr铆nseca de una aplicaci贸n al exterior, centr谩ndose s贸lo en como puede ser usada, lo que se conoce como interfaz. Si has o铆do hablar del enfoque caja negra, es un concepto muy relacionado. Dicho en otras palabras, la abstracci贸n consiste en ocultar toda la complejidad que algo puede tener por dentro, ofreci茅ndonos unas funciones de alto nivel, por lo general sencillas de usar, que pueden ser usadas para interactuar con la aplicaci贸n sin tener conocimiento de lo que hay dentro.

Una analog铆a del mundo real podr铆a ser la televisi贸n. Se trata de un dispositivo muy complejo donde han trabajado gran cantidad de ingenieros de diversas disciplinas como telecomunicaciones o electr贸nica. 驴Os imagin谩is que para cambiar de canal tuvi茅ramos que saber todos los entresijos del aparato?. Pues bien, se nos ofrece una abstracci贸n de la televisi贸n, un mando a distancia. El mando nos abstrae por completo de la complejidad de los circuitos y se帽ales, y nos da una interfaz sencilla que con unos pocos botones podemos usar.

Algo muy parecido sucede en la programaci贸n orientada a objetos. Si tuvi茅ramos una clase Televisor, en su interior podr铆a haber l铆neas y l铆neas de c贸digo super complejas, pero una buena abstracci贸n ser铆a la que simplemente ofreciera los m茅todos encender(), apagar() y cambiar_canal() al exterior.

Un concepto relacionado con la abstracci贸n, ser铆an las clases abstractas o m谩s bien los m茅todos abstractos. Se define como clase abstracta la que contiene m茅todos abstractos, y se define como m茅todo abstracto a un m茅todo que ha sido declarado pero no implementado. Es decir, que no tiene c贸digo.

Es posible crear m茅todos abstractos en Python con decoradores como @absttractmethod, pero esto lo dejamos para otro post.

Existen otros conceptos muy importantes y relacionados con la programaci贸n orientada a objetos. Aqu铆 te los dejamos:

¡Deja un comentario!

avatar
  Subscribe  
Notify of