Introducción a la programación genérica (I)

Última actualización: 12 de septiembre de 2020

Artículos de la serie:
  1. Un ejemplo sencillo: los números complejos
  2. Clases, atributos y funciones miembro
  3. Plantillas de clase
  4. Sobrecarga de operadores
  5. Literales definidos por el usuario

Un ejemplo sencillo: los números complejos


Planteémonos la tarea de diseñar una biblioteca matemática en C++ que permita operar con números complejos haciendo uso de técnicas propias de la programación orientada a objetos y la programación genérica. Por supuesto, este problema tiene un interés puramente didáctico, pues el lenguaje cuenta con su propia biblioteca de números complejos a través de la cabecera estándar <complex>.

A modo de recordatorio: 
El cuerpo de los números complejos es el conjunto de parejas de números reales C = {(x, y)R2} sobre el que se definen las operaciones de suma + y producto • siguientes:
                    Suma + : (x1, y1) + (x2, y2) = (x1 + x2, y1 + y2),
             Producto • : (x1, y1) • (x2, y2) = (x1x2 - y1y2, x1y2 + x2y1),
cumpliéndose las propiedades usuales de conmutatividad, asociatividad y existencia de elementos neutro e inverso para ambas operaciones. A modo de ejemplo, dados dos números complejos z1 = (2,3) y z2 = (1,4), su suma y su producto se calculan como z1 + z2 = (2+1, 3+4) = (3, 7) y z1 • z2 = (2(1) - 3(4), 2(4) + 3(1)) = (-10, 11), respectivamente.
Dado un número real λ∈ R, se define el producto externo λ*(x, y) = (λx, λy), para todo (x, y)∈ C. Se verifica entonces que la terna (C,+,*) posee la estructura de un espacio vectorial de dimensión dos.
Dado un número complejo z = (x, y)∈ C, los números reales Re(z) = x e Im(z) = y reciben el nombre de parte real e imaginaria de z, respectivamente.
Nuestro objetivo en esta serie será el de introducir un nuevo tipo no-primitivo (es decir, definido por el programador) que refleje fielmente el comportamiento de los números complejos y permita operar con ellos de manera natural y eficiente. En particular, como veremos más adelante, la sobrecarga de operadores en C++ nos permitirá realizar operaciones aritméticas tales como la suma, diferencia y producto de números complejos manteniendo la sintaxis usual empleada con tipos numéricos primitivos como los enteros int.


Puedes acceder al siguiente artículo de la serie a través de este enlace.

No hay comentarios:

Publicar un comentario