A class is a programming implementation of a concept. An object is an instance of that class. Delphi uses interfaces when objects need to be cross classified.
Over time developers have faced the same design problems over and over again, the solutions to these problems have been documented as Design Patterns
There are also other aspects of OO Design:
- Polymorphism
- Inheritance
- Information Hiding