Classes and Abstract Data Type
A class is an abstract characterization of a set of objects. A class defines variable (data) and methods (operations) common to a set of objects.
An abstract data type associates operations on the type but hides detail implementation.