La importancia de la abstracción

La importancia de la abstracción

Desde los principios de la historia del desarrollo de software, se han visto múltiples problemáticas de distintas índoles, siendo una de las propuestas que aún en el día nos acompañan, la abstracción. En est breve artículo trataremos de abarcar de forma simple, dicha necesidad que no cesa, sino más bien, todo lo contrario.

¿Qué es la abstracción?

Entiendase por abstracción como una operación mental destinada a aislar conceptualmente una propiedad o función concreta de un objeto, ignorando las demás. Para facilitar la interpretación, podemos pensar en algo tangible, como un vehículo. El cual tiene, por defecto, un tipo de motor el cual puede ser diesel, eléctrico u otro, una velocidad máxima y una fuente de poder (la cual se suele ver en caballos de fuerza o voltages).

type Motor = {
  type: "DIESEL" | "ELECTRIC" | "GASOLINE";
  power: number;
  maxSpeed: number;
};

class Car {
  motor: Motor;

  constructor(motor: Motor) {
    this.motor = motor;
  }
}

const volvoCar = new Car({
  type: "DIESEL",
  power: 100,
  maxSpeed: 200,
});

En dicho ejemplo, se pueden ver las diferentes partes (también tangibles) de nuestro vehículo, por separado. Esta visualización e interpretación mental, es la abstracción. Suponiendo que, para el vehículo en cuestión necesitamos una utilidad que calcule nuestra velocidad en tiempo real, así como el combustible restante, debemos nuevamente, por cuestiones de orden y buenas prácticas en cuanto a legibilidad y escalabilidad, pensar en abstracción.

class UtilitityCar extends Car {
  static motor: any;

  constructor(motor: Motor) {
    super(motor);
  }

  static getVelocityInRealTime(speed: number, time: number) {
    return speed * time;
  }

  static remainingFuel(distance: number) {
    return this.motor.power * distance;
  }
}

De esta forma, cada método cumple una función específica aislada de la otra, respetando la definición de abstracción.

¿Por qué importa?

En el desarrollo de software, tener un código abstracto, se traduce en orden, fácil entendimiento y por ende, fácil continuidad de desarrollo. Sin necesidad de tener funcionalidades acopladas unas con otras, haciendo que a la hora de cambiar una de estas, no afecte a todas las demas (principio de responsabilidad única).

¡Hasta pronto 👋!

Si deseas colaborar con el contenido, regalame un cafecito