Object Oriented Programming
So far we have used classes and objects to represent
generalized abstractions.
We learned how to enable these abstractions to be used in
the same contexts as built-in types.
We learned what design tradeoffs to make to keep our
abstractions as efficient as possible.
But, even though we were using objects, we were not
using object-oriented programming. We were simply one
step closer by understanding the syntax of classes and
objects.
Our abstractions were limited to stand alone classes.