ООП не возникло из какого-либо строгого формализма, но это действительно формализм. Было несколько попыток определить этот формализм должным образом. Наиболее заметная работа выполнена Лукой Карделли: http://lucacardelli.name/indexPapers.html (см. весь раздел "Объекты")
Императивное программирование может быть основано на любом Тьюринг-эквивалентном формализме, включая лямбда-исчисление, логику SK, абстрактную машину Тьюринга, алгоритмы Маркова или любую другую подобную систему переписывания терминов (TRS). Общее программирование ничем не отличается, это своего рода система перезаписи терминов.
Таким образом, для получения наиболее общих математических оснований буквально для всего, вам придется покопаться в системах перезаписи терминов.
Более свежей работой является недавняя работа АбдельГавада в Университете Райса. Он строит математическую модель мейнстримного ООП (например, Java, C#, C++, Scala, X10 и т.д.) под названием NOOP. Вот ссылка на его докторскую диссертацию http://scholarship.rice.edu/handle/1911/70199
ООП берет свое истоки в языках программирования, таких как Simula-67 и Smalltalk-80, а не в математической теории или формализме. Но я полагаю, что вы могли бы сказать, что концепции объекта, класса и наследования ООП основаны на наивных или здравомыслящих системах категорий и классификации; например таксономии, разработанные Линнеем.