An object-oriented program consists of objects that communicate by sending messages. Objects represent components like numbers, files, and processes, while messages represent interactions between components. Each object holds attributes to store information and can respond to messages. A class defines a template for objects, ensuring each has the same attributes and understands/responds to the same messages in the same way. The protocol of a class is the set of messages its objects understand.