La programación orientada a objetos se basa en la representación de los problemas mediante objetos y sus interacciones. Un objeto encapsula datos (atributos) y operaciones (métodos). Las clases definen el tipo de objetos, mientras que los objetos son instancias concretas de una clase. Los objetos interactúan mediante el envío de mensajes, que solicitan la ejecución de uno de sus métodos.