En el paradigma de programación orientada a objetos (POO, o bien OOP en inglés),
un objeto es una unidad dentro de un programa de computadora que consta de un estado y de un comportamiento, que a su vez constan respectivamente de datos almacenados y de tareas realizables durante el tiempo de ejecución. Un objeto puede ser creado instanciando una clase, como ocurre en la programación orientada a objetos, o mediante escritura directa de código y la replicación de otros objetos, como ocurre en la programación basada en prototipos. La identificación de objetos se obtiene examinando la descripción del problema (análisis gramatical somero de su enunciado o descripción) y localizando los nombres o cláusulas nominales. Normalmente estos junto a sus sinónimos se suelen escribir en una tabla de la que luego deduciremos los objetos reales. Para poder enviar un mensaje a un objeto se usa la llamada a una función miembro del mismo. En la implementación interna de esa función miembro está el código fuente que se va a ejecutar cuando el objeto reciba dicho mensaje y que hará que varíe su comportamiento. El conjunto de mensajes a los cuales puede responder un objeto se denomina protocolo del objeto. Por ejemplo, si modelamos el objeto de la vida real globo, a parte de sus atributos color, forma, tamaño, etc. su protocolo puede constar de mensajes invocados para inflarlo, desinflarlo, explotarlo, etc. Al igual que en las cajas negras, la estructura interna de un objeto está oculta a los usuarios y programadores. Los mensajes que recibe el objeto son los únicos conductos que conectan el objeto con el mundo externo. Los datos de un objeto están disponibles para ser manipulados sólo por métodos del propio objeto. La herencia es específica de la programación orientada a objetos, donde una clase nueva se crea a partir de una clase existente. La herencia (a la que habitualmente se denomina subclase) proviene del hecho de que la subclase (la nueva clase creada) contiene los atributos y métodos de la clase primaria. La principal ventaja de la herencia es la capacidad para definir atributos y métodos nuevos para la subclase, que luego se aplican a los atributos y métodos heredados. El polimorfismo es una relajación del sistema de tipos, de tal manera que una referencia a una clase (atributo, parámetro o declaración local o elemento de un vector) acepta direcciones de objetos de dicha clase y de sus clases derivadas (hijas, nietas, etc). Clases En informática, una clase es una plantilla para la creación de objetos de datos según un modelo predefinido. Las clases se utilizan para representar entidades o conceptos, como los sustantivos en el lenguaje. Cada clase es un modelo que define un conjunto de variables -el estado, y métodos apropiados para operar con dichos datos -el comportamiento. Cada objeto creado a partir de la clase se denomina instancia de la clase. Las clases son un pilar fundamental de la programación orientada a objetos. Permiten abstraer los datos y sus operaciones asociadas al modo de una caja negra. Los lenguajes de programación que soportan clases difieren sutilmente en su soporte para diversas características relacionadas con clases. La mayoría soportan diversas formas de herencia. Muchos lenguajes también soportan características para proporcionar encapsulación, como especificadores de acceso. Una clase también puede tener una representación (metaobjeto) en tiempo de ejecución, que proporciona apoyo en tiempo de ejecución para la manipulación de los metadatos relacionados con la clase. Una clase sólo tiene sentido en tiempo de programación. Se utiliza para definir qué aspecto tendrán los objetos que se crearán durante la ejecución del programa. Es decir, son una especie de molde o plantilla a partir de la cual se crearán los objetos posteriormente. Durante la ejecución de un programa los objetos están “vivos” en la memoria de la computadora. Dichos objetos tienen existencia, es decir, nacen, viven, algunos de ellos se comunican entre sí, y finalmente mueren. Cada objeto representa un ente particular de la aplicación, como por ejemplo el cliente Alberto Ruiz, o el pedido número 318784. Para poder llevar una existencia útil, cada objeto tiene que saber algunas cosas sobre sí mismo. Por ejemplo, cada Cliente sabe cuál es su nombre, y cada Pedido sabe cuál es su número. Las cosas que sabe cada objeto sobre sí mismo se denominan atributos, y aparecen reflejadas en la definición de clase como variables miembro. Las clases definen qué atributos tendrán los objetos, pero el valor concreto de cada atributo es único e independiente para cada objeto creado. Además de los atributos, los objetos también deben tener la habilidad de hacer cosas. Por ejemplo, un Pedido podrá añadir productos a su lista de productos, o calcular el importe total de todos los productos que lo forman. Las cosas que puede hacer un objeto se definen en la clase mediante métodos (un tipo especial de funciones). el resultado de la ejecución de un método variará generalmente de un objeto particular a otro, dependiendo del valor concreto de sus atributos.