En informática , un objeto es una entidad con un comportamiento bien definido. [1] : 38
Cualquier lenguaje que admita una construcción con estado , comportamiento (modificado mediante procedimientos asociados ) e identidad se clasifica como basado en objetos . La programación orientada a objetos (POO) está basada en objetos con la adición de polimorfismo y herencia . Un sistema orientado a objetos integra código (comportamiento) y datos (estado) en objetos. En un lenguaje basado en clases , un objeto es una instancia de una clase .
En el modelo relacional de gestión de bases de datos , aspectos como tablas y columnas pueden actuar como objetos. [2]
Los sistemas de información se pueden modelar con objetos que representan sus componentes e interfaces. [1] : 39 [ cita requerida ]
Una distinción importante en los lenguajes de programación es la diferencia entre un lenguaje orientado a objetos y un lenguaje basado en objetos. Un lenguaje se considera generalmente basado en objetos si incluye las capacidades básicas de un objeto: identidad, propiedades y atributos. Un lenguaje se considera orientado a objetos si está basado en objetos y también tiene la capacidad de polimorfismo , herencia , encapsulación y, posiblemente, composición . [1] : 41 [ cita requerida ]
No todos los lenguajes basados en objetos (u orientados a objetos) están basados en clases. Un paradigma alternativo destacado es la programación basada en prototipos , utilizada por JavaScript y Lua , entre otros.
El enfoque orientado a objetos no es sólo un modelo de programación. También se puede utilizar como lenguaje de definición de interfaz para sistemas distribuidos. Los objetos de un modelo informático distribuido tienden a ser más granulares, más duraderos y más orientados a servicios que los objetos de programación.
Un método estándar para empaquetar objetos distribuidos es a través de un lenguaje de definición de interfaz (IDL). Un IDL protege al cliente de todos los detalles del objeto de servidor distribuido. Detalles como en qué computadora reside el objeto, qué lenguaje de programación usa, qué sistema operativo y otros asuntos específicos de la plataforma. El IDL también suele ser parte de un entorno distribuido que proporciona servicios como transacciones y persistencia a todos los objetos de manera uniforme. Dos de los estándares más populares para objetos distribuidos son el estándar CORBA de Object Management Group y el DCOM de Microsoft . [3]
Además de los objetos distribuidos, se han propuesto otras extensiones del concepto básico de objeto para posibilitar la computación distribuida:
Algunas de estas extensiones, como objetos distribuidos y objetos de protocolo , son términos específicos de un dominio para tipos especiales de objetos "ordinarios" utilizados en un contexto determinado (como la invocación de un método remoto o la composición de un protocolo ). Otros, como los objetos replicados y los objetos distribuidos en vivo , son más atípicos, ya que abandonan el caso habitual de que un objeto resida en una única ubicación a la vez y aplican el concepto a grupos de entidades (réplicas) que pueden extenderse por varias ubicaciones, pueden tener un estado débilmente consistente y cuya membresía puede cambiar dinámicamente.
La Web semántica es esencialmente un marco de objetos distribuidos. Dos tecnologías clave en la Web semántica son el lenguaje de ontología web (OWL) y el marco de descripción de recursos (RDF). RDF proporciona la capacidad de definir objetos básicos (nombres, propiedades, atributos, relaciones) a los que se puede acceder a través de Internet. OWL añade un modelo de objetos más rico, basado en la teoría de conjuntos, que proporciona capacidades de modelado adicionales, como la herencia múltiple .
Los objetos OWL no son como los objetos distribuidos estándar de granularidad a los que se accede a través de un lenguaje de definición de interfaz. Este enfoque no sería adecuado para Internet, ya que Internet está en constante evolución y es difícil lograr la estandarización en un conjunto de interfaces. Los objetos OWL tienden a ser similares a los tipos de objetos que se utilizan para definir modelos de dominio de aplicación en lenguajes de programación como Java y C++ .
Sin embargo, existen distinciones importantes entre los objetos OWL y los objetos tradicionales de programación orientada a objetos. Los objetos tradicionales se compilan en jerarquías estáticas, generalmente con herencia única, pero los objetos OWL son dinámicos. Un objeto OWL puede cambiar su estructura en tiempo de ejecución y puede convertirse en una instancia de clases nuevas o diferentes.
Otra diferencia fundamental es la forma en que el modelo trata la información que actualmente no está en el sistema. Los objetos de programación y la mayoría de los sistemas de bases de datos utilizan el " supuesto de mundo cerrado ". Si el sistema no conoce un hecho, se supone que ese hecho es falso. Los objetos de la Web semántica utilizan el supuesto de mundo abierto : una afirmación solo se considera falsa si existe información relevante real de que es falsa; de lo contrario, se supone que es desconocida, ni verdadera ni falsa.
Los objetos OWL en realidad son más parecidos a los objetos de los lenguajes de marco de inteligencia artificial como KL-ONE y Loom.
La siguiente tabla contrasta los objetos tradicionales de los lenguajes de programación orientados a objetos como Java o C++ con los objetos de la Web Semántica: [5] [6]