Programar con objetos tiene muchas ventajas que no repetimos aquí. Lo que destaca, a lo mejor, es el uso abstracto de objeto, es decir, se define un objeto por su compartamiento y menos por su estado.
Desde siempre, el concepto de concurrencia fue parte de programación orientada a objetos (ya con Simula67). Ha tenido casi un renacimiento con la aparencia de Java.
Las operaciones con objetos se puede clasificar en cuatro grupos:
Normalmente también se tiene que destruir un objeto al final de su tiempo de vida. Aún eso no se tiene que hacer necesariamente explícitamente.
En un nivel de modelación abstracta se distingue objetos activos y objetos pasivos.
El modelo de objetos activos describe un objeto como una entidad con propia vida que actua cada vez que reciba un mensaje. La actuación puede ser cualquiera de las operaciones mencionadas arriba.
El modelo de objetos pasivos describe un objeto como un conjunto de datos que se modifica bajo control de una administración externa al objeto. Es como si algún interpretador simulase el comportamiento del objeto.
Ejemplo:
Dentro de un entorno Java, la máquina virtual ejercita el papel del administrador, tratando todos los objetos del programa como objetos pasivos bajo su control. Sin embargo, al mismo tiempo, cada uno de los objetos puede jugar un papel de un objeto activo que no sabe nada sobre el controlador.
Otra ilustración del concepto sería: un objeto activo está ejecutando su propio hilo, mientras un objeto pasivo se manipula dentro de otro hilo.
¿Porqué se dice mandar mensajes?
Usando objetos en el diseño de programas concurrentes los objetos tendrán también propriedades como