abstract datatype

A type and collection of functions on that type.