Objects encapsulate structural characteristics known as attributes and behavioral characteristics known as operations. Attributes are representational constructs of structural characteristics of entities and determine the possible states of an object. Operations are representational constructs of behavioral characteristics of entities and determine the possible behaviors of an object as invoked in response to receiving a message. Objects have identity and are instances of classes. Fundamentally, objects are abstracted entities that encapsulate state and behavior.
Classes are descriptions of objects with a common implementation.
Classes are concerned with the implementation of uniform structural characteristics and behavioral characteristics. Fundamentally, classes are descriptions of objects with common attributes, operation implementations, semantics, associations, and interactions. Types are descriptions of objects with a common specification. Types are concerned with the specification of uniform structural characteristics and behavioral characteristics. Types may be explicitly related to classes, where a class receives an interface from a type and provides an implementation for the interface, or types may be implicitly related to classes, where a class defines an interface and provides an implementation.