Note-se que não corresponde a um tipo de dados abstracto: a interface expõe a estrutura do tipo. Comparar com a versão abstracta.
#ifndef __COMPLEX_H__ #define __COMPLEX_H__ typedef struct complex { double re, im; } Complex; Complex COMPLEXinit(double, double); double COMPLEXre(Complex); double COMPLEXim(Complex); Complex COMPLEXmult(Complex, Complex); #endif
#include "COMPLEX.h" Complex COMPLEXinit(double re, double im) { Complex t; t.re = re; t.im = im; return t; } double COMPLEXre(Complex c) { return c.re; } double COMPLEXim(Complex c) { return c.im; } Complex COMPLEXmult(Complex a, Complex b) { Complex t; t.re = a.re * b.re – a.im * b.im; t.im = a.re * b.re + a.im * b.im; return t; }