Ejemplo Básico de Interacción entre Dos Objetos Cuando un comprador le solicita a un vendedor que le venda un producto, ambos están interactuando. Cuando el vendedor le solicita al comprador que liquide la venta están teniendo otra interacción. También son interacciones, cuando el comprador le pide al vendedor que cobre la venta y el último le entrega los productos adquiridos al primero. Las interacciones son peticiones o mensajes intercambiados entre los objetos o elementos que colaboran. Ayúdame que yo te Ayudaré Ok, tal vez la frase original no sea como este título, pero es es una realidad en los procesos colaborativos. En estos, los objetos se piden ayuda para lograr un objetivo común. El mensaje es el mecanismo mediante el cual dos objetos interactúan en los diagramas de interacción (aplica para los dos tipos de diagramas de interacción, tanto para el de secuencia como para el de comunicación). El mensaje es la forma en que un objeto ayuda a otro a continuar con el trabajo requerido. Los mensajes se representan mediante flechas que van de un objeto a otro. El objeto emisor del mensaje (de donde sale la flecha) le está solicitando al objeto receptor (a donde llega la flecha) que le ayude proporcionándole cierto servicio, es decir, podemos hablar de una relación cliente-servidor entre dos objetos. Un Gran Poder Implica una Gran Responsabilidad En una relación cliente-servidor, el objeto emisor es el cliente y receptor del mensaje es el servidor. El receptor del mensaje tiene el “poder” de ayudar al emisor, pero esto también significa que el receptor tiene la “responsabilidad” de atender o procesar la petición. Uno de los aspectos clave en el paradigma orientado a objetos consiste en realizar una adecuada asignación de responsabilidades a los objetos que colaboran en la realización de los procesos. Supongamos que vamos a una tienda a adquirir un producto y, en repetidos intentos, le solicitamos amablemente al vendedor que nos venda lo que queremos, pero éste último nos ignora, llegará un momento en el que nuestra paciencia se agote y, en una forma menos amable, le exijamos al irresponsable vendedor que nos atienda. Bajo este escenario los dos objetos que interactúan, nosotros como compradores y la otra persona como vendedor, tenemos asignadas ciertas responsabilidades y quien recibe la petición debe ser el responsable de ejecutarla. La figura 1 muestra al comprador interactuando con el vendedor y este a su vez con el almacenista en un diagrama de secuencia. En los mensajes 1.0 y 1.3 el comprador es el emisor de los mensajes y por tanto juega el rol de cliente mientras que el vendedor se desempeña como el servidor. En el mensaje 1.2 los papeles se invierten, siendo el vendedor el cliente y el comprador el servidor. Figura 1 En cuanto a las responsabilidades, el diagrama de secuencia nos indica que el comprador es responsable de liquidar la venta mientras que el vendedor es responsable de atender la venta y de aplicar el pago a la misma, así mismo, el almacenista es responsable de entregar los productos del almacén. Pedir Por Favor o Dar una Orden Nótese cómo las descripciones de los mensajes no están indicando la tarea que realiza el emisor del mensaje sino la solicitud (u orden) que éste le está haciendo al receptor. Cuando se modela una colaboración de objetos es muy importante no confundir los eventos con las responsabilidades, de hacerlo así podríamos llegar a modelos poco apropiados como el que se muestran en la figura 2. Figura 2 La figura 2 nos da la noción de los pasos que se tienen que realizar para adquirir los productos, pero definitivamente no refleja las responsabilidades reales de los objetos que colaboran en el proceso al recibir los mensajes. Nos ha dado excelentes resultados, en las prácticas realizadas con nuestros alumnos, recomendarles que los diagramas de interacción usen una conversación imperativa en los mensajes, es decir … a veces no hay que pedir, ¡ hay que dar órdenes! pues es su responsabilidad.