Ampliación de Programación Orientada a Objetos Patrón de Comportamiento Chain of Responsibility Autor Alejandro Villén Hernández Chain of Responsibility ● Idea básica ● Propósito ● Motivación, Aplicabilidad ● Estructura, Participantes ● Colaboraciones, Consecuencias ● Implementación, Usos conocidos ● Presentación y descripción del proyecto Chain of Responsibility ● Propósito Evitar que el receptor se apodere por completo de la petición, y dar oportunidades a otros receptores a contestar a la petición Petición ? Petición R1 R1 R2 R2 R3 Chain of Responsibility ● Motivación La petición debe ser procesada por los receptores, lo cual quiere decir que, ésta petición queda al margen del uso exclusivo. Pretendemos dar una mayor detalle y especificación a las peticiones generadas. Las peticiones serán filtradas por todos los receptores a medida que se van generando los resultados esperados. Chain of Responsibility ● Aplicabilidad Se usa dicho patrón cuando: ∙ Hay más de un objeto que pueden manejar una petición, y el manejador no se conoce a priori, sino que debería determinarse automáticamente. ∙Se quiere enviar una petición a un objeto entre varios sin especificar explícitamente el receptor. ∙El conjunto de objetos que pueden tratar una petición debería ser especificado dinámicamente. Resultados ? Sin especificar el receptor Resultados Resultados Chain of Responsibility ● Estructura La estructura del patrón se describe como: Cliente Manejador Manejador específico 1 Manejador específico 2 ... Chain of Responsibility ● Participantes Cliente: será el encargado de generar las peticiones que hayan de pasar por el manejador genérico. Manejador: deberá estar compuesto por un interfaz donde se vayan a desarrollar las peticiones que genera el cliente. Manejador específico: tratará la petición que le corresponda del cliente. Chain of Responsibility ● Colaboraciones Cuando un cliente envía una petición, ésta se propaga a través de la cadena hasta que un objeto manejador específico se hace responsible de procesarla. Chain of Responsibility ● Consecuencias Reducción del acoplamiento Ni el receptor ni el emisor se conocen explícitamente. Un objeto sólo tiene que saber que una petición será manejada. Añade flexibilidad para asignar responsabilidades a objetos. Las responsabilidades de los mensajes pueden cambiar mediante la organización del proceso de ejecución. No se garantiza la recepción Puesto que no existe un receptor específico para los mensajes, éstos pueden quedarse sin procesar. Chain of Responsibility ● Implementación ∙Implementación de la cadena sucesoria. Forma de hacerlo: ∙Usando nuevos enlaces, con el patrón Composite. ∙Usando los enlaces existentes. ∙Conexión de los sucesores Los própios ManejadoresEspecíficos serán los que se encargarán de reenviar la petición de forma incondicional. Las referencias deberán estar definidas. ∙Representación de las peticiones Uso de paso de parámetros o variables medieante una función manejadora, o hacer uso de clases. Chain of Responsibility ● Usos conocidos Podemos encontrar implementaciones del patrón hechas sobre: ∙Manejadores de eventos sobre usuarios en bibliotecas. ∙Editores gráficos. ∙Protocolos industriales a niveles bajos. Ej. Bus Can. Proyecto Emulación del Centro de Control de un Vehículo implementado sobre el Patrón Chain of Responsibility Proyecto ● Estructura del proyecto La estructura del patrón se describe como: Palanca intermitente ... Control Panel Sensor de presión Airbag Airbags LED Airbag Intermitentes Seguridad ... Conducción Proyecto ● Estructura del proyecto La estructura del patrón se define como: Control Panel Componentes del vehículo LedOn() LedOff() EnabeGatget() DisableGatget() Log() Airbags LedOn() LedOff() EnabeGatget() DisableGatget() Log() ... Intermitentes LedOn() LedOff() EnabeGatget() DisableGatget() Log() Proyecto ● Estructura del proyecto La comunicación entre el manejador y los manejadores específicos: ­Codificar cada uno de los comportamientos de los componentes. ­Dar una prioridad de tratamiento y reacción sobre los componentes. Proyecto In fo r m a ció n q u e r ep o r ta ca d a u n o d e lo s b its ● Estructura del proyecto Definición de la trama 1 18 bits 8 bits 2 bits El bit 0, información del estado del sistema de encendido Del bit 1 al 18, infomación de testigos de alerta Del bit 19 al bit 26, información de testigos de marcha Del bit 27 al bit 28, información de testigos de neutralización 0 Sis tem a d e in for m ació n Co n t acto activa d o On / Off 1 Tes tigo d e aler ta ABS On / Off 2 Tes tigo d e aler ta Air b ag On / Off 3 Tes tigo d e aler ta Aler t a cen tr aliz ad a On / Off 4 Tes tigo d e aler ta Au to d ia gn os is m o t or On / Off 5 Tes tigo d e aler ta Car ga b at er ia On / Off 6 Tes tigo d e aler ta Cin t ur o nes On / Off 7 Tes tigo d e aler ta Co n tr o l ESP On / Off 8 Tes tigo d e aler ta Dir ecció n as is tid a On / Off 9 Tes tigo d e aler ta Far os d ir eccio n ales On / Off 10 Tes tigo d e aler ta Fr en a d a On / Off 11 Tes tigo d e aler ta Lo g incid en t es On / Off 12 Tes tigo d e aler ta Pr es encia a gu a On / Off 13 Tes tigo d e aler ta Pr es ió n aceite m o t or On / Off 14 Tes tigo d e aler ta Pu er ta ab ier t a On / Off 15 Tes tigo d e aler ta Res er va car b ur an t e On / Off 16 Tes tigo d e aler ta Rue d a p inch ad a On / Off 17 Tes tigo d e aler ta Ser vicios On / Off 18 Tes tigo d e aler ta Tem p er at ur a líq u id o r efr iger ació n On / Off 19 Tes tigo d e m ar ch a An tin ieb las tr as er os On / Off 20 Tes tigo d e m ar ch a An tin ieb las d elan t er os On / Off Proyecto ● Conclusiones del proyecto Usando el patrón de comportamiento obtenemos: Puesto que la seguridad en un vehículo es importante, el uso del patrón sobre este modelo es aconsejable, puesto que se asemeja al Protocolo de Comunicaciones Bus CAN.