En la programación orientada a objetos , el diseño orientado a objetos y el análisis orientado a objetos , la identidad de un objeto es su distinción con respecto a cualquier otro objeto, independientemente de los valores de las propiedades de los objetos. Tener identidad es una propiedad fundamental de los objetos.
Esto está estrechamente relacionado con el concepto filosófico de identidad .
Una referencia se puede utilizar para referirse a un objeto con una identidad específica. Una referencia contiene la información necesaria para que la propiedad de identidad se realice en el lenguaje de programación y permite el acceso al objeto con la identidad. Un tipo de destino de una referencia es un rol. Normalmente, las referencias son isomorfas a las direcciones de memoria. Sin embargo, varias de estas referencias pueden referirse al mismo objeto, si existe alguna forma de mapeo de direcciones ( direcciones virtuales / tablas de páginas / segmentos de memoria ).
La identidad de objetos es menos útil como concepto semántico en entornos o situaciones en los que la estructura de los objetos no está encapsulada y se considera que dos objetos son el mismo objeto en función de que tienen propiedades idénticas, incluso si en realidad no son la misma instancia física (equivalencia estructural). Sin embargo, la identidad de objetos puede proporcionar optimización. Una función que prueba si dos argumentos son el mismo objeto puede rápidamente llegar a una respuesta afirmativa si los dos argumentos tienen la misma identidad (son referencias a la misma instancia). Solo si los argumentos son objetos distintos es necesario considerar las propiedades individuales para determinar la igualdad, que es una operación más costosa. Por ejemplo, los números enteros bignum pueden ser objetos asignados al montón de modo que se considere que dos bignum son iguales si representan el mismo número. Podría ser un desperdicio de ciclos de máquina en la función de igualdad no aprovechar el descubrimiento de que los dos argumentos que se comparan son referencias al mismo bignum.
La identidad de los objetos permite tratarlos como cajas negras . El objeto no necesita exponer su estructura interna. Aún se puede hacer referencia a él y se puede acceder a sus otras propiedades a través de su comportamiento externo asociado con la identidad. La identidad proporciona un mecanismo para hacer referencia a las partes del objeto que no están expuestas en la interfaz. Por lo tanto, la identidad es la base del polimorfismo en la programación orientada a objetos .
La identidad permite la comparación de referencias. Se pueden comparar dos referencias independientemente de si son iguales o no. Debido a la propiedad de identidad, esta comparación tiene propiedades especiales. Si la comparación de referencias indica que las referencias son iguales, entonces está claro que los dos objetos a los que apuntan las referencias son el mismo objeto. Si las referencias no son iguales en la comparación, entonces no se garantiza necesariamente que la identidad de los objetos detrás de esas referencias sea diferente. La identidad de objeto de dos objetos del mismo tipo es la misma, si cada cambio en cualquiera de los objetos es también un cambio en el otro objeto.
La identidad permite la construcción de un mundo ideal platónico, la ontología o modelo conceptual, que a menudo se utiliza como base del pensamiento orientado a objetos. El modelo conceptual describe la vista del lado del cliente de un dominio , terminología o API . Este mundo contiene objetos puntuales como instancias , propiedades de los objetos y vínculos entre esos objetos. Los objetos del mundo se pueden agrupar para formar clases . Las propiedades de los objetos se pueden agrupar para formar roles. Los vínculos se pueden agrupar para formar asociaciones . Todas las ubicaciones del mundo junto con los vínculos entre las ubicaciones forman la estructura del mundo. Estos grupos son tipos de las instancias correspondientes del mundo.