Programming language model organized around objects rather than "actions" and data rather than “logic”. For a programming language to be a true OOP language, the language must meet the following criteria: abstraction, encapsulation, polymorphism, inheritance