Object-oriented programming: data abstraction, encapsulation, classes, objects, templates, operator overloading, function overloading, inheritance, polymorphism, exception handling, and streams.