Lesson: Object-Oriented Programming Concepts
        
 If you've never used an object-oriented programming language before, 
you'll need to learn a few basic concepts before 
you can begin writing any code. This lesson will introduce you to objects,
classes, inheritance, interfaces, and packages.
Each discussion focuses on how these concepts relate to the real world,
while  simultaneously providing an introduction to the syntax of the
Java programming language.
 
An object is a software bundle of related state and behavior.
Software objects are often used to model the real-world objects that you find in everyday life. This lesson explains how state and behavior are represented 
within an object, introduces the concept of 
data encapsulation, and explains the benefits of designing your software 
in this manner. 
A class is a blueprint or prototype from which objects are created. 
This section defines a class 
that models the state and behavior of a real-world object. 
It intentionally focuses on the basics, 
 showing how even a simple class can cleanly model state and behavior.
Inheritance
provides a powerful and natural mechanism for organizing and structuring
your software. This section explains how classes inherit state and behavior from their superclasses, and explains how to derive one class from another using 
the simple syntax provided by the Java programming language.
An interface is a contract between a class and the outside world.
When a class implements an interface,
it promises to provide the behavior published by that interface.
This section defines a simple interface and explains the necessary 
changes for any class that implements it. 
A package is a namespace for organizing classes
and interfaces in a logical manner. Placing your code into packages
makes large software projects easier to manage. This section
explains why this is useful, and introduces
 you to the Application Programming Interface (API) provided 
by the Java platform.
Use the questions and exercises presented in this section to test your
understanding of objects, classes, inheritance, interfaces, and packages.