In procedural programs, logic follows procedures and instructions execute sequentially, while in object-oriented programs (OOP), the unit is the object which combines data and code. OOP programs encapsulate data within objects and assure security, while procedural programs expose data. Encapsulation binds code and data, inheritance allows acquiring properties of another object, and polymorphism allows a general interface for class actions. Initialization can only occur once while assignment can occur multiple times. OOP organizes programs around objects and well-defined interfaces to data, with objects controlling access to code.