From what I understand, procedural programming is a programming paradigm whereby the state of the program is determined by procedures that handle the flow of data, such as subroutines and data-fed function calls while an object oriented program is determined largely by the collective state of its objects, instances, and the interactions between them through interfaces.
Although the data and functionality of a object-oriented program is encapsulated and possibly polymorphic, the entire program is still executed as a procedure broken into smaller tasks; data is still passed around and acted on by object functions and subroutines.
Even in a language like Java (which is described as being exclusively OO), program execution and data flow seems to happen in sequence and using functions and variables.
It appears to me, the concepts in procedural programming still exist in OOP but are extended on, so why does it seem as though the two are contrasted? Am I missing something?