Usamos la palabra interfaz sin darnos cuenta en la vida diaria.
- 🏧 Un cajero automático
- 🎮 Un control remoto
- 🚗 El volante de un carro
Son interfaces que usamos para interactuar con un sistema.
En programación, el concepto es muy similar. Veamos cómo.
Interfaz en programación
Estas funciones se definen por:
- Su nombre
- Los parámetros que reciben
- Los valores que devuelven
Es decir, una interfaz describe qué se puede hacer con una abstracción, pero no cómo se hace internamente.
⏬ Ejemplo de interfaz en Python
Imagina que estamos trabajando con una abstracción para manejar información de usuarios. Definimos un conjunto de funciones que permitirán crear usuarios, obtener su edad e identificar si son mayores de edad:
# Esta función crea un usuario con un nombre y fecha de nacimiento
def make_user(name, birthday):
return {
"name": name,
"birthday": birthday,
}
# Esta función devuelve la edad del usuario a partir de su fecha de nacimiento
def get_age(user):
return calculate_age(user["birthday"])
# Esta función usa get_age para determinar si el usuario es mayor de edad
def is_adult(user):
return get_age(user) >= 18
En este caso, make_user, get_age e is_adult forman la interfaz de nuestra abstracción "Usuario". Son funciones que el código externo puede utilizar sin preocuparse por los detalles internos de su implementación.
Funciones internas
Por ejemplo, nuestra implementación necesita una función para calcular la edad del usuario. Como esta función no debería ser usada directamente desde el exterior, no forma parte de la interfaz:
# Esta función auxiliar calcula la edad de un usuario a partir de su fecha de nacimiento
def calculate_age(birthday):
# Supongamos que aquí hay una lógica para calcular la edad
pass
El código externo nunca llamará a calculate_age directamente, sino que usará get_age, que sí es parte del interfaz.
Abstracción e interfaz
Al hablar de interfaces en programación, también es importante entender otro concepto clave: la abstracción.
Por ejemplo, en cualquier aplicación web suele haber una abstracción llamada usuario. En una plataforma educativa como esta, podríamos tener abstracciones como curso o proyecto. Un interfaz proporciona los medios para interactuar con esas abstracciones.
Interfaces en bibliotecas y sistemas complejos
En sistemas avanzados, como bibliotecas o frameworks, suele haber muchas más funciones internas que aquellas expuestas en la interfaz pública. De hecho, una biblioteca puede contar con cientos de funciones internas, pero solo unas pocas estarán disponibles para los usuarios.
La calidad de una abstracción en programación está estrechamente relacionada con la claridad, simplicidad y facilidad de uso de su interfaz. Entre más claro sea el interfaz de una biblioteca o un módulo, más fácil será trabajar con él.
Resumen
- Un interfaz en programación es un conjunto de funciones definidas para interactuar con una abstracción.
- La interfaz describe qué se puede hacer, pero no cómo se hace internamente.
- Las funciones auxiliares o internas no forman parte del interfaz; solo se usan dentro de la propia implementación.
- Una abstracción representa un modelo conceptual, como "usuario" o "curso".
Entender la diferencia entre interfaz y abstracción te permitirá diseñar código más limpio, reutilizable y fácil de mantener.
Para acceder completo a curso necesitas un plan básico
El plan básico te dará acceso completo a todos los cursos, ejercicios y lecciones de Códica, proyectos y acceso de por vida a la teoría de las lecciones completadas. La suscripción se puede cancelar en cualquier momento.