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