Ответить на этот вопрос непросто, и это больше похоже на вопрос о моделировании, чем вопрос ООП как таковой.В случае SO (я делаю предположение, основываясь на предполагаемых шаблонах проектирования для своего сайта), все «слои» шаблона проектирования участвуют в том, что вы называете «транзакцией» (не термин БД, я предполагаю, чтокак вы это используете).Слой пользовательского интерфейса или представление принимает «голосование против» и делает, как представляется, ajax-запрос, скорее всего, слою, который обрабатывает бизнес-правила, который определяет, что на самом деле происходит, когда «против» голосует против пользователя.В этот момент бизнес-уровень запрашивает у уровня данных обновление базы данных где-нибудь, чтобы обновить оценку пользователя, репутацию и т. Д. Это также может быть выполнено немного по-другому, используя веб-сервисы, которые знают, что скрыто в SO.,Насколько ООП;Я уверен, что внутри всегда много ООП, возможно, на всех уровнях, в скриптах и других языках, но я думаю, что в случае с вашим примером SO не передает объект класса «Пользователь», когдаголос отдан;в этом нет необходимости.
Вот очень популярный шаблон проектирования MVC, например: http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller