В теории программирования объектно-ориентированного программирования (ООП) определяется как технология создания сложного программного обеспечения, которая основана на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного типа (класса), а классы образуют иерархию с наследованием свойств. Взаимодействие объектов в такой системе осуществляется путем передачи сообщений между объектами.
Рис. 1.  
Такое представление программы было представлено в языке Simula. Принцип ООП был использован в языках Паскаль, C++.
Основное достоинство ООП – сокращение количества межмодульных вызовов и уменьшение объемов информации, передаваемой между модулями, по сравнению с модульными программами. Это достигается за счет более полной локализации данных и интегрирования их с подпрограммами обработки, что позволяет вести практически независимую разработку отдельных частей программы (объектов). Объектный подход предполагает новые средства разработки (наследование, полиморфизм, композиция, наполнение), позволяющие конструировать более сложные программные продукты.
Основной недостаток – некоторое снижение быстродействия за счет сложной организации программных систем.
В основу ООП заложены следующие принципы:
  1. абстрагирование
  2. ограничение доступа
  3. модульность
  4. иерархичность
  5. типизация
  6. параллелизм
  7. устойчивость

Абстрагирование четко определяет особенности данного объекта с точки зрения дальнейшего рассмотрения и анализа. Современный уровень абстракции предполагает объединение всех свойств объекта (состояние объекта, поведение) в единую программную единицу – некий абстрактный типC++класс).

Необходимое ограничение доступа предполагает разграничение 2-х частей в описании абстракции: интерфейса и реализации.
В результате ограничения доступа в ООП позволяют разработчику:

Принцип модульности унаследован от модульного программирования. Следование этому принципу упрощает проектирование и отладку программы.

В ООП используется два вида иерархии - общая, дробь, частная. Эта иерархия используется при разработке структуры классов, когда классы строятся на базе более простых, путем добавления к ним новых характеристик и, возможно, уточнения имеющихся.

Один из важных механизмов ООПнаследование свойств в иерархии общее/частное. Наследования – такое соотношение между абстракциями, когда одна из них использует структурную либо функциональную часть другой или нескольких других абстракций (простое и множественное наследование).

Использование принципа типизации обеспечивает раннее обнаружение ошибок, которые связаны с недопустимыми операциями над программными объектами.
Реализация позднего связывания в языке программирования позволяет создавать переменные – указатели на объекты, принадлежащие разным классам (так называемые полиморфные объекты).