Line 10: | Line 10: | ||
} Complex; | } Complex; | ||
− | Complex COMPLEXinit(double, double); | + | Complex '''COMPLEXinit'''(double, double); |
− | double COMPLEXre(Complex); | + | double '''COMPLEXre'''(Complex); |
− | double COMPLEXim(Complex); | + | double '''COMPLEXim'''(Complex); |
− | Complex COMPLEXmult(Complex, Complex); | + | Complex '''COMPLEXmult'''(Complex, Complex); |
#endif | #endif | ||
Line 25: | Line 25: | ||
} | } | ||
− | double COMPLEXre(Complex c) { return c.re; } | + | double '''COMPLEXre'''(Complex c) { return c.re; } |
− | double COMPLEXim(Complex c) { return c.im; } | + | double '''COMPLEXim'''(Complex c) { return c.im; } |
− | Complex COMPLEXmult(Complex a, Complex b) { | + | Complex '''COMPLEXmult'''(Complex a, Complex b) { |
Complex t; | Complex t; | ||
t.re = a.re * b.re – a.im * b.im; | t.re = a.re * b.re – a.im * b.im; |
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; }