Definición del estado de un objeto en OOP

11

Necesito una definición concisa del "estado de un objeto" en la programación orientada a objetos (para un artículo).

Durante aproximadamente medio día busqué un documento que pueda citar sobre este tema, pero no pude encontrar uno. Todos los documentos que encontré eran principalmente documentos generales sobre programación orientada a objetos y no definían el estado de un objeto.

No estoy seguro, pero mi mejor conjetura es algo como: El estado de un objeto está definido por el estado de las variables de instancia del objeto.

Estoy buscando una definición del estado de un objeto y / o una referencia sobre el tema.

(por cierto, ¿podría referirme al concepto como "estado del objeto" o es poco común?)

mrsteve
fuente
Creo que aquí hay espacio para la ambigüedad, por lo que debería haber indicado en su documento exactamente lo que usted quiso decir con 'estado'; Si no podía hacer eso, tal vez no estaba en condiciones de liberar su documento.
PJTraill

Respuestas:

9

Puede echar un vistazo (y citar) el libro "Análisis y diseño orientado a objetos" de G. Booch :

... Un objeto es una entidad que tiene estado, comportamiento e identidad. La estructura y el comportamiento de objetos similares se definen en su clase común. Los términos instancia y objeto son intercambiables.

Consideraremos los conceptos de estado, comportamiento e identidad con más detalle en las siguientes secciones. ...

Y hay una subsección completa que describe el concepto de estado :

... A partir de este ejemplo, podemos formar la siguiente definición de bajo nivel.

El estado de un objeto abarca todas las propiedades (generalmente estáticas) del objeto más los valores actuales (generalmente dinámicos) de cada una de estas propiedades ...

Vor
fuente
44
Fuzzy, como siempre. Lo que probablemente quiso decir Booth: un estado es una asignación de valores a esas variables.
reinierpost
3

También debe tener en cuenta que el estado de un objeto es una entidad "abstracta", según lo determinado por los métodos observables. Por ejemplo, un objeto que implementa una tabla hash tiene como estado, la colección de valores almacenados en la tabla hash, no todos los detalles de representación interna.

Uday Reddy
fuente
2

El término " estado " puede usarse en varios sentidos, que pueden no ser susceptibles de una definición precisa. Por consiguiente, era importante que incluya una definición de su papel, para hacer evidente la forma en que estaba utilizando el término. A continuación, no ofrezco una definición única del estado de un objeto, sino que trato de esbozar varias formas de pensar sobre él, que pueden ser apropiadas en diferentes contextos.

Primero, sin embargo, debe pensar qué quiere decir con " objeto ": ¿está pensando en un objeto conceptual, es decir, en alguna entidad que está tratando de modelar, o en una instancia de una clase en un programa específico; quizás también desee pensar en el estado de una variable que podría referirse en diferentes momentos a diferentes objetos o en un sistema, tal vez como se accede a través de una determinada interfaz de usuario.

Parte de la dificultad para definir el estado de un objeto en OOP es que cuando modelamos entidades en un lenguaje particular, ese lenguaje a menudo no nos permite distinguir los atributos del objeto que son conceptualmente parte de la misma entidad de otros que no lo son. Por ejemplo, una lista vinculada de Carconsistirá en una cantidad de Linkobjetos, que contienen punteros al siguiente (y tal vez anterior) Linkaunque conceptualmente la lista es un solo objeto; los enlaces también pueden estar incrustados enCar-objeta o contiene punteros a ellos, pero en este caso los objetos vinculados están conceptualmente separados en lugar de ser parte de la lista; en una lista de cambios recientes, sin embargo, los cambios solo pueden estar presentes en la lista y considerarse como parte de ella. En estos diversos casos, debemos decidir si consideramos que el estado de un objeto incluye el de los objetos vinculados. Además, un Carpuede tener un enlace a un Registering_Authority- probablemente no consideramos que cambie el estado del automóvil cuando su autoridad de registro cambia la URL de su sitio web. A menos que el lenguaje de implementación nos permita distinguir diferentes tipos de enlaces, no será posible hacer una definición general del estado de un objeto solo en términos del lenguaje.

