2.1 Objects: Introduction
Object: a grouping of variables and methods
Abstraction, information hiding, or encapsulation: to have a user interact with an item at a high-level, with lower-level internal details hidden from the user
Abstract data type (ADT): a data type whose creation and update are constrained to specific well-defined operations; can be implemented using a class
NOTICE: abstraction allows user to focus on few high-level operations to user and hides low-level operations (Ex., no direct read and write; use accessor and mutator methods instead)
2.2 Obejcts and references
Reference: a variable type that referes to an object