The user interface of an ADT is published in a header (.h) file.
In this example, we may define the following:
struct Frac {
};
struct Frac *newFrac(void);
void delFrac(struct Frac *);
void Frac_set(struct Frac *n1, int num, int den);
void Frac_add(struct Frac *n1, struct Frac *n2, struct Frac *sum);
void Frac_sub(struct Frac *n1, struct Frac *n2, struct Frac *diff);
void Frac_mult(struct Frac *n1, struct Frac *n2, struct Frac *product);
void Frac_div(struct Frac *n1, struct Frac *n2, struct Frac *quotient);
float Frac_value(struct Frac *f);
void Frac_simplify(struct Frac *f);
unsigned Frac_get_numerator(struct Frac *f);
void Frac_set_numerator(struct Frac *f, unsigned numerator);
unsigned Frac_get_denominator(struct Frac *f);
void Frac_set_denominator(struct Frac *f, unsigned denominator);