El ' externa o' ' funcional ' estado se podría definir como 'la forma en que se comporta', ee.g. cómo reacciona a las invocaciones de métodos o a una interfaz de usuario. Para un objeto como una instancia de clase, esta definición depende del tipo al que se considera que pertenece el objeto: visto como a Circle, el color de unColoured_Circleno es visible, y por lo tanto irrelevante para su estado. Una dificultad con esto es que 'cómo reacciona' puede necesitar definirse en términos de valores devueltos, y estos 'valores' podrían ser los estados de otros objetos. Una forma de formalizar esto es decir que dos estados de un objeto son iguales si todas las posibles ejecuciones futuras de algún sistema en el que está incrustado dan como resultado la misma asignación de entradas a ese sistema a salidas de él. Puede requerirse que este sistema de cierre sea un sistema autónomo, capaz de ejecutarse independientemente de su entorno; Por otro lado, uno podría permitir que sea tan pequeño como el objeto en cuestión. En cualquier caso, un enfoque matemático es definir un estado como una clase de equivalencia de

El ' interna ' estado podría definirse como el estado de la representación. Un primer intento es aparentemente circular pero quizás útil: "El estado interno de un objeto es el estado de sus miembros". Aquí debemos tener cuidado de distinguir aspectos significativos de la representación de los insignificantes: en el nivel más bajo, la representación de un objeto puede incluir direcciones de otros objetos, pero es poco probable que sea útil considerar un cambio en dicha dirección como un cambio de estado Por otro lado, un cambio en el estado de una memoria caché para el resultado de una consulta, aunque no hace ninguna diferencia en el estado funcional (como se describió anteriormente), será importante al considerar las pruebas de rendimiento.

PJTraill
fuente
Esta es una de las respuestas más útiles sobre el estado del objeto que he encontrado. Hay un documento PDF en línea y eso es todo. Especialmente la parte sobre representación (estado interno). Abre mis ojos y me hace pensar en el objeto de manera diferente.
Miroslav Trninic
1

IBM tiene un glosario que define la palabra "estado" en varias definiciones diferentes que son muy similares entre sí. No afirman específicamente que están relacionados con la Programación Orientada a Objetos, pero uno puede extrapolarlos y usarlos en ese contexto.

Def 3: Una etapa en el ciclo de vida de un objeto que identifica el estado de ese objeto.

Def 5: Una condición o situación durante la vida de un objeto durante el cual cumple alguna condición, realiza alguna actividad o espera algún evento.

Def 8: Característica de un objeto que se manifiesta en sus miembros de datos públicos y privados, y se puede dividir en dos categorías: estado esencial y estado no esencial.

Def 9: En una máquina de estado comercial, una de varias etapas individuales discretas que se organizan en secuencia para componer una transacción comercial.

Def 10: Una condición en la cual el circuito permanece hasta la aplicación de un pulso adecuado.

El diccionario Webster's New World College define "estado" como:

Un conjunto de circunstancias o atributos que caracterizan a una persona o cosa en un momento dado; forma o forma de ser: condición

El denominador común de todos estos es el tiempo. El estado cambia a medida que pasa el tiempo. Esa es la naturaleza de las variables. Si alguien preguntara: "¿Cuál es su estado actual?" Podría decir hoy que está casado y mañana podría estar soltero.

Teniendo en cuenta todas estas definiciones, se puede extrapolar que "estado" es la forma en que un objeto existe en un punto particular en el tiempo determinado por los valores de sus atributos, es decir, sus propiedades / variables.

No creo que sea más simple que eso.

Robert Rocha
fuente
Esto vale unos pocos votos, ya que hace que el potencial de ambigüedad sea más claro que las otras respuestas.
PJTraill
Re mi comentario anterior: desde entonces he agregado una respuesta propia para describir la ambigüedad más exhaustivamente.
PJTraill
0

Un sistema orientado a objetos integra los términos de código y datos utilizando el concepto de un "objeto". Un objeto tiene estado (datos) y comportamiento (código). Por lo tanto, los estados del objeto son las instancias (variables) dentro del objeto que contiene los datos.

Syed MEhran Hussain
fuente
Esto es cierto, pero no parece agregar mucho a las respuestas existentes.
David Richerby
1
Tal vez sea fácil de entender para alguien :)
Syed MEhran Hussain
2
Esto está mal. Creo que lo que quiere decir es que un estado es una asignación de valores a esas variables.
reinierpost