[programming] A programming model in which related tasks, properties, and data structures are enclosed inside an object, and work is done when objects make requests and receive results from other objects. For example, a billing program may contain an object that maintains customer records. That object may pass information to another object that handles mailing statements, and another object that handles customer payments may ask it to update a customer record when a payment is received